diff --git a/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmod.h b/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmod.h index 773d1ac6d..7efd968b7 100644 --- a/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmod.h +++ b/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmod.h @@ -37,7 +37,6 @@ class BasebandSampleSink; class BeamSteeringCWMod: public MIMOChannel, public ChannelAPI { - Q_OBJECT public: class MsgConfigureBeamSteeringCWMod : public Message { MESSAGE_CLASS_DECLARATION @@ -95,7 +94,8 @@ public: virtual void stopSources(); //!< thread exit() and wait() virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, unsigned int sinkIndex); virtual void pull(SampleVector::iterator& begin, unsigned int nbSamples, unsigned int sourceIndex); - virtual bool handleMessage(const Message& cmd); //!< Processing of a message. Returns true if message has actually been processed + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getMIMOName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = "BeamSteeringCWMod"; } @@ -160,6 +160,7 @@ private: uint32_t m_basebandSampleRate; int m_count0, m_count1; + virtual bool handleMessage(const Message& cmd); //!< Processing of a message. Returns true if message has actually been processed void applySettings(const BeamSteeringCWModSettings& settings, bool force = false); static void validateFilterChainHash(BeamSteeringCWModSettings& settings); void calculateFrequencyOffset(); diff --git a/plugins/channelmimo/interferometer/interferometer.h b/plugins/channelmimo/interferometer/interferometer.h index 5959a4de2..43a1f7817 100644 --- a/plugins/channelmimo/interferometer/interferometer.h +++ b/plugins/channelmimo/interferometer/interferometer.h @@ -38,7 +38,6 @@ class QNetworkAccessManager; class Interferometer: public MIMOChannel, public ChannelAPI { - Q_OBJECT public: class MsgConfigureInterferometer : public Message { MESSAGE_CLASS_DECLARATION @@ -96,7 +95,8 @@ public: virtual void stopSources() {} virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, unsigned int sinkIndex); virtual void pull(SampleVector::iterator& begin, unsigned int nbSamples, unsigned int sourceIndex); - virtual bool handleMessage(const Message& cmd); //!< Processing of a message. Returns true if message has actually been processed + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getMIMOName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = "Interferometer"; } @@ -165,6 +165,7 @@ private: uint32_t m_deviceSampleRate; int m_count0, m_count1; + virtual bool handleMessage(const Message& cmd); //!< Processing of a message. Returns true if message has actually been processed void applySettings(const InterferometerSettings& settings, bool force = false); static void validateFilterChainHash(InterferometerSettings& settings); void calculateFrequencyOffset(); diff --git a/plugins/channelrx/chanalyzer/chanalyzer.h b/plugins/channelrx/chanalyzer/chanalyzer.h index 251eb2857..cdb1a67ba 100644 --- a/plugins/channelrx/chanalyzer/chanalyzer.h +++ b/plugins/channelrx/chanalyzer/chanalyzer.h @@ -80,7 +80,8 @@ public: virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po); virtual void start(); virtual void stop(); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSinkName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = objectName(); } @@ -135,6 +136,7 @@ private: QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; + virtual bool handleMessage(const Message& cmd); void applySettings(const ChannelAnalyzerSettings& settings, bool force = false); void webapiReverseSendSettings(QList& channelSettingsKeys, const ChannelAnalyzerSettings& settings, bool force); void sendChannelSettings( diff --git a/plugins/channelrx/demodadsb/adsbdemod.h b/plugins/channelrx/demodadsb/adsbdemod.h index 299589f80..7812112fd 100644 --- a/plugins/channelrx/demodadsb/adsbdemod.h +++ b/plugins/channelrx/demodadsb/adsbdemod.h @@ -38,7 +38,6 @@ class DeviceAPI; class ADSBDemodWorker; class ADSBDemod : public BasebandSampleSink, public ChannelAPI { - Q_OBJECT public: class MsgConfigureADSBDemod : public Message { MESSAGE_CLASS_DECLARATION @@ -71,7 +70,8 @@ public: virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po); virtual void start(); virtual void stop(); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSinkName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = m_settings.m_title; } @@ -145,6 +145,7 @@ private: QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; + virtual bool handleMessage(const Message& cmd); //!< Processing of a message. Returns true if message has actually been processed void applySettings(const ADSBDemodSettings& settings, bool force = false); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); void webapiReverseSendSettings(QList& channelSettingsKeys, const ADSBDemodSettings& settings, bool force); diff --git a/plugins/channelrx/demodais/aisdemod.h b/plugins/channelrx/demodais/aisdemod.h index 18517b3cc..d5104886a 100644 --- a/plugins/channelrx/demodais/aisdemod.h +++ b/plugins/channelrx/demodais/aisdemod.h @@ -42,7 +42,6 @@ class DeviceAPI; class ScopeVis; class AISDemod : public BasebandSampleSink, public ChannelAPI { - Q_OBJECT public: class MsgConfigureAISDemod : public Message { MESSAGE_CLASS_DECLARATION @@ -99,7 +98,8 @@ public: virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po); virtual void start(); virtual void stop(); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSinkName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual const QString& getURI() const { return getName(); } @@ -169,6 +169,7 @@ private: QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; + virtual bool handleMessage(const Message& cmd); void applySettings(const AISDemodSettings& settings, bool force = false); void sendSampleRateToDemodAnalyzer(); void webapiReverseSendSettings(QList& channelSettingsKeys, const AISDemodSettings& settings, bool force); diff --git a/plugins/channelrx/demodam/amdemod.h b/plugins/channelrx/demodam/amdemod.h index 23efaa7eb..b61b863ec 100644 --- a/plugins/channelrx/demodam/amdemod.h +++ b/plugins/channelrx/demodam/amdemod.h @@ -36,7 +36,6 @@ class QThread; class DeviceAPI; class AMDemod : public BasebandSampleSink, public ChannelAPI { - Q_OBJECT public: class MsgConfigureAMDemod : public Message { MESSAGE_CLASS_DECLARATION @@ -69,7 +68,8 @@ public: virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po); virtual void start(); virtual void stop(); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSinkName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = m_settings.m_title; } @@ -140,6 +140,7 @@ private: QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; + virtual bool handleMessage(const Message& cmd); void applySettings(const AMDemodSettings& settings, bool force = false); void sendSampleRateToDemodAnalyzer(); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); diff --git a/plugins/channelrx/demodapt/aptdemod.h b/plugins/channelrx/demodapt/aptdemod.h index 571c01d77..31c6bc7e2 100644 --- a/plugins/channelrx/demodapt/aptdemod.h +++ b/plugins/channelrx/demodapt/aptdemod.h @@ -42,7 +42,6 @@ class DeviceAPI; class APTDemodImageWorker; class APTDemod : public BasebandSampleSink, public ChannelAPI { - Q_OBJECT public: class MsgConfigureAPTDemod : public Message { MESSAGE_CLASS_DECLARATION @@ -194,11 +193,12 @@ public: virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po); virtual void start(); virtual void stop(); - virtual void startBasebandSink(); - virtual void stopBasebandSink(); - virtual void startImageWorker(); - virtual void stopImageWorker(); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSinkName() { return objectName(); } + void startBasebandSink(); + void stopBasebandSink(); + void startImageWorker(); + void stopImageWorker(); void setMessageQueueToGUI(MessageQueue* queue) override { @@ -273,6 +273,7 @@ private: QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; + virtual bool handleMessage(const Message& cmd); void applySettings(const APTDemodSettings& settings, bool force = false); void webapiReverseSendSettings(QList& channelSettingsKeys, const APTDemodSettings& settings, bool force); void webapiFormatChannelSettings( diff --git a/plugins/channelrx/demodatv/atvdemod.h b/plugins/channelrx/demodatv/atvdemod.h index ec31bcb5b..da95bbe8b 100644 --- a/plugins/channelrx/demodatv/atvdemod.h +++ b/plugins/channelrx/demodatv/atvdemod.h @@ -36,7 +36,6 @@ class ScopeVis; class ATVDemod : public BasebandSampleSink, public ChannelAPI { - Q_OBJECT public: class MsgConfigureATVDemod : public Message { MESSAGE_CLASS_DECLARATION @@ -69,7 +68,8 @@ public: virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po); virtual void start(); virtual void stop(); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSinkName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = objectName(); } @@ -106,6 +106,7 @@ private: qint64 m_centerFrequency; //!< center frequency stored from device message used when starting baseband sink int m_basebandSampleRate; //!< sample rate stored from device message used when starting baseband sink + virtual bool handleMessage(const Message& cmd); void applySettings(const ATVDemodSettings& settings, bool force = false); }; diff --git a/plugins/channelrx/demodbfm/bfmdemod.h b/plugins/channelrx/demodbfm/bfmdemod.h index b9933901c..2e8371cda 100644 --- a/plugins/channelrx/demodbfm/bfmdemod.h +++ b/plugins/channelrx/demodbfm/bfmdemod.h @@ -42,7 +42,6 @@ namespace SWGSDRangel { } class BFMDemod : public BasebandSampleSink, public ChannelAPI { - Q_OBJECT public: class MsgConfigureBFMDemod : public Message { MESSAGE_CLASS_DECLARATION @@ -77,7 +76,8 @@ public: virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po); virtual void start(); virtual void stop(); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSinkName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = m_settings.m_title; } @@ -154,6 +154,7 @@ private: QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; + virtual bool handleMessage(const Message& cmd); void applySettings(const BFMDemodSettings& settings, bool force = false); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); diff --git a/plugins/channelrx/demodchirpchat/chirpchatdemod.h b/plugins/channelrx/demodchirpchat/chirpchatdemod.h index 8f305e284..5af8d2d34 100644 --- a/plugins/channelrx/demodchirpchat/chirpchatdemod.h +++ b/plugins/channelrx/demodchirpchat/chirpchatdemod.h @@ -207,7 +207,8 @@ public: virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po); virtual void start(); virtual void stop(); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSinkName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = m_settings.m_title; } @@ -288,6 +289,7 @@ private: QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; + virtual bool handleMessage(const Message& cmd); void applySettings(const ChirpChatDemodSettings& settings, bool force = false); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); void webapiReverseSendSettings(QList& channelSettingsKeys, const ChirpChatDemodSettings& settings, bool force); diff --git a/plugins/channelrx/demoddab/dabdemod.h b/plugins/channelrx/demoddab/dabdemod.h index 88179b9b3..31b12e38e 100644 --- a/plugins/channelrx/demoddab/dabdemod.h +++ b/plugins/channelrx/demoddab/dabdemod.h @@ -37,7 +37,6 @@ class QThread; class DeviceAPI; class DABDemod : public BasebandSampleSink, public ChannelAPI { - Q_OBJECT public: class MsgConfigureDABDemod : public Message { MESSAGE_CLASS_DECLARATION @@ -319,7 +318,8 @@ public: virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po); virtual void start(); virtual void stop(); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSinkName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual const QString& getURI() const { return getName(); } @@ -386,6 +386,7 @@ private: QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; + virtual bool handleMessage(const Message& cmd); void applySettings(const DABDemodSettings& settings, bool force = false); void sendSampleRateToDemodAnalyzer(); void webapiReverseSendSettings(QList& channelSettingsKeys, const DABDemodSettings& settings, bool force); diff --git a/plugins/channelrx/demoddatv/datvdemod.h b/plugins/channelrx/demoddatv/datvdemod.h index eeebe5b19..18e793ce5 100644 --- a/plugins/channelrx/demoddatv/datvdemod.h +++ b/plugins/channelrx/demoddatv/datvdemod.h @@ -38,8 +38,6 @@ class QNetworkReply; class DATVDemod : public BasebandSampleSink, public ChannelAPI { - Q_OBJECT - public: DATVDemod(DeviceAPI *); @@ -58,7 +56,8 @@ public: virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po); virtual void start(); virtual void stop(); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSinkName() { return objectName(); } virtual int getNbSinkStreams() const { return 1; } virtual int getNbSourceStreams() const { return 0; } @@ -161,6 +160,7 @@ private: QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; + virtual bool handleMessage(const Message& cmd); void applySettings(const DATVDemodSettings& settings, bool force = false); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); void webapiReverseSendSettings(QList& channelSettingsKeys, const DATVDemodSettings& settings, bool force); diff --git a/plugins/channelrx/demoddsd/dsddemod.h b/plugins/channelrx/demoddsd/dsddemod.h index 692794a36..e69d5a6d1 100644 --- a/plugins/channelrx/demoddsd/dsddemod.h +++ b/plugins/channelrx/demoddsd/dsddemod.h @@ -37,7 +37,6 @@ class QThread; class DownChannelizer; class DSDDemod : public BasebandSampleSink, public ChannelAPI { - Q_OBJECT public: class MsgConfigureDSDDemod : public Message { MESSAGE_CLASS_DECLARATION @@ -70,7 +69,8 @@ public: virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po); virtual void start(); virtual void stop(); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSinkName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = m_settings.m_title; } @@ -138,6 +138,7 @@ private: static const int m_udpBlockSize; + virtual bool handleMessage(const Message& cmd); void applySettings(const DSDDemodSettings& settings, bool force = false); void sendSampleRateToDemodAnalyzer(); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); diff --git a/plugins/channelrx/demodfreedv/freedvdemod.h b/plugins/channelrx/demodfreedv/freedvdemod.h index 26d966e75..7282e5714 100644 --- a/plugins/channelrx/demodfreedv/freedvdemod.h +++ b/plugins/channelrx/demodfreedv/freedvdemod.h @@ -36,7 +36,6 @@ class DeviceAPI; class QThread; class FreeDVDemod : public BasebandSampleSink, public ChannelAPI { - Q_OBJECT public: class MsgConfigureFreeDVDemod : public Message { MESSAGE_CLASS_DECLARATION @@ -83,7 +82,8 @@ public: virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po); virtual void start(); virtual void stop(); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSinkName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = m_settings.m_title; } @@ -157,6 +157,7 @@ private: QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; + virtual bool handleMessage(const Message& cmd); void applySettings(const FreeDVDemodSettings& settings, bool force = false); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); void webapiReverseSendSettings(QList& channelSettingsKeys, const FreeDVDemodSettings& settings, bool force); diff --git a/plugins/channelrx/demodnfm/nfmdemod.h b/plugins/channelrx/demodnfm/nfmdemod.h index 333d3bfc3..874eb1497 100644 --- a/plugins/channelrx/demodnfm/nfmdemod.h +++ b/plugins/channelrx/demodnfm/nfmdemod.h @@ -36,7 +36,6 @@ class QThread; class DeviceAPI; class NFMDemod : public BasebandSampleSink, public ChannelAPI { - Q_OBJECT public: class MsgConfigureNFMDemod : public Message { MESSAGE_CLASS_DECLARATION @@ -69,7 +68,8 @@ public: virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po); virtual void start(); virtual void stop(); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSinkName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = m_settings.m_title; } @@ -138,6 +138,7 @@ private: static const int m_udpBlockSize; + virtual bool handleMessage(const Message& cmd); void applySettings(const NFMDemodSettings& settings, bool force = false); void sendSampleRateToDemodAnalyzer(); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); diff --git a/plugins/channelrx/demodpacket/packetdemod.h b/plugins/channelrx/demodpacket/packetdemod.h index 609c974d8..dbe6e3b56 100644 --- a/plugins/channelrx/demodpacket/packetdemod.h +++ b/plugins/channelrx/demodpacket/packetdemod.h @@ -40,7 +40,6 @@ class QThread; class DeviceAPI; class PacketDemod : public BasebandSampleSink, public ChannelAPI { - Q_OBJECT public: class MsgConfigurePacketDemod : public Message { MESSAGE_CLASS_DECLARATION @@ -73,7 +72,8 @@ public: virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po); virtual void start(); virtual void stop(); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSinkName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual const QString& getURI() const { return getName(); } @@ -146,6 +146,7 @@ private: QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; + virtual bool handleMessage(const Message& cmd); void applySettings(const PacketDemodSettings& settings, bool force = false); void sendSampleRateToDemodAnalyzer(); void webapiReverseSendSettings(QList& channelSettingsKeys, const PacketDemodSettings& settings, bool force); diff --git a/plugins/channelrx/demodpager/pagerdemod.h b/plugins/channelrx/demodpager/pagerdemod.h index 5fa294e7a..5a16edcd6 100644 --- a/plugins/channelrx/demodpager/pagerdemod.h +++ b/plugins/channelrx/demodpager/pagerdemod.h @@ -42,7 +42,6 @@ class DeviceAPI; class ScopeVis; class PagerDemod : public BasebandSampleSink, public ChannelAPI { - Q_OBJECT public: class MsgConfigurePagerDemod : public Message { MESSAGE_CLASS_DECLARATION @@ -128,7 +127,8 @@ public: virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po); virtual void start(); virtual void stop(); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSinkName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual const QString& getURI() const { return getName(); } @@ -202,6 +202,7 @@ private: QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; + virtual bool handleMessage(const Message& cmd); void applySettings(const PagerDemodSettings& settings, bool force = false); void sendSampleRateToDemodAnalyzer(); void webapiReverseSendSettings(QList& channelSettingsKeys, const PagerDemodSettings& settings, bool force); diff --git a/plugins/channelrx/demodssb/ssbdemod.h b/plugins/channelrx/demodssb/ssbdemod.h index e6a7acfde..a84220f9e 100644 --- a/plugins/channelrx/demodssb/ssbdemod.h +++ b/plugins/channelrx/demodssb/ssbdemod.h @@ -38,7 +38,6 @@ class QThread; class DeviceAPI; class SSBDemod : public BasebandSampleSink, public ChannelAPI { - Q_OBJECT public: class MsgConfigureSSBDemod : public Message { MESSAGE_CLASS_DECLARATION @@ -72,7 +71,8 @@ public: virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po); virtual void start(); virtual void stop(); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSinkName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = m_settings.m_title; } @@ -142,6 +142,7 @@ private: QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; + virtual bool handleMessage(const Message& cmd); void applySettings(const SSBDemodSettings& settings, bool force = false); void sendSampleRateToDemodAnalyzer(); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); diff --git a/plugins/channelrx/demodssb/ssbdemodbaseband.h b/plugins/channelrx/demodssb/ssbdemodbaseband.h index 9a05a20b3..503b2c7ca 100644 --- a/plugins/channelrx/demodssb/ssbdemodbaseband.h +++ b/plugins/channelrx/demodssb/ssbdemodbaseband.h @@ -29,6 +29,7 @@ class DownChannelizer; class ChannelAPI; +class SpectrumVis; class SSBDemodBaseband : public QObject { diff --git a/plugins/channelrx/demodssb/ssbdemodsink.cpp b/plugins/channelrx/demodssb/ssbdemodsink.cpp index 4f5b616b3..6ca13b44c 100644 --- a/plugins/channelrx/demodssb/ssbdemodsink.cpp +++ b/plugins/channelrx/demodssb/ssbdemodsink.cpp @@ -24,7 +24,7 @@ #include "dsp/dspengine.h" #include "dsp/dspcommands.h" #include "dsp/devicesamplemimo.h" -#include "dsp/basebandsamplesink.h" +#include "dsp/spectrumvis.h" #include "dsp/datafifo.h" #include "device/deviceapi.h" #include "util/db.h" diff --git a/plugins/channelrx/demodssb/ssbdemodsink.h b/plugins/channelrx/demodssb/ssbdemodsink.h index 6514b990c..44c6d71a6 100644 --- a/plugins/channelrx/demodssb/ssbdemodsink.h +++ b/plugins/channelrx/demodssb/ssbdemodsink.h @@ -30,7 +30,7 @@ #include "ssbdemodsettings.h" -class BasebandSampleSink; +class SpectrumVis; class ChannelAPI; class SSBDemodSink : public ChannelSampleSink { @@ -40,7 +40,7 @@ public: virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end); - void setSpectrumSink(BasebandSampleSink* spectrumSink) { m_spectrumSink = spectrumSink; } + void setSpectrumSink(SpectrumVis* spectrumSink) { m_spectrumSink = spectrumSink; } void applyChannelSettings(int inputSampleRate, int inputFrequencyOffset, bool force = false); void applySettings(const SSBDemodSettings& settings, bool force = false); void applyAudioSampleRate(int sampleRate); @@ -116,7 +116,7 @@ private: fftfilt* SSBFilter; fftfilt* DSBFilter; - BasebandSampleSink* m_spectrumSink; + SpectrumVis* m_spectrumSink; SampleVector m_sampleBuffer; AudioVector m_audioBuffer; diff --git a/plugins/channelrx/demodvor/vordemod.h b/plugins/channelrx/demodvor/vordemod.h index 3cad889c0..46847a2cd 100644 --- a/plugins/channelrx/demodvor/vordemod.h +++ b/plugins/channelrx/demodvor/vordemod.h @@ -37,7 +37,6 @@ class QThread; class DeviceAPI; class VORDemod : public BasebandSampleSink, public ChannelAPI { - Q_OBJECT public: class MsgConfigureVORDemod : public Message { MESSAGE_CLASS_DECLARATION @@ -70,7 +69,8 @@ public: virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po); virtual void start(); virtual void stop(); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSinkName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual const QString& getURI() const { return getName(); } @@ -142,6 +142,7 @@ private: QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; + virtual bool handleMessage(const Message& cmd); void applySettings(const VORDemodSettings& settings, bool force = false); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); void webapiReverseSendSettings(QList& channelSettingsKeys, const VORDemodSettings& settings, bool force); diff --git a/plugins/channelrx/demodvorsc/vordemodsc.h b/plugins/channelrx/demodvorsc/vordemodsc.h index e8e5f77f4..22f3bd936 100644 --- a/plugins/channelrx/demodvorsc/vordemodsc.h +++ b/plugins/channelrx/demodvorsc/vordemodsc.h @@ -37,7 +37,6 @@ class QThread; class DeviceAPI; class VORDemodSC : public BasebandSampleSink, public ChannelAPI { - Q_OBJECT public: class MsgConfigureVORDemod : public Message { MESSAGE_CLASS_DECLARATION @@ -70,7 +69,8 @@ public: virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po); virtual void start(); virtual void stop(); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSinkName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual const QString& getURI() const { return getName(); } @@ -143,6 +143,7 @@ private: QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; + virtual bool handleMessage(const Message& cmd); void applySettings(const VORDemodSCSettings& settings, bool force = false); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); void webapiReverseSendSettings(QList& channelSettingsKeys, const VORDemodSCSettings& settings, bool force); diff --git a/plugins/channelrx/demodwfm/wfmdemod.h b/plugins/channelrx/demodwfm/wfmdemod.h index e4018e5e8..3e9331c4d 100644 --- a/plugins/channelrx/demodwfm/wfmdemod.h +++ b/plugins/channelrx/demodwfm/wfmdemod.h @@ -35,7 +35,6 @@ class QNetworkReply; class DeviceAPI; class WFMDemod : public BasebandSampleSink, public ChannelAPI { - Q_OBJECT public: class MsgConfigureWFMDemod : public Message { MESSAGE_CLASS_DECLARATION @@ -68,7 +67,8 @@ public: virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po); virtual void start(); virtual void stop(); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSinkName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = m_settings.m_title; } @@ -134,6 +134,7 @@ private: static const int m_udpBlockSize; + virtual bool handleMessage(const Message& cmd); void applySettings(const WFMDemodSettings& settings, bool force = false); void sendSampleRateToDemodAnalyzer(); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); diff --git a/plugins/channelrx/filesink/filesink.h b/plugins/channelrx/filesink/filesink.h index 7445c46ef..421907bf8 100644 --- a/plugins/channelrx/filesink/filesink.h +++ b/plugins/channelrx/filesink/filesink.h @@ -37,7 +37,6 @@ class DeviceSampleSource; class FileSinkBaseband; class FileSink : public BasebandSampleSink, public ChannelAPI { - Q_OBJECT public: class MsgConfigureFileSink : public Message { MESSAGE_CLASS_DECLARATION @@ -89,7 +88,8 @@ public: virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po); virtual void start(); virtual void stop(); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSinkName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = "File Sink"; } @@ -163,6 +163,7 @@ private: QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; + virtual bool handleMessage(const Message& cmd); void applySettings(const FileSinkSettings& settings, bool force = false); void propagateSampleRateAndFrequency(uint32_t index, uint32_t log2Decim); DeviceSampleSource *getLocalDevice(uint32_t index); diff --git a/plugins/channelrx/freqtracker/freqtracker.h b/plugins/channelrx/freqtracker/freqtracker.h index 2de58021e..0c2bee540 100644 --- a/plugins/channelrx/freqtracker/freqtracker.h +++ b/plugins/channelrx/freqtracker/freqtracker.h @@ -35,7 +35,6 @@ class QNetworkReply; class DeviceAPI; class FreqTracker : public BasebandSampleSink, public ChannelAPI { - Q_OBJECT public: class MsgConfigureFreqTracker : public Message { MESSAGE_CLASS_DECLARATION @@ -68,7 +67,8 @@ public: virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po); virtual void start(); virtual void stop(); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSinkName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = m_settings.m_title; } @@ -140,6 +140,7 @@ private: QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; + virtual bool handleMessage(const Message& cmd); void applySettings(const FreqTrackerSettings& settings, bool force = false); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); void webapiReverseSendSettings(QList& channelSettingsKeys, const FreqTrackerSettings& settings, bool force); diff --git a/plugins/channelrx/localsink/localsink.h b/plugins/channelrx/localsink/localsink.h index 5bb82a138..d14d118a6 100644 --- a/plugins/channelrx/localsink/localsink.h +++ b/plugins/channelrx/localsink/localsink.h @@ -18,7 +18,6 @@ #ifndef INCLUDE_LOCALSINK_H_ #define INCLUDE_LOCALSINK_H_ -#include #include #include @@ -37,7 +36,6 @@ class DeviceSampleSource; class LocalSinkBaseband; class LocalSink : public BasebandSampleSink, public ChannelAPI { - Q_OBJECT public: class MsgConfigureLocalSink : public Message { MESSAGE_CLASS_DECLARATION @@ -90,7 +88,8 @@ public: virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po); virtual void start(); virtual void stop(); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSinkName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = "Local Sink"; } @@ -148,6 +147,7 @@ private: QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; + virtual bool handleMessage(const Message& cmd); void applySettings(const LocalSinkSettings& settings, bool force = false); void propagateSampleRateAndFrequency(uint32_t index, uint32_t log2Decim); static void validateFilterChainHash(LocalSinkSettings& settings); diff --git a/plugins/channelrx/noisefigure/noisefigure.h b/plugins/channelrx/noisefigure/noisefigure.h index 485f6181b..f05b2fa9f 100644 --- a/plugins/channelrx/noisefigure/noisefigure.h +++ b/plugins/channelrx/noisefigure/noisefigure.h @@ -40,7 +40,6 @@ class QThread; class DeviceAPI; class NoiseFigure : public BasebandSampleSink, public ChannelAPI { - Q_OBJECT public: class MsgConfigureNoiseFigure : public Message { MESSAGE_CLASS_DECLARATION @@ -178,7 +177,8 @@ public: virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po); virtual void start(); virtual void stop(); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSinkName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual const QString& getURI() const { return getName(); } @@ -247,6 +247,7 @@ private: QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; + virtual bool handleMessage(const Message& cmd); void applySettings(const NoiseFigureSettings& settings, bool force = false); void webapiReverseSendSettings(QList& channelSettingsKeys, const NoiseFigureSettings& settings, bool force); void webapiFormatChannelSettings( diff --git a/plugins/channelrx/radioastronomy/radioastronomy.h b/plugins/channelrx/radioastronomy/radioastronomy.h index 27fa1180c..37aaf6b3d 100644 --- a/plugins/channelrx/radioastronomy/radioastronomy.h +++ b/plugins/channelrx/radioastronomy/radioastronomy.h @@ -42,7 +42,6 @@ class DeviceAPI; class RadioAstronomyWorker; class RadioAstronomy : public BasebandSampleSink, public ChannelAPI { - Q_OBJECT public: class MsgConfigureRadioAstronomy : public Message { MESSAGE_CLASS_DECLARATION @@ -316,7 +315,8 @@ public: virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po); virtual void start(); virtual void stop(); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSinkName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual const QString& getURI() const { return getName(); } @@ -408,6 +408,7 @@ private: QTimer m_sweepTimer; QMetaObject::Connection m_sweepTimerConnection; + virtual bool handleMessage(const Message& cmd); void applySettings(const RadioAstronomySettings& settings, bool force = false); void webapiReverseSendSettings(QList& channelSettingsKeys, const RadioAstronomySettings& settings, bool force); void webapiFormatChannelSettings( diff --git a/plugins/channelrx/radioclock/radioclock.h b/plugins/channelrx/radioclock/radioclock.h index a75b1330d..7f8b5ef6f 100644 --- a/plugins/channelrx/radioclock/radioclock.h +++ b/plugins/channelrx/radioclock/radioclock.h @@ -39,7 +39,6 @@ class DeviceAPI; class ScopeVis; class RadioClock : public BasebandSampleSink, public ChannelAPI { - Q_OBJECT public: class MsgConfigureRadioClock : public Message { MESSAGE_CLASS_DECLARATION @@ -118,7 +117,8 @@ public: virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po); virtual void start(); virtual void stop(); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSinkName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual const QString& getURI() const { return getName(); } @@ -186,6 +186,7 @@ private: QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; + virtual bool handleMessage(const Message& cmd); void applySettings(const RadioClockSettings& settings, bool force = false); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); void webapiReverseSendSettings(QList& channelSettingsKeys, const RadioClockSettings& settings, bool force); diff --git a/plugins/channelrx/remotesink/remotesink.h b/plugins/channelrx/remotesink/remotesink.h index b0c0e0716..c4679155b 100644 --- a/plugins/channelrx/remotesink/remotesink.h +++ b/plugins/channelrx/remotesink/remotesink.h @@ -37,7 +37,6 @@ class QNetworkReply; class DeviceAPI; class RemoteSink : public BasebandSampleSink, public ChannelAPI { - Q_OBJECT public: class MsgConfigureRemoteSink : public Message { MESSAGE_CLASS_DECLARATION @@ -70,7 +69,8 @@ public: virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po); virtual void start(); virtual void stop(); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSinkName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = "Remote Sink"; } @@ -128,6 +128,7 @@ private: QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; + virtual bool handleMessage(const Message& cmd); void applySettings(const RemoteSinkSettings& settings, bool force = false); static void validateFilterChainHash(RemoteSinkSettings& settings); void calculateFrequencyOffset(); diff --git a/plugins/channelrx/sigmffilesink/sigmffilesink.h b/plugins/channelrx/sigmffilesink/sigmffilesink.h index 3417b0d06..79fb2bd27 100644 --- a/plugins/channelrx/sigmffilesink/sigmffilesink.h +++ b/plugins/channelrx/sigmffilesink/sigmffilesink.h @@ -37,7 +37,6 @@ class DeviceSampleSource; class SigMFFileSinkBaseband; class SigMFFileSink : public BasebandSampleSink, public ChannelAPI { - Q_OBJECT public: class MsgConfigureSigMFFileSink : public Message { MESSAGE_CLASS_DECLARATION @@ -89,7 +88,8 @@ public: virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po); virtual void start(); virtual void stop(); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSinkName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = "SigMF File Sink"; } @@ -163,6 +163,7 @@ private: QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; + virtual bool handleMessage(const Message& cmd); void applySettings(const SigMFFileSinkSettings& settings, bool force = false); void propagateSampleRateAndFrequency(uint32_t index, uint32_t log2Decim); DeviceSampleSource *getLocalDevice(uint32_t index); diff --git a/plugins/channelrx/udpsink/udpsink.h b/plugins/channelrx/udpsink/udpsink.h index 5a72d11dc..c94a1bf3c 100644 --- a/plugins/channelrx/udpsink/udpsink.h +++ b/plugins/channelrx/udpsink/udpsink.h @@ -34,8 +34,6 @@ class QNetworkReply; class DeviceAPI; class UDPSink : public BasebandSampleSink, public ChannelAPI { - Q_OBJECT - public: class MsgConfigureUDPSink : public Message { MESSAGE_CLASS_DECLARATION @@ -76,7 +74,8 @@ public: virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po); virtual void start(); virtual void stop(); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSinkName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = m_settings.m_title; } @@ -142,8 +141,9 @@ protected: QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; - void applySettings(const UDPSinkSettings& settings, bool force = false); + virtual bool handleMessage(const Message& cmd); + void applySettings(const UDPSinkSettings& settings, bool force = false); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); void webapiReverseSendSettings(QList& channelSettingsKeys, const UDPSinkSettings& settings, bool force); void sendChannelSettings( diff --git a/plugins/channeltx/filesource/filesource.h b/plugins/channeltx/filesource/filesource.h index b1dfc25a8..302be7661 100644 --- a/plugins/channeltx/filesource/filesource.h +++ b/plugins/channeltx/filesource/filesource.h @@ -42,8 +42,6 @@ class DeviceAPI; class FileSourceBaseband; class FileSource : public BasebandSampleSource, public ChannelAPI { - Q_OBJECT - public: class MsgConfigureFileSource : public Message { MESSAGE_CLASS_DECLARATION @@ -172,7 +170,8 @@ public: virtual void start(); virtual void stop(); virtual void pull(SampleVector::iterator& begin, unsigned int nbSamples); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSourceName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = m_settings.m_title; } @@ -249,6 +248,7 @@ private: QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; + virtual bool handleMessage(const Message& cmd); void applySettings(const FileSourceSettings& settings, bool force = false); static void validateFilterChainHash(FileSourceSettings& settings); void calculateFrequencyOffset(); diff --git a/plugins/channeltx/localsource/localsource.h b/plugins/channeltx/localsource/localsource.h index 3667890ba..8d1bd4314 100644 --- a/plugins/channeltx/localsource/localsource.h +++ b/plugins/channeltx/localsource/localsource.h @@ -35,7 +35,6 @@ class DeviceSampleSink; class LocalSourceBaseband; class LocalSource : public BasebandSampleSource, public ChannelAPI { - Q_OBJECT public: class MsgConfigureLocalSource : public Message { MESSAGE_CLASS_DECLARATION @@ -87,7 +86,8 @@ public: virtual void start(); virtual void stop(); virtual void pull(SampleVector::iterator& begin, unsigned int nbSamples); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSourceName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = "Local Sink"; } @@ -145,6 +145,7 @@ private: QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; + virtual bool handleMessage(const Message& cmd); void applySettings(const LocalSourceSettings& settings, bool force = false); void propagateSampleRateAndFrequency(uint32_t index, uint32_t log2Interp); static void validateFilterChainHash(LocalSourceSettings& settings); diff --git a/plugins/channeltx/mod802.15.4/ieee_802_15_4_mod.h b/plugins/channeltx/mod802.15.4/ieee_802_15_4_mod.h index adbbc70b5..c78cf54c9 100644 --- a/plugins/channeltx/mod802.15.4/ieee_802_15_4_mod.h +++ b/plugins/channeltx/mod802.15.4/ieee_802_15_4_mod.h @@ -42,8 +42,6 @@ class IEEE_802_15_4_ModBaseband; class ScopeVis; class IEEE_802_15_4_Mod : public BasebandSampleSource, public ChannelAPI { - Q_OBJECT - public: class MsgConfigureIEEE_802_15_4_Mod : public Message { MESSAGE_CLASS_DECLARATION @@ -96,7 +94,8 @@ public: virtual void start(); virtual void stop(); virtual void pull(SampleVector::iterator& begin, unsigned int nbSamples); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSourceName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = m_settings.m_title; } @@ -168,6 +167,7 @@ private: QNetworkRequest m_networkRequest; // QUdpSocket *m_udpSocket; + virtual bool handleMessage(const Message& cmd); void applySettings(const IEEE_802_15_4_ModSettings& settings, bool force = false); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); void webapiReverseSendSettings(QList& channelSettingsKeys, const IEEE_802_15_4_ModSettings& settings, bool force); diff --git a/plugins/channeltx/modais/aismod.h b/plugins/channeltx/modais/aismod.h index 47cf91c86..511258d9b 100644 --- a/plugins/channeltx/modais/aismod.h +++ b/plugins/channeltx/modais/aismod.h @@ -40,8 +40,6 @@ class AISModBaseband; class ScopeVis; class AISMod : public BasebandSampleSource, public ChannelAPI { - Q_OBJECT - public: class MsgConfigureAISMod : public Message { MESSAGE_CLASS_DECLARATION @@ -157,7 +155,8 @@ public: virtual void start(); virtual void stop(); virtual void pull(SampleVector::iterator& begin, unsigned int nbSamples); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSourceName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = m_settings.m_title; } @@ -229,6 +228,7 @@ private: QNetworkRequest m_networkRequest; QUdpSocket *m_udpSocket; + virtual bool handleMessage(const Message& cmd); void applySettings(const AISModSettings& settings, bool force = false); void sendSampleRateToDemodAnalyzer(); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); diff --git a/plugins/channeltx/modam/ammod.h b/plugins/channeltx/modam/ammod.h index 8120dd995..142e0d4ca 100644 --- a/plugins/channeltx/modam/ammod.h +++ b/plugins/channeltx/modam/ammod.h @@ -39,8 +39,6 @@ class DeviceAPI; class CWKeyer; class AMMod : public BasebandSampleSource, public ChannelAPI { - Q_OBJECT - public: class MsgConfigureAMMod : public Message { MESSAGE_CLASS_DECLARATION @@ -179,7 +177,8 @@ public: virtual void start(); virtual void stop(); virtual void pull(SampleVector::iterator& begin, unsigned int nbSamples); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSourceName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = m_settings.m_title; } @@ -255,6 +254,7 @@ private: QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; + virtual bool handleMessage(const Message& cmd); void applySettings(const AMModSettings& settings, bool force = false); void sendSampleRateToDemodAnalyzer(); void openFileStream(); diff --git a/plugins/channeltx/modatv/atvmod.h b/plugins/channeltx/modatv/atvmod.h index 227400ce6..c59fa161e 100644 --- a/plugins/channeltx/modatv/atvmod.h +++ b/plugins/channeltx/modatv/atvmod.h @@ -38,8 +38,6 @@ class ATVModBaseband; class DeviceAPI; class ATVMod : public BasebandSampleSource, public ChannelAPI { - Q_OBJECT - public: class MsgConfigureATVMod : public Message { MESSAGE_CLASS_DECLARATION @@ -251,7 +249,8 @@ public: virtual void start(); virtual void stop(); virtual void pull(SampleVector::iterator& begin, unsigned int nbSamples); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSourceName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = m_settings.m_title; } @@ -314,6 +313,7 @@ private: QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; + virtual bool handleMessage(const Message& cmd); void applySettings(const ATVModSettings& settings, bool force = false); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); void webapiReverseSendSettings(QList& channelSettingsKeys, const ATVModSettings& settings, bool force); diff --git a/plugins/channeltx/modchirpchat/chirpchatmod.h b/plugins/channeltx/modchirpchat/chirpchatmod.h index 4b25b1346..e1100f6f3 100644 --- a/plugins/channeltx/modchirpchat/chirpchatmod.h +++ b/plugins/channeltx/modchirpchat/chirpchatmod.h @@ -41,8 +41,6 @@ class CWKeyer; class ChirpChatModBaseband; class ChirpChatMod : public BasebandSampleSource, public ChannelAPI { - Q_OBJECT - public: class MsgConfigureChirpChatMod : public Message { MESSAGE_CLASS_DECLARATION @@ -94,7 +92,8 @@ public: virtual void start(); virtual void stop(); virtual void pull(SampleVector::iterator& begin, unsigned int nbSamples); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSourceName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = m_settings.m_title; } @@ -163,6 +162,7 @@ private: QNetworkRequest m_networkRequest; QUdpSocket *m_udpSocket; + virtual bool handleMessage(const Message& cmd); void applySettings(const ChirpChatModSettings& settings, bool force = false); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); void webapiReverseSendSettings(QList& channelSettingsKeys, const ChirpChatModSettings& settings, bool force); diff --git a/plugins/channeltx/moddatv/datvmod.h b/plugins/channeltx/moddatv/datvmod.h index 6181775fd..9105d93d7 100644 --- a/plugins/channeltx/moddatv/datvmod.h +++ b/plugins/channeltx/moddatv/datvmod.h @@ -39,8 +39,6 @@ class DATVModBaseband; class DeviceAPI; class DATVMod : public BasebandSampleSource, public ChannelAPI { - Q_OBJECT - public: class MsgConfigureDATVMod : public Message { MESSAGE_CLASS_DECLARATION @@ -207,7 +205,8 @@ public: virtual void start(); virtual void stop(); virtual void pull(SampleVector::iterator& begin, unsigned int nbSamples); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSourceName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = m_settings.m_title; } @@ -268,6 +267,7 @@ private: QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; + virtual bool handleMessage(const Message& cmd); void applySettings(const DATVModSettings& settings, bool force = false); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); void webapiReverseSendSettings(QList& channelSettingsKeys, const DATVModSettings& settings, bool force); diff --git a/plugins/channeltx/modfreedv/freedvmod.h b/plugins/channeltx/modfreedv/freedvmod.h index 20c289b01..417f290f4 100644 --- a/plugins/channeltx/modfreedv/freedvmod.h +++ b/plugins/channeltx/modfreedv/freedvmod.h @@ -43,8 +43,6 @@ class FreeDVModBaseband; struct freedv; class FreeDVMod : public BasebandSampleSource, public ChannelAPI { - Q_OBJECT - public: class MsgConfigureFreeDVMod : public Message { MESSAGE_CLASS_DECLARATION @@ -183,7 +181,8 @@ public: virtual void start(); virtual void stop(); virtual void pull(SampleVector::iterator& begin, unsigned int nbSamples); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSourceName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = m_settings.m_title; } @@ -263,6 +262,7 @@ private: QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; + virtual bool handleMessage(const Message& cmd); void applySettings(const FreeDVModSettings& settings, bool force = false); void openFileStream(); void seekFileStream(int seekPercentage); diff --git a/plugins/channeltx/modnfm/nfmmod.h b/plugins/channeltx/modnfm/nfmmod.h index c0f90bc08..02e391b2a 100644 --- a/plugins/channeltx/modnfm/nfmmod.h +++ b/plugins/channeltx/modnfm/nfmmod.h @@ -39,8 +39,6 @@ class CWKeyer; class NFMModBaseband; class NFMMod : public BasebandSampleSource, public ChannelAPI { - Q_OBJECT - public: class MsgConfigureNFMMod : public Message { MESSAGE_CLASS_DECLARATION @@ -179,7 +177,8 @@ public: virtual void start(); virtual void stop(); virtual void pull(SampleVector::iterator& begin, unsigned int nbSamples); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSourceName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = m_settings.m_title; } @@ -255,6 +254,7 @@ private: QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; + virtual bool handleMessage(const Message& cmd); void applySettings(const NFMModSettings& settings, bool force = false); void sendSampleRateToDemodAnalyzer(); void openFileStream(); diff --git a/plugins/channeltx/modpacket/packetmod.h b/plugins/channeltx/modpacket/packetmod.h index 3e1747e0e..399f61de0 100644 --- a/plugins/channeltx/modpacket/packetmod.h +++ b/plugins/channeltx/modpacket/packetmod.h @@ -41,8 +41,6 @@ class DeviceAPI; class PacketModBaseband; class PacketMod : public BasebandSampleSource, public ChannelAPI { - Q_OBJECT - public: class MsgConfigurePacketMod : public Message { MESSAGE_CLASS_DECLARATION @@ -147,7 +145,8 @@ public: virtual void start(); virtual void stop(); virtual void pull(SampleVector::iterator& begin, unsigned int nbSamples); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSourceName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = m_settings.m_title; } @@ -225,6 +224,7 @@ private: QNetworkRequest m_networkRequest; QUdpSocket *m_udpSocket; + virtual bool handleMessage(const Message& cmd); void applySettings(const PacketModSettings& settings, bool force = false); void sendSampleRateToDemodAnalyzer(); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); diff --git a/plugins/channeltx/modssb/ssbmod.h b/plugins/channeltx/modssb/ssbmod.h index 80492e357..62d7cae51 100644 --- a/plugins/channeltx/modssb/ssbmod.h +++ b/plugins/channeltx/modssb/ssbmod.h @@ -41,8 +41,6 @@ class CWKeyer; class SSBModBaseband; class SSBMod : public BasebandSampleSource, public ChannelAPI { - Q_OBJECT - public: class MsgConfigureSSBMod : public Message { MESSAGE_CLASS_DECLARATION @@ -181,7 +179,8 @@ public: virtual void start(); virtual void stop(); virtual void pull(SampleVector::iterator& begin, unsigned int nbSamples); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSourceName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = m_settings.m_title; } @@ -259,6 +258,7 @@ private: QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; + virtual bool handleMessage(const Message& cmd); void applySettings(const SSBModSettings& settings, bool force = false); void sendSampleRateToDemodAnalyzer(); void openFileStream(); diff --git a/plugins/channeltx/modwfm/wfmmod.h b/plugins/channeltx/modwfm/wfmmod.h index ee0271e56..d0df647c8 100644 --- a/plugins/channeltx/modwfm/wfmmod.h +++ b/plugins/channeltx/modwfm/wfmmod.h @@ -39,8 +39,6 @@ class CWKeyer; class WFMModBaseband; class WFMMod : public BasebandSampleSource, public ChannelAPI { - Q_OBJECT - public: class MsgConfigureWFMMod : public Message { MESSAGE_CLASS_DECLARATION @@ -179,7 +177,8 @@ public: virtual void start(); virtual void stop(); virtual void pull(SampleVector::iterator& begin, unsigned int nbSamples); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSourceName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = m_settings.m_title; } @@ -267,6 +266,7 @@ private: static const int m_levelNbSamples; + virtual bool handleMessage(const Message& cmd); void applySettings(const WFMModSettings& settings, bool force = false); void sendSampleRateToDemodAnalyzer(); void openFileStream(); diff --git a/plugins/channeltx/remotesource/remotesource.h b/plugins/channeltx/remotesource/remotesource.h index e6df69d65..ef883ab5c 100644 --- a/plugins/channeltx/remotesource/remotesource.h +++ b/plugins/channeltx/remotesource/remotesource.h @@ -35,8 +35,6 @@ class DeviceAPI; class RemoteSourceBaseband; class RemoteSource : public BasebandSampleSource, public ChannelAPI { - Q_OBJECT - public: class MsgConfigureRemoteSource : public Message { MESSAGE_CLASS_DECLARATION @@ -183,7 +181,8 @@ public: virtual void start(); virtual void stop(); virtual void pull(SampleVector::iterator& begin, unsigned int nbSamples); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSourceName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = m_settings.m_title; } @@ -244,6 +243,7 @@ private: int64_t m_frequencyOffset; uint32_t m_basebandSampleRate; + virtual bool handleMessage(const Message& cmd); void applySettings(const RemoteSourceSettings& settings, bool force = false); static void validateFilterChainHash(RemoteSourceSettings& settings); void calculateFrequencyOffset(uint32_t log2Interp, uint32_t filterChainHash); diff --git a/plugins/channeltx/udpsource/udpsource.h b/plugins/channeltx/udpsource/udpsource.h index 7eddec550..ab5ba231b 100644 --- a/plugins/channeltx/udpsource/udpsource.h +++ b/plugins/channeltx/udpsource/udpsource.h @@ -36,8 +36,6 @@ class DeviceAPI; class UDPSourceBaseband; class UDPSource : public BasebandSampleSource, public ChannelAPI { - Q_OBJECT - public: class MsgConfigureUDPSource : public Message { MESSAGE_CLASS_DECLARATION @@ -100,7 +98,8 @@ public: virtual void start(); virtual void stop(); virtual void pull(SampleVector::iterator& begin, unsigned int nbSamples); - virtual bool handleMessage(const Message& cmd); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSourceName() { return objectName(); } virtual void getIdentifier(QString& id) { id = objectName(); } virtual void getTitle(QString& title) { title = m_settings.m_title; } @@ -172,8 +171,9 @@ private: QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; - void applySettings(const UDPSourceSettings& settings, bool force = false); + virtual bool handleMessage(const Message& cmd); + void applySettings(const UDPSourceSettings& settings, bool force = false); void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); void webapiReverseSendSettings(QList& channelSettingsKeys, const UDPSourceSettings& settings, bool force); void sendChannelSettings( diff --git a/sdrbase/CMakeLists.txt b/sdrbase/CMakeLists.txt index 6f99efd81..f0580042e 100644 --- a/sdrbase/CMakeLists.txt +++ b/sdrbase/CMakeLists.txt @@ -143,7 +143,6 @@ set(sdrbase_SOURCES dsp/scopevis.cpp dsp/basebandsamplesink.cpp dsp/basebandsamplesource.cpp - dsp/nullsink.cpp dsp/recursivefilters.cpp dsp/wfir.cpp dsp/devicesamplesource.cpp @@ -351,7 +350,6 @@ set(sdrbase_HEADERS dsp/scopevis.h dsp/basebandsamplesink.h dsp/basebandsamplesource.h - dsp/nullsink.h dsp/wfir.h dsp/devicesamplesource.h dsp/devicesamplesink.h diff --git a/sdrbase/channel/channelapi.cpp b/sdrbase/channel/channelapi.cpp index 03b360373..557359d4a 100644 --- a/sdrbase/channel/channelapi.cpp +++ b/sdrbase/channel/channelapi.cpp @@ -30,4 +30,18 @@ ChannelAPI::ChannelAPI(const QString& uri, StreamType streamType) : m_deviceSetIndex(0), m_deviceAPI(0), m_uid(UidCalculator::getNewObjectId()) -{ } +{ + connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); +} + +void ChannelAPI::handleInputMessages() +{ + Message* message; + + while ((message = m_inputMessageQueue.pop()) != 0) + { + if (handleMessage(*message)) { + delete message; + } + } +} diff --git a/sdrbase/channel/channelapi.h b/sdrbase/channel/channelapi.h index 9ee6b34ea..79464bba4 100644 --- a/sdrbase/channel/channelapi.h +++ b/sdrbase/channel/channelapi.h @@ -20,6 +20,7 @@ #ifndef SDRBASE_CHANNEL_CHANNELAPI_H_ #define SDRBASE_CHANNEL_CHANNELAPI_H_ +#include #include #include #include @@ -39,7 +40,8 @@ namespace SWGSDRangel class SWGChannelActions; } -class SDRBASE_API ChannelAPI : public PipeEndPoint { +class SDRBASE_API ChannelAPI : public QObject, public PipeEndPoint { + Q_OBJECT public: enum StreamType //!< This is the same enum as in PluginInterface { @@ -65,6 +67,7 @@ public: virtual void setMessageQueueToGUI(MessageQueue *queue) { m_guiMessageQueue = queue; } MessageQueue *getMessageQueueToGUI() { return m_guiMessageQueue; } + MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; } MessageQueue *getChannelMessageQueue() { return &m_channelMessageQueue; } //!< Get the queue for plugin communication /** @@ -141,8 +144,13 @@ public: } protected: + virtual bool handleMessage(const Message& cmd) = 0; //!< Processing of a message. Returns true if message has actually been processed MessageQueue *m_guiMessageQueue; //!< Input message queue to the GUI MessageQueue m_channelMessageQueue; //!< Input message queue for inter plugin communication + MessageQueue m_inputMessageQueue; //!< Queue for asynchronous inbound communication + +protected slots: + void handleInputMessages(); private: StreamType m_streamType; diff --git a/sdrbase/dsp/basebandsamplesink.cpp b/sdrbase/dsp/basebandsamplesink.cpp index d5b8ec56f..776100a29 100644 --- a/sdrbase/dsp/basebandsamplesink.cpp +++ b/sdrbase/dsp/basebandsamplesink.cpp @@ -21,28 +21,8 @@ BasebandSampleSink::BasebandSampleSink() { - connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); } BasebandSampleSink::~BasebandSampleSink() { } - -void BasebandSampleSink::pushMessage(Message *msg) -{ - m_inputMessageQueue.push(msg); -} - -void BasebandSampleSink::handleInputMessages() -{ - Message* message; - - while ((message = m_inputMessageQueue.pop()) != 0) - { - if (handleMessage(*message)) - { - delete message; - } - } -} - diff --git a/sdrbase/dsp/basebandsamplesink.h b/sdrbase/dsp/basebandsamplesink.h index 506b92656..7637057ff 100644 --- a/sdrbase/dsp/basebandsamplesink.h +++ b/sdrbase/dsp/basebandsamplesink.h @@ -19,15 +19,13 @@ #ifndef INCLUDE_SAMPLESINK_H #define INCLUDE_SAMPLESINK_H -#include #include "dsp/dsptypes.h" #include "export.h" #include "util/messagequeue.h" class Message; -class SDRBASE_API BasebandSampleSink : public QObject { - Q_OBJECT +class SDRBASE_API BasebandSampleSink { public: BasebandSampleSink(); virtual ~BasebandSampleSink(); @@ -35,22 +33,10 @@ public: virtual void start() = 0; virtual void stop() = 0; virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly) = 0; - void pushMessage(Message *msg); - - MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; } //!< Get the queue for asynchronous inbound communication - - virtual void feed(const Complex *begin, unsigned int length) //!< Special feed directly with complex array - { - (void) begin; - (void) length; + virtual void feed(const Complex*, unsigned int) { //!< Special feed directly with complex array } - -protected: - virtual bool handleMessage(const Message& cmd) = 0; //!< Processing of a message. Returns true if message has actually been processed - MessageQueue m_inputMessageQueue; //!< Queue for asynchronous inbound communication - -protected slots: - void handleInputMessages(); + virtual void pushMessage(Message *msg) = 0; + virtual QString getSinkName() = 0; }; #endif // INCLUDE_SAMPLESINK_H diff --git a/sdrbase/dsp/basebandsamplesource.cpp b/sdrbase/dsp/basebandsamplesource.cpp index 674d76f49..dd6a31c10 100644 --- a/sdrbase/dsp/basebandsamplesource.cpp +++ b/sdrbase/dsp/basebandsamplesource.cpp @@ -21,26 +21,8 @@ BasebandSampleSource::BasebandSampleSource() { - connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); } BasebandSampleSource::~BasebandSampleSource() { } - -void BasebandSampleSource::pushMessage(Message *msg) -{ - m_inputMessageQueue.push(msg); -} - -void BasebandSampleSource::handleInputMessages() -{ - Message* message; - - while ((message = m_inputMessageQueue.pop()) != 0) - { - if (handleMessage(*message)) { - delete message; - } - } -} diff --git a/sdrbase/dsp/basebandsamplesource.h b/sdrbase/dsp/basebandsamplesource.h index 57df4eaed..a43707453 100644 --- a/sdrbase/dsp/basebandsamplesource.h +++ b/sdrbase/dsp/basebandsamplesource.h @@ -19,15 +19,13 @@ #ifndef SDRBASE_DSP_BASEBANDSAMPLESOURCE_H_ #define SDRBASE_DSP_BASEBANDSAMPLESOURCE_H_ -#include #include "dsp/dsptypes.h" #include "export.h" #include "util/messagequeue.h" class Message; -class SDRBASE_API BasebandSampleSource : public QObject { - Q_OBJECT +class SDRBASE_API BasebandSampleSource { public: BasebandSampleSource(); virtual ~BasebandSampleSource(); @@ -35,16 +33,8 @@ public: virtual void start() = 0; virtual void stop() = 0; virtual void pull(SampleVector::iterator& begin, unsigned int nbSamples) = 0; - void pushMessage(Message *msg); - - MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; } //!< Get the queue for asynchronous inbound communication - -protected: - virtual bool handleMessage(const Message& cmd) = 0; //!< Processing of a message. Returns true if message has actually been processed - MessageQueue m_inputMessageQueue; //!< Queue for asynchronous inbound communication - -protected slots: - void handleInputMessages(); + virtual void pushMessage(Message *msg) = 0; + virtual QString getSourceName() = 0; }; #endif /* SDRBASE_DSP_BASEBANDSAMPLESOURCE_H_ */ diff --git a/sdrbase/dsp/dspdevicemimoengine.cpp b/sdrbase/dsp/dspdevicemimoengine.cpp index 9c9de5807..3c4a8ce64 100644 --- a/sdrbase/dsp/dspdevicemimoengine.cpp +++ b/sdrbase/dsp/dspdevicemimoengine.cpp @@ -152,7 +152,7 @@ void DSPDeviceMIMOEngine::setMIMOSequence(int sequence) void DSPDeviceMIMOEngine::addChannelSource(BasebandSampleSource* source, int index) { qDebug() << "DSPDeviceMIMOEngine::addChannelSource: " - << source->objectName().toStdString().c_str() + << source->getSourceName().toStdString().c_str() << " at: " << index; AddBasebandSampleSource cmd(source, index); @@ -162,7 +162,7 @@ void DSPDeviceMIMOEngine::addChannelSource(BasebandSampleSource* source, int ind void DSPDeviceMIMOEngine::removeChannelSource(BasebandSampleSource* source, int index) { qDebug() << "DSPDeviceMIMOEngine::removeChannelSource: " - << source->objectName().toStdString().c_str() + << source->getSourceName().toStdString().c_str() << " at: " << index; RemoveBasebandSampleSource cmd(source, index); @@ -172,7 +172,7 @@ void DSPDeviceMIMOEngine::removeChannelSource(BasebandSampleSource* source, int void DSPDeviceMIMOEngine::addChannelSink(BasebandSampleSink* sink, int index) { qDebug() << "DSPDeviceMIMOEngine::addChannelSink: " - << sink->objectName().toStdString().c_str() + << sink->getSinkName().toStdString().c_str() << " at: " << index; AddBasebandSampleSink cmd(sink, index); @@ -182,7 +182,7 @@ void DSPDeviceMIMOEngine::addChannelSink(BasebandSampleSink* sink, int index) void DSPDeviceMIMOEngine::removeChannelSink(BasebandSampleSink* sink, int index) { qDebug() << "DSPDeviceMIMOEngine::removeChannelSink: " - << sink->objectName().toStdString().c_str() + << sink->getSinkName().toStdString().c_str() << " at: " << index; RemoveBasebandSampleSink cmd(sink, index); @@ -192,7 +192,7 @@ void DSPDeviceMIMOEngine::removeChannelSink(BasebandSampleSink* sink, int index) void DSPDeviceMIMOEngine::addMIMOChannel(MIMOChannel *channel) { qDebug() << "DSPDeviceMIMOEngine::addMIMOChannel: " - << channel->objectName().toStdString().c_str(); + << channel->getMIMOName().toStdString().c_str(); AddMIMOChannel cmd(channel); m_syncMessenger.sendWait(cmd); } @@ -200,21 +200,21 @@ void DSPDeviceMIMOEngine::addMIMOChannel(MIMOChannel *channel) void DSPDeviceMIMOEngine::removeMIMOChannel(MIMOChannel *channel) { qDebug() << "DSPDeviceMIMOEngine::removeMIMOChannel: " - << channel->objectName().toStdString().c_str(); + << channel->getMIMOName().toStdString().c_str(); RemoveMIMOChannel cmd(channel); m_syncMessenger.sendWait(cmd); } void DSPDeviceMIMOEngine::addSpectrumSink(BasebandSampleSink* spectrumSink) { - qDebug() << "DSPDeviceMIMOEngine::addSpectrumSink: " << spectrumSink->objectName().toStdString().c_str(); + qDebug() << "DSPDeviceMIMOEngine::addSpectrumSink: " << spectrumSink->getSinkName().toStdString().c_str(); AddSpectrumSink cmd(spectrumSink); m_syncMessenger.sendWait(cmd); } void DSPDeviceMIMOEngine::removeSpectrumSink(BasebandSampleSink* spectrumSink) { - qDebug() << "DSPDeviceSinkEngine::removeSpectrumSink: " << spectrumSink->objectName().toStdString().c_str(); + qDebug() << "DSPDeviceSinkEngine::removeSpectrumSink: " << spectrumSink->getSinkName().toStdString().c_str(); DSPRemoveSpectrumSink cmd(spectrumSink); m_syncMessenger.sendWait(cmd); } @@ -505,14 +505,14 @@ DSPDeviceMIMOEngine::State DSPDeviceMIMOEngine::gotoIdle(int subsystemIndex) { for (BasebandSampleSinks::const_iterator it = vbit->begin(); it != vbit->end(); ++it) { - qDebug() << "DSPDeviceMIMOEngine::gotoIdle: stopping BasebandSampleSink: " << (*it)->objectName().toStdString().c_str(); + qDebug() << "DSPDeviceMIMOEngine::gotoIdle: stopping BasebandSampleSink: " << (*it)->getSinkName().toStdString().c_str(); (*it)->stop(); } } for (MIMOChannels::const_iterator it = m_mimoChannels.begin(); it != m_mimoChannels.end(); ++it) { - qDebug() << "DSPDeviceMIMOEngine::gotoIdle: stopping MIMOChannel sinks: " << (*it)->objectName().toStdString().c_str(); + qDebug() << "DSPDeviceMIMOEngine::gotoIdle: stopping MIMOChannel sinks: " << (*it)->getMIMOName().toStdString().c_str(); (*it)->stopSinks(); } } @@ -539,14 +539,14 @@ DSPDeviceMIMOEngine::State DSPDeviceMIMOEngine::gotoIdle(int subsystemIndex) { for (BasebandSampleSources::const_iterator it = vSourceIt->begin(); it != vSourceIt->end(); ++it) { - qDebug() << "DSPDeviceMIMOEngine::gotoIdle: stopping BasebandSampleSource(" << (*it)->objectName().toStdString().c_str() << ")"; + qDebug() << "DSPDeviceMIMOEngine::gotoIdle: stopping BasebandSampleSource(" << (*it)->getSourceName().toStdString().c_str() << ")"; (*it)->stop(); } } for (MIMOChannels::const_iterator it = m_mimoChannels.begin(); it != m_mimoChannels.end(); ++it) { - qDebug() << "DSPDeviceMIMOEngine::gotoIdle: stopping MIMOChannel sources: " << (*it)->objectName().toStdString().c_str(); + qDebug() << "DSPDeviceMIMOEngine::gotoIdle: stopping MIMOChannel sources: " << (*it)->getMIMOName().toStdString().c_str(); (*it)->stopSources(); } } @@ -612,7 +612,7 @@ DSPDeviceMIMOEngine::State DSPDeviceMIMOEngine::gotoInit(int subsystemIndex) { for (BasebandSampleSinks::const_iterator it = m_basebandSampleSinks[isource].begin(); it != m_basebandSampleSinks[isource].end(); ++it) { - qDebug() << "DSPDeviceMIMOEngine::gotoInit: initializing " << (*it)->objectName().toStdString().c_str(); + qDebug() << "DSPDeviceMIMOEngine::gotoInit: initializing " << (*it)->getSinkName().toStdString().c_str(); (*it)->pushMessage(new DSPSignalNotification(notif)); } } @@ -649,7 +649,7 @@ DSPDeviceMIMOEngine::State DSPDeviceMIMOEngine::gotoInit(int subsystemIndex) { for (BasebandSampleSources::const_iterator it = m_basebandSampleSources[isink].begin(); it != m_basebandSampleSources[isink].end(); ++it) { - qDebug() << "DSPDeviceMIMOEngine::gotoInit: initializing BasebandSampleSource(" << (*it)->objectName().toStdString().c_str() << ")"; + qDebug() << "DSPDeviceMIMOEngine::gotoInit: initializing BasebandSampleSource(" << (*it)->getSourceName().toStdString().c_str() << ")"; (*it)->pushMessage(new DSPSignalNotification(notif)); } } @@ -697,14 +697,14 @@ DSPDeviceMIMOEngine::State DSPDeviceMIMOEngine::gotoRunning(int subsystemIndex) { for (BasebandSampleSinks::const_iterator it = vbit->begin(); it != vbit->end(); ++it) { - qDebug() << "DSPDeviceMIMOEngine::gotoRunning: starting BasebandSampleSink: " << (*it)->objectName().toStdString().c_str(); + qDebug() << "DSPDeviceMIMOEngine::gotoRunning: starting BasebandSampleSink: " << (*it)->getSinkName().toStdString().c_str(); (*it)->start(); } } for (MIMOChannels::const_iterator it = m_mimoChannels.begin(); it != m_mimoChannels.end(); ++it) { - qDebug() << "DSPDeviceMIMOEngine::gotoRunning: starting MIMOChannel sinks: " << (*it)->objectName().toStdString().c_str(); + qDebug() << "DSPDeviceMIMOEngine::gotoRunning: starting MIMOChannel sinks: " << (*it)->getMIMOName().toStdString().c_str(); (*it)->startSinks(); } } @@ -736,14 +736,14 @@ DSPDeviceMIMOEngine::State DSPDeviceMIMOEngine::gotoRunning(int subsystemIndex) { for (BasebandSampleSources::const_iterator it = vSourceIt->begin(); it != vSourceIt->end(); ++it) { - qDebug() << "DSPDeviceMIMOEngine::gotoRunning: starting BasebandSampleSource(" << (*it)->objectName().toStdString().c_str() << ")"; + qDebug() << "DSPDeviceMIMOEngine::gotoRunning: starting BasebandSampleSource(" << (*it)->getSourceName().toStdString().c_str() << ")"; (*it)->start(); } } for (MIMOChannels::const_iterator it = m_mimoChannels.begin(); it != m_mimoChannels.end(); ++it) { - qDebug() << "DSPDeviceMIMOEngine::gotoRunning: starting MIMOChannel sources: " << (*it)->objectName().toStdString().c_str(); + qDebug() << "DSPDeviceMIMOEngine::gotoRunning: starting MIMOChannel sources: " << (*it)->getMIMOName().toStdString().c_str(); (*it)->startSources(); } } @@ -1179,7 +1179,7 @@ void DSPDeviceMIMOEngine::handleInputMessages() for (BasebandSampleSinks::const_iterator it = m_basebandSampleSinks[istream].begin(); it != m_basebandSampleSinks[istream].end(); ++it) { DSPSignalNotification *message = new DSPSignalNotification(sampleRate, centerFrequency); - qDebug() << "DSPDeviceMIMOEngine::handleInputMessages: starting " << (*it)->objectName().toStdString().c_str(); + qDebug() << "DSPDeviceMIMOEngine::handleInputMessages: starting " << (*it)->getSinkName().toStdString().c_str(); (*it)->pushMessage(message); } } @@ -1212,7 +1212,7 @@ void DSPDeviceMIMOEngine::handleInputMessages() for (BasebandSampleSources::const_iterator it = m_basebandSampleSources[istream].begin(); it != m_basebandSampleSources[istream].end(); ++it) { DSPSignalNotification *message = new DSPSignalNotification(sampleRate, centerFrequency); - qDebug() << "DSPDeviceMIMOEngine::handleSinkMessages: forward message to BasebandSampleSource(" << (*it)->objectName().toStdString().c_str() << ")"; + qDebug() << "DSPDeviceMIMOEngine::handleSinkMessages: forward message to BasebandSampleSource(" << (*it)->getSourceName().toStdString().c_str() << ")"; (*it)->pushMessage(message); } } diff --git a/sdrbase/dsp/dspdevicesinkengine.cpp b/sdrbase/dsp/dspdevicesinkengine.cpp index ec6e1a077..add22cdbb 100644 --- a/sdrbase/dsp/dspdevicesinkengine.cpp +++ b/sdrbase/dsp/dspdevicesinkengine.cpp @@ -112,28 +112,28 @@ void DSPDeviceSinkEngine::setSinkSequence(int sequence) void DSPDeviceSinkEngine::addChannelSource(BasebandSampleSource* source) { - qDebug() << "DSPDeviceSinkEngine::addChannelSource: " << source->objectName().toStdString().c_str(); + qDebug() << "DSPDeviceSinkEngine::addChannelSource: " << source->getSourceName().toStdString().c_str(); DSPAddBasebandSampleSource cmd(source); m_syncMessenger.sendWait(cmd); } void DSPDeviceSinkEngine::removeChannelSource(BasebandSampleSource* source) { - qDebug() << "DSPDeviceSinkEngine::removeChannelSource: " << source->objectName().toStdString().c_str(); + qDebug() << "DSPDeviceSinkEngine::removeChannelSource: " << source->getSourceName().toStdString().c_str(); DSPRemoveBasebandSampleSource cmd(source); m_syncMessenger.sendWait(cmd); } void DSPDeviceSinkEngine::addSpectrumSink(BasebandSampleSink* spectrumSink) { - qDebug() << "DSPDeviceSinkEngine::addSpectrumSink: " << spectrumSink->objectName().toStdString().c_str(); + qDebug() << "DSPDeviceSinkEngine::addSpectrumSink: " << spectrumSink->getSinkName().toStdString().c_str(); DSPAddSpectrumSink cmd(spectrumSink); m_syncMessenger.sendWait(cmd); } void DSPDeviceSinkEngine::removeSpectrumSink(BasebandSampleSink* spectrumSink) { - qDebug() << "DSPDeviceSinkEngine::removeSpectrumSink: " << spectrumSink->objectName().toStdString().c_str(); + qDebug() << "DSPDeviceSinkEngine::removeSpectrumSink: " << spectrumSink->getSinkName().toStdString().c_str(); DSPRemoveSpectrumSink cmd(spectrumSink); m_syncMessenger.sendWait(cmd); } @@ -268,7 +268,7 @@ DSPDeviceSinkEngine::State DSPDeviceSinkEngine::gotoIdle() for(BasebandSampleSources::const_iterator it = m_basebandSampleSources.begin(); it != m_basebandSampleSources.end(); it++) { - qDebug() << "DSPDeviceSinkEngine::gotoIdle: stopping " << (*it)->objectName().toStdString().c_str(); + qDebug() << "DSPDeviceSinkEngine::gotoIdle: stopping " << (*it)->getSourceName().toStdString().c_str(); (*it)->stop(); } @@ -315,7 +315,7 @@ DSPDeviceSinkEngine::State DSPDeviceSinkEngine::gotoInit() for (BasebandSampleSources::const_iterator it = m_basebandSampleSources.begin(); it != m_basebandSampleSources.end(); ++it) { - qDebug() << "DSPDeviceSinkEngine::gotoInit: initializing " << (*it)->objectName().toStdString().c_str(); + qDebug() << "DSPDeviceSinkEngine::gotoInit: initializing " << (*it)->getSourceName().toStdString().c_str(); (*it)->pushMessage(new DSPSignalNotification(notif)); } @@ -368,7 +368,7 @@ DSPDeviceSinkEngine::State DSPDeviceSinkEngine::gotoRunning() for(BasebandSampleSources::const_iterator it = m_basebandSampleSources.begin(); it != m_basebandSampleSources.end(); it++) { - qDebug() << "DSPDeviceSinkEngine::gotoRunning: starting " << (*it)->objectName().toStdString().c_str(); + qDebug() << "DSPDeviceSinkEngine::gotoRunning: starting " << (*it)->getSourceName().toStdString().c_str(); (*it)->start(); } @@ -519,7 +519,7 @@ void DSPDeviceSinkEngine::handleInputMessages() for(BasebandSampleSources::const_iterator it = m_basebandSampleSources.begin(); it != m_basebandSampleSources.end(); it++) { DSPSignalNotification* rep = new DSPSignalNotification(*notif); // make a copy - qDebug() << "DSPDeviceSinkEngine::handleInputMessages: forward message to " << (*it)->objectName().toStdString().c_str(); + qDebug() << "DSPDeviceSinkEngine::handleInputMessages: forward message to " << (*it)->getSourceName().toStdString().c_str(); (*it)->pushMessage(rep); } diff --git a/sdrbase/dsp/dspdevicesourceengine.cpp b/sdrbase/dsp/dspdevicesourceengine.cpp index 2120269c8..4d431c9f1 100644 --- a/sdrbase/dsp/dspdevicesourceengine.cpp +++ b/sdrbase/dsp/dspdevicesourceengine.cpp @@ -122,14 +122,14 @@ void DSPDeviceSourceEngine::setSourceSequence(int sequence) void DSPDeviceSourceEngine::addSink(BasebandSampleSink* sink) { - qDebug() << "DSPDeviceSourceEngine::addSink: " << sink->objectName().toStdString().c_str(); + qDebug() << "DSPDeviceSourceEngine::addSink: " << sink->getSinkName().toStdString().c_str(); DSPAddBasebandSampleSink cmd(sink); m_syncMessenger.sendWait(cmd); } void DSPDeviceSourceEngine::removeSink(BasebandSampleSink* sink) { - qDebug() << "DSPDeviceSourceEngine::removeSink: " << sink->objectName().toStdString().c_str(); + qDebug() << "DSPDeviceSourceEngine::removeSink: " << sink->getSinkName().toStdString().c_str(); DSPRemoveBasebandSampleSink cmd(sink); m_syncMessenger.sendWait(cmd); } @@ -444,7 +444,7 @@ DSPDeviceSourceEngine::State DSPDeviceSourceEngine::gotoInit() for (BasebandSampleSinks::const_iterator it = m_basebandSampleSinks.begin(); it != m_basebandSampleSinks.end(); ++it) { DSPSignalNotification *notif = new DSPSignalNotification(m_sampleRate, m_centerFrequency); - qDebug() << "DSPDeviceSourceEngine::gotoInit: initializing " << (*it)->objectName().toStdString().c_str(); + qDebug() << "DSPDeviceSourceEngine::gotoInit: initializing " << (*it)->getSinkName().toStdString().c_str(); (*it)->pushMessage(notif); } @@ -493,7 +493,7 @@ DSPDeviceSourceEngine::State DSPDeviceSourceEngine::gotoRunning() for(BasebandSampleSinks::const_iterator it = m_basebandSampleSinks.begin(); it != m_basebandSampleSinks.end(); it++) { - qDebug() << "DSPDeviceSourceEngine::gotoRunning: starting " << (*it)->objectName().toStdString().c_str(); + qDebug() << "DSPDeviceSourceEngine::gotoRunning: starting " << (*it)->getSinkName().toStdString().c_str(); (*it)->start(); } @@ -659,7 +659,7 @@ void DSPDeviceSourceEngine::handleInputMessages() for(BasebandSampleSinks::const_iterator it = m_basebandSampleSinks.begin(); it != m_basebandSampleSinks.end(); it++) { DSPSignalNotification* rep = new DSPSignalNotification(*notif); // make a copy - qDebug() << "DSPDeviceSourceEngine::handleInputMessages: forward message to " << (*it)->objectName().toStdString().c_str(); + qDebug() << "DSPDeviceSourceEngine::handleInputMessages: forward message to " << (*it)->getSinkName().toStdString().c_str(); (*it)->pushMessage(rep); } diff --git a/sdrbase/dsp/mimochannel.cpp b/sdrbase/dsp/mimochannel.cpp index f62efbe9b..5d1bcaee3 100644 --- a/sdrbase/dsp/mimochannel.cpp +++ b/sdrbase/dsp/mimochannel.cpp @@ -20,26 +20,8 @@ MIMOChannel::MIMOChannel() { - connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); } MIMOChannel::~MIMOChannel() { } - -void MIMOChannel::pushMessage(Message *msg) -{ - m_inputMessageQueue.push(msg); -} - -void MIMOChannel::handleInputMessages() -{ - Message* message; - - while ((message = m_inputMessageQueue.pop()) != 0) - { - if (handleMessage(*message)) { - delete message; - } - } -} diff --git a/sdrbase/dsp/mimochannel.h b/sdrbase/dsp/mimochannel.h index 53681ef84..a2d01f880 100644 --- a/sdrbase/dsp/mimochannel.h +++ b/sdrbase/dsp/mimochannel.h @@ -19,16 +19,13 @@ #ifndef SDRBASE_MIMOCHANNEL_H #define SDRBASE_MIMOCHANNEL_H -#include - #include "export.h" #include "dsp/dsptypes.h" #include "util/messagequeue.h" #include "util/message.h" -class SDRBASE_API MIMOChannel : public QObject { - Q_OBJECT +class SDRBASE_API MIMOChannel { public: MIMOChannel(); virtual ~MIMOChannel(); @@ -39,16 +36,8 @@ public: virtual void stopSources() = 0; virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, unsigned int sinkIndex) = 0; virtual void pull(SampleVector::iterator& begin, unsigned int nbSamples, unsigned int sourceIndex) = 0; - void pushMessage(Message *msg); - - MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; } //!< Get the queue for asynchronous inbound communication - -protected: - virtual bool handleMessage(const Message& cmd) = 0; //!< Processing of a message. Returns true if message has actually been processed - MessageQueue m_inputMessageQueue; //!< Queue for asynchronous inbound communication - -protected slots: - void handleInputMessages(); + virtual void pushMessage(Message *msg) = 0; + virtual QString getMIMOName() = 0; }; #endif // SDRBASE_MIMOCHANNEL_H diff --git a/sdrbase/dsp/nullsink.cpp b/sdrbase/dsp/nullsink.cpp deleted file mode 100644 index 1c372a6b1..000000000 --- a/sdrbase/dsp/nullsink.cpp +++ /dev/null @@ -1,39 +0,0 @@ -#include "dsp/nullsink.h" -#include "dsp/dspcommands.h" -#include "util/messagequeue.h" - -NullSink::NullSink() -{ - setObjectName("NullSink"); -} - -NullSink::~NullSink() -{ -} - -bool NullSink::init(const Message& message) -{ - (void) message; - return false; -} - -void NullSink::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly) -{ - (void) begin; - (void) end; - (void) positiveOnly; -} - -void NullSink::start() -{ -} - -void NullSink::stop() -{ -} - -bool NullSink::handleMessage(const Message& message) -{ - (void) message; - return false; -} diff --git a/sdrbase/dsp/nullsink.h b/sdrbase/dsp/nullsink.h deleted file mode 100644 index 43f9a46b4..000000000 --- a/sdrbase/dsp/nullsink.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef INCLUDE_NULLSINK_H -#define INCLUDE_NULLSINK_H - -#include -#include "export.h" - -class Message; - -class SDRBASE_API NullSink : public BasebandSampleSink { -public: - - NullSink(); - virtual ~NullSink(); - - virtual bool init(const Message& cmd); - using BasebandSampleSink::feed; - virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly); - virtual void start(); - virtual void stop(); - virtual bool handleMessage(const Message& message); -}; - -#endif // INCLUDE_NULLSINK_H diff --git a/sdrbase/dsp/spectrumvis.cpp b/sdrbase/dsp/spectrumvis.cpp index 5e6d553fa..6b2f094a1 100644 --- a/sdrbase/dsp/spectrumvis.cpp +++ b/sdrbase/dsp/spectrumvis.cpp @@ -66,6 +66,7 @@ SpectrumVis::SpectrumVis(Real scalef) : m_mutex(QMutex::Recursive) { setObjectName("SpectrumVis"); + connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); applySettings(m_settings, true); } @@ -78,13 +79,13 @@ SpectrumVis::~SpectrumVis() void SpectrumVis::setScalef(Real scalef) { MsgConfigureScalingFactor* cmd = new MsgConfigureScalingFactor(scalef); - getInputMessageQueue()->push(cmd); + m_inputMessageQueue.push(cmd); } void SpectrumVis::configureWSSpectrum(const QString& address, uint16_t port) { MsgConfigureWSpectrum* cmd = new MsgConfigureWSpectrum(address, port); - getInputMessageQueue()->push(cmd); + m_inputMessageQueue.push(cmd); } void SpectrumVis::feedTriggered(const SampleVector::const_iterator& triggerPoint, const SampleVector::const_iterator& end, bool positiveOnly) @@ -764,6 +765,28 @@ void SpectrumVis::stop() } } +void SpectrumVis::pushMessage(Message *msg) +{ + m_inputMessageQueue.push(msg); +} + +QString SpectrumVis::getSinkName() +{ + return objectName(); +} + +void SpectrumVis::handleInputMessages() +{ + Message* message; + + while ((message = m_inputMessageQueue.pop()) != 0) + { + if (handleMessage(*message)) { + delete message; + } + } +} + bool SpectrumVis::handleMessage(const Message& message) { if (DSPSignalNotification::match(message)) diff --git a/sdrbase/dsp/spectrumvis.h b/sdrbase/dsp/spectrumvis.h index 5a3a16ac7..9fab52eab 100644 --- a/sdrbase/dsp/spectrumvis.h +++ b/sdrbase/dsp/spectrumvis.h @@ -18,6 +18,7 @@ #ifndef INCLUDE_SPECTRUMVIS_H #define INCLUDE_SPECTRUMVIS_H +#include #include #include "dsp/basebandsamplesink.h" @@ -26,13 +27,13 @@ #include "dsp/spectrumsettings.h" #include "export.h" #include "util/message.h" +#include "util/messagequeue.h" #include "util/movingaverage2d.h" #include "util/fixedaverage2d.h" #include "util/max2d.h" #include "websockets/wsspectrum.h" class GLSpectrumInterface; -class MessageQueue; namespace SWGSDRangel { class SWGGLSpectrum; @@ -40,8 +41,8 @@ namespace SWGSDRangel { class SWGSuccessResponse; }; -class SDRBASE_API SpectrumVis : public BasebandSampleSink { - +class SDRBASE_API SpectrumVis : public QObject, public BasebandSampleSink { + Q_OBJECT public: class SDRBASE_API MsgConfigureSpectrumVis : public Message { MESSAGE_CLASS_DECLARATION @@ -153,7 +154,9 @@ public: void feedTriggered(const SampleVector::const_iterator& triggerPoint, const SampleVector::const_iterator& end, bool positiveOnly); virtual void start(); virtual void stop(); - virtual bool handleMessage(const Message& message); + virtual void pushMessage(Message *msg); + virtual QString getSinkName(); + MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; } void setMessageQueueToGUI(MessageQueue *queue) { m_guiMessageQueue = queue; } MessageQueue *getMessageQueueToGUI() { return m_guiMessageQueue; } @@ -237,6 +240,7 @@ private: Real m_powFFTDiv; static const Real m_mult; + MessageQueue m_inputMessageQueue; MessageQueue *m_guiMessageQueue; //!< Input message queue to the GUI QMutex m_mutex; @@ -244,6 +248,7 @@ private: void processFFT(bool positiveOnly); void setRunning(bool running) { m_running = running; } void applySettings(const SpectrumSettings& settings, bool force = false); + bool handleMessage(const Message& message); void handleConfigureDSP(uint64_t centerFrequency, int sampleRate); void handleScalef(Real scalef); void handleWSOpenClose(bool openClose); @@ -254,6 +259,9 @@ private: SpectrumSettings& settings, const QStringList& spectrumSettingsKeys, SWGSDRangel::SWGGLSpectrum& response); + +private slots: + void handleInputMessages(); }; #endif // INCLUDE_SPECTRUMVIS_H diff --git a/sdrgui/dsp/scopevisxy.cpp b/sdrgui/dsp/scopevisxy.cpp index 3e7dc6a56..0c32af3ad 100644 --- a/sdrgui/dsp/scopevisxy.cpp +++ b/sdrgui/dsp/scopevisxy.cpp @@ -20,6 +20,7 @@ #include #include "scopevisxy.h" +#include "util/message.h" #include "gui/tvscreen.h" ScopeVisXY::ScopeVisXY(TVScreen *tvScreen) : @@ -102,6 +103,18 @@ void ScopeVisXY::stop() { } +void ScopeVisXY::handleInputMessages() +{ + Message* message; + + while ((message = m_inputMessageQueue.pop()) != 0) + { + if (handleMessage(*message)) { + delete message; + } + } +} + bool ScopeVisXY::handleMessage(const Message& message) { (void) message; diff --git a/sdrgui/dsp/scopevisxy.h b/sdrgui/dsp/scopevisxy.h index b5b6ec915..5242d9161 100644 --- a/sdrgui/dsp/scopevisxy.h +++ b/sdrgui/dsp/scopevisxy.h @@ -21,15 +21,17 @@ #include "dsp/basebandsamplesink.h" #include "export.h" -#include "util/message.h" +#include "util/messagequeue.h" +#include #include #include #include class TVScreen; -class SDRGUI_API ScopeVisXY : public BasebandSampleSink { +class SDRGUI_API ScopeVisXY : public QObject, public BasebandSampleSink { + Q_OBJECT public: ScopeVisXY(TVScreen *tvScreen); virtual ~ScopeVisXY(); @@ -38,7 +40,8 @@ public: virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly); virtual void start(); virtual void stop(); - virtual bool handleMessage(const Message& message); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getSinkName() { return objectName(); } void setScale(float scale) { m_scale = scale; } void setStroke(int stroke) { m_alphaTrace = stroke; } @@ -53,6 +56,7 @@ public: void clearGraticule(); private: + virtual bool handleMessage(const Message& message); void drawGraticule(); TVScreen *m_tvScreen; @@ -68,6 +72,10 @@ private: std::vector > m_graticule; std::vector m_graticuleRows; std::vector m_graticuleCols; + MessageQueue m_inputMessageQueue; + +private slots: + void handleInputMessages(); };