diff options
author | f4exb <f4exb06@gmail.com> | 2017-12-25 09:10:19 +0100 |
---|---|---|
committer | f4exb <f4exb06@gmail.com> | 2017-12-25 09:10:19 +0100 |
commit | 49d1439981d7716b2d5d37c2bbffa33d79c31b92 (patch) | |
tree | c6d2b643db9ddd57094d70959ed95301455632cb /plugins/samplesource | |
parent | c732fe386273de6f16103fc67b919be08dc5bdab (diff) |
Device source plugins: implemented an init method for initializations to be done when all collaborating objects are created and possibly connected
Diffstat (limited to 'plugins/samplesource')
25 files changed, 91 insertions, 13 deletions
diff --git a/plugins/samplesource/airspy/airspyinput.cpp b/plugins/samplesource/airspy/airspyinput.cpp index 1e7c82610..1ccb89964 100644 --- a/plugins/samplesource/airspy/airspyinput.cpp +++ b/plugins/samplesource/airspy/airspyinput.cpp @@ -147,6 +147,11 @@ bool AirspyInput::openDevice() return true; } +void AirspyInput::init() +{ + applySettings(m_settings, true); +} + bool AirspyInput::start() { QMutexLocker mutexLocker(&m_mutex); diff --git a/plugins/samplesource/airspy/airspyinput.h b/plugins/samplesource/airspy/airspyinput.h index 828ae1120..505420d3a 100644 --- a/plugins/samplesource/airspy/airspyinput.h +++ b/plugins/samplesource/airspy/airspyinput.h @@ -94,6 +94,7 @@ public: virtual ~AirspyInput(); virtual void destroy(); + virtual void init(); virtual bool start(); virtual void stop(); diff --git a/plugins/samplesource/bladerfinput/bladerfinput.cpp b/plugins/samplesource/bladerfinput/bladerfinput.cpp index 1169e2663..0e1cb3d3d 100644 --- a/plugins/samplesource/bladerfinput/bladerfinput.cpp +++ b/plugins/samplesource/bladerfinput/bladerfinput.cpp @@ -131,6 +131,11 @@ bool BladerfInput::openDevice() return true; } +void BladerfInput::init() +{ + applySettings(m_settings, true); +} + bool BladerfInput::start() { // QMutexLocker mutexLocker(&m_mutex); diff --git a/plugins/samplesource/bladerfinput/bladerfinput.h b/plugins/samplesource/bladerfinput/bladerfinput.h index 24ee4286c..f5e42fc66 100644 --- a/plugins/samplesource/bladerfinput/bladerfinput.h +++ b/plugins/samplesource/bladerfinput/bladerfinput.h @@ -97,6 +97,7 @@ public: virtual ~BladerfInput(); virtual void destroy(); + virtual void init(); virtual bool start(); virtual void stop(); diff --git a/plugins/samplesource/fcdpro/fcdproinput.cpp b/plugins/samplesource/fcdpro/fcdproinput.cpp index d99beae57..4178782e1 100644 --- a/plugins/samplesource/fcdpro/fcdproinput.cpp +++ b/plugins/samplesource/fcdpro/fcdproinput.cpp @@ -91,6 +91,11 @@ bool FCDProInput::openDevice() return true; } +void FCDProInput::init() +{ + applySettings(m_settings, true); +} + bool FCDProInput::start() { qDebug() << "FCDProInput::start"; diff --git a/plugins/samplesource/fcdpro/fcdproinput.h b/plugins/samplesource/fcdpro/fcdproinput.h index b623e41c7..5571f691c 100644 --- a/plugins/samplesource/fcdpro/fcdproinput.h +++ b/plugins/samplesource/fcdpro/fcdproinput.h @@ -101,6 +101,7 @@ public: virtual ~FCDProInput(); virtual void destroy(); + virtual void init(); virtual bool start(); virtual void stop(); diff --git a/plugins/samplesource/fcdproplus/fcdproplusinput.cpp b/plugins/samplesource/fcdproplus/fcdproplusinput.cpp index d2b10b074..7673ba2b1 100644 --- a/plugins/samplesource/fcdproplus/fcdproplusinput.cpp +++ b/plugins/samplesource/fcdproplus/fcdproplusinput.cpp @@ -84,6 +84,11 @@ bool FCDProPlusInput::openDevice() return true; } +void FCDProPlusInput::init() +{ + applySettings(m_settings, true); +} + bool FCDProPlusInput::start() { diff --git a/plugins/samplesource/fcdproplus/fcdproplusinput.h b/plugins/samplesource/fcdproplus/fcdproplusinput.h index 30b876afa..47974d9eb 100644 --- a/plugins/samplesource/fcdproplus/fcdproplusinput.h +++ b/plugins/samplesource/fcdproplus/fcdproplusinput.h @@ -100,6 +100,7 @@ public: virtual ~FCDProPlusInput(); virtual void destroy(); + virtual void init(); virtual bool start(); virtual void stop(); diff --git a/plugins/samplesource/filesource/filesourceinput.cpp b/plugins/samplesource/filesource/filesourceinput.cpp index df5b0d0fd..68f8f8b61 100644 --- a/plugins/samplesource/filesource/filesourceinput.cpp +++ b/plugins/samplesource/filesource/filesourceinput.cpp @@ -121,6 +121,12 @@ void FileSourceInput::seekFileStream(int seekPercentage) }
}
+void FileSourceInput::init()
+{
+ DSPSignalNotification *notif = new DSPSignalNotification(m_settings.m_sampleRate, m_settings.m_centerFrequency);
+ m_deviceAPI->getDeviceEngineInputMessageQueue()->push(notif);
+}
+
bool FileSourceInput::start()
{
QMutexLocker mutexLocker(&m_mutex);
diff --git a/plugins/samplesource/filesource/filesourceinput.h b/plugins/samplesource/filesource/filesourceinput.h index ea5ed431c..5eae0c85f 100644 --- a/plugins/samplesource/filesource/filesourceinput.h +++ b/plugins/samplesource/filesource/filesourceinput.h @@ -226,6 +226,7 @@ public: virtual ~FileSourceInput();
virtual void destroy();
+ virtual void init();
virtual bool start();
virtual void stop();
diff --git a/plugins/samplesource/hackrfinput/hackrfinput.cpp b/plugins/samplesource/hackrfinput/hackrfinput.cpp index 304f99a22..f28b9459f 100644 --- a/plugins/samplesource/hackrfinput/hackrfinput.cpp +++ b/plugins/samplesource/hackrfinput/hackrfinput.cpp @@ -119,6 +119,11 @@ bool HackRFInput::openDevice() return true; } +void HackRFInput::init() +{ + applySettings(m_settings, true); +} + bool HackRFInput::start() { // QMutexLocker mutexLocker(&m_mutex); diff --git a/plugins/samplesource/hackrfinput/hackrfinput.h b/plugins/samplesource/hackrfinput/hackrfinput.h index 3e603fc9a..95023d4a8 100644 --- a/plugins/samplesource/hackrfinput/hackrfinput.h +++ b/plugins/samplesource/hackrfinput/hackrfinput.h @@ -114,6 +114,7 @@ public: virtual ~HackRFInput(); virtual void destroy(); + virtual void init(); virtual bool start(); virtual void stop(); diff --git a/plugins/samplesource/limesdrinput/limesdrinput.cpp b/plugins/samplesource/limesdrinput/limesdrinput.cpp index f34fe1562..bb70fb895 100644 --- a/plugins/samplesource/limesdrinput/limesdrinput.cpp +++ b/plugins/samplesource/limesdrinput/limesdrinput.cpp @@ -364,6 +364,11 @@ void LimeSDRInput::releaseChannel() m_channelAcquired = false; } +void LimeSDRInput::init() +{ + applySettings(m_settings, true, false); +} + bool LimeSDRInput::start() { if (!m_deviceShared.m_deviceParams->getDevice()) { diff --git a/plugins/samplesource/limesdrinput/limesdrinput.h b/plugins/samplesource/limesdrinput/limesdrinput.h index 42314ef92..8de2d601a 100644 --- a/plugins/samplesource/limesdrinput/limesdrinput.h +++ b/plugins/samplesource/limesdrinput/limesdrinput.h @@ -208,6 +208,7 @@ public: virtual ~LimeSDRInput(); virtual void destroy(); + virtual void init(); virtual bool start(); virtual void stop(); diff --git a/plugins/samplesource/plutosdrinput/plutosdrinput.cpp b/plugins/samplesource/plutosdrinput/plutosdrinput.cpp index 518296c83..c6e3aea66 100644 --- a/plugins/samplesource/plutosdrinput/plutosdrinput.cpp +++ b/plugins/samplesource/plutosdrinput/plutosdrinput.cpp @@ -68,6 +68,11 @@ void PlutoSDRInput::destroy() delete this; } +void PlutoSDRInput::init() +{ + applySettings(m_settings, true); +} + bool PlutoSDRInput::start() { if (!m_deviceShared.m_deviceParams->getBox()) { diff --git a/plugins/samplesource/plutosdrinput/plutosdrinput.h b/plugins/samplesource/plutosdrinput/plutosdrinput.h index 6504418d7..dc57ca898 100644 --- a/plugins/samplesource/plutosdrinput/plutosdrinput.h +++ b/plugins/samplesource/plutosdrinput/plutosdrinput.h @@ -96,6 +96,7 @@ public: ~PlutoSDRInput(); virtual void destroy(); + virtual void init(); virtual bool start(); virtual void stop(); diff --git a/plugins/samplesource/rtlsdr/rtlsdrinput.cpp b/plugins/samplesource/rtlsdr/rtlsdrinput.cpp index 0accf0e8d..68f9877e2 100644 --- a/plugins/samplesource/rtlsdr/rtlsdrinput.cpp +++ b/plugins/samplesource/rtlsdr/rtlsdrinput.cpp @@ -173,6 +173,11 @@ bool RTLSDRInput::openDevice() return true; } +void RTLSDRInput::init() +{ + applySettings(m_settings, true); +} + bool RTLSDRInput::start() { QMutexLocker mutexLocker(&m_mutex); diff --git a/plugins/samplesource/rtlsdr/rtlsdrinput.h b/plugins/samplesource/rtlsdr/rtlsdrinput.h index 54a82d67f..429b84f8e 100644 --- a/plugins/samplesource/rtlsdr/rtlsdrinput.h +++ b/plugins/samplesource/rtlsdr/rtlsdrinput.h @@ -95,6 +95,7 @@ public: virtual ~RTLSDRInput(); virtual void destroy(); + virtual void init(); virtual bool start(); virtual void stop(); diff --git a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.cpp b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.cpp index 5bbb06b5d..6f7fcdf42 100644 --- a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.cpp +++ b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.cpp @@ -77,6 +77,12 @@ void SDRdaemonSourceInput::destroy() delete this; } +void SDRdaemonSourceInput::init() +{ + DSPSignalNotification *notif = new DSPSignalNotification(m_settings.m_sampleRate/(1<<m_settings.m_log2Decim), m_settings.m_centerFrequency); + m_deviceAPI->getDeviceEngineInputMessageQueue()->push(notif); +} + bool SDRdaemonSourceInput::start() { qDebug() << "SDRdaemonInput::start"; diff --git a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.h b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.h index 5fdcb87ff..0992cb84a 100644 --- a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.h +++ b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.h @@ -326,6 +326,7 @@ public: virtual ~SDRdaemonSourceInput(); virtual void destroy(); + virtual void init(); virtual bool start(); virtual void stop(); diff --git a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourcesettings.cpp b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourcesettings.cpp index df6172f5d..81da4ca8a 100644 --- a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourcesettings.cpp +++ b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourcesettings.cpp @@ -26,7 +26,7 @@ void SDRdaemonSourceSettings::resetToDefaults() { m_centerFrequency = 435000*1000; m_sampleRate = 256000; - m_log2Decim = 4; + m_log2Decim = 1; m_txDelay = 0.5; m_nbFECBlocks = 0; m_address = "127.0.0.1"; diff --git a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceudphandler.cpp b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceudphandler.cpp index 66bcf3be7..95294e6bd 100644 --- a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceudphandler.cpp +++ b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceudphandler.cpp @@ -34,6 +34,7 @@ SDRdaemonSourceUDPHandler::SDRdaemonSourceUDPHandler(SampleSinkFifo *sampleFifo, m_remoteAddress(QHostAddress::LocalHost), m_dataPort(9090), m_dataConnected(false), + m_startInit(true), m_udpBuf(0), m_udpReadBytes(0), m_sampleFifo(sampleFifo), @@ -92,8 +93,8 @@ void SDRdaemonSourceUDPHandler::start() } } - // Need to notify the DSP engine to actually start - DSPSignalNotification *notif = new DSPSignalNotification(m_samplerate, m_centerFrequency * 1000); // Frequency in Hz for the DSP engine + // Need to notify the DSP engine to actually start FIXME: may cause transient confusion because at this point sample rate and frequency are unknown + DSPSignalNotification *notif = new DSPSignalNotification(128000, 435000 * 1000); // Frequency in Hz for the DSP engine m_deviceAPI->getDeviceEngineInputMessageQueue()->push(notif); m_elapsedTimer.start(); } @@ -113,6 +114,8 @@ void SDRdaemonSourceUDPHandler::stop() delete m_dataSocket; m_dataSocket = 0; } + + m_startInit = true; } void SDRdaemonSourceUDPHandler::configureUDPLink(const QString& address, quint16 port) @@ -170,17 +173,23 @@ void SDRdaemonSourceUDPHandler::processData() change = true; } - if (change) + if (change || m_startInit) { - DSPSignalNotification *notif = new DSPSignalNotification(m_samplerate, m_centerFrequency * 1000); // Frequency in Hz for the DSP engine - m_deviceAPI->getDeviceEngineInputMessageQueue()->push(notif); - SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamData *report = SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamData::create( - m_samplerate, - m_centerFrequency * 1000, // Frequency in Hz for the GUI - m_tv_sec, - m_tv_usec); - - m_outputMessageQueueToGUI->push(report); + qDebug("SDRdaemonSourceUDPHandler::processData: m_samplerate: %u m_centerFrequency: %u kHz", m_samplerate, m_centerFrequency); + + if (m_samplerate != 0) + { + DSPSignalNotification *notif = new DSPSignalNotification(m_samplerate, m_centerFrequency * 1000); // Frequency in Hz for the DSP engine + m_deviceAPI->getDeviceEngineInputMessageQueue()->push(notif); + SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamData *report = SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamData::create( + m_samplerate, + m_centerFrequency * 1000, // Frequency in Hz for the GUI + m_tv_sec, + m_tv_usec); + + m_outputMessageQueueToGUI->push(report); + m_startInit = false; + } } } diff --git a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceudphandler.h b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceudphandler.h index 2ef6bd05e..428402d2a 100644 --- a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceudphandler.h +++ b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceudphandler.h @@ -56,6 +56,7 @@ private: QHostAddress m_remoteAddress; quint16 m_dataPort; bool m_dataConnected; + bool m_startInit; char *m_udpBuf; qint64 m_udpReadBytes; SampleSinkFifo *m_sampleFifo; diff --git a/plugins/samplesource/sdrplay/sdrplayinput.cpp b/plugins/samplesource/sdrplay/sdrplayinput.cpp index 0f01613c4..be92a2cf5 100644 --- a/plugins/samplesource/sdrplay/sdrplayinput.cpp +++ b/plugins/samplesource/sdrplay/sdrplayinput.cpp @@ -198,6 +198,11 @@ void SDRPlayInput::closeDevice() m_deviceDescription.clear(); } +void SDRPlayInput::init() +{ + applySettings(m_settings, true, true); +} + void SDRPlayInput::stop() { // QMutexLocker mutexLocker(&m_mutex); diff --git a/plugins/samplesource/sdrplay/sdrplayinput.h b/plugins/samplesource/sdrplay/sdrplayinput.h index f1b90e98b..996bba94a 100644 --- a/plugins/samplesource/sdrplay/sdrplayinput.h +++ b/plugins/samplesource/sdrplay/sdrplayinput.h @@ -132,6 +132,7 @@ public: virtual ~SDRPlayInput(); virtual void destroy(); + virtual void init(); virtual bool start(); virtual void stop(); |