summaryrefslogtreecommitdiff
path: root/plugins/samplesource
diff options
context:
space:
mode:
authorf4exb <f4exb06@gmail.com>2017-12-25 09:10:19 +0100
committerf4exb <f4exb06@gmail.com>2017-12-25 09:10:19 +0100
commit49d1439981d7716b2d5d37c2bbffa33d79c31b92 (patch)
treec6d2b643db9ddd57094d70959ed95301455632cb /plugins/samplesource
parentc732fe386273de6f16103fc67b919be08dc5bdab (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')
-rw-r--r--plugins/samplesource/airspy/airspyinput.cpp5
-rw-r--r--plugins/samplesource/airspy/airspyinput.h1
-rw-r--r--plugins/samplesource/bladerfinput/bladerfinput.cpp5
-rw-r--r--plugins/samplesource/bladerfinput/bladerfinput.h1
-rw-r--r--plugins/samplesource/fcdpro/fcdproinput.cpp5
-rw-r--r--plugins/samplesource/fcdpro/fcdproinput.h1
-rw-r--r--plugins/samplesource/fcdproplus/fcdproplusinput.cpp5
-rw-r--r--plugins/samplesource/fcdproplus/fcdproplusinput.h1
-rw-r--r--plugins/samplesource/filesource/filesourceinput.cpp6
-rw-r--r--plugins/samplesource/filesource/filesourceinput.h1
-rw-r--r--plugins/samplesource/hackrfinput/hackrfinput.cpp5
-rw-r--r--plugins/samplesource/hackrfinput/hackrfinput.h1
-rw-r--r--plugins/samplesource/limesdrinput/limesdrinput.cpp5
-rw-r--r--plugins/samplesource/limesdrinput/limesdrinput.h1
-rw-r--r--plugins/samplesource/plutosdrinput/plutosdrinput.cpp5
-rw-r--r--plugins/samplesource/plutosdrinput/plutosdrinput.h1
-rw-r--r--plugins/samplesource/rtlsdr/rtlsdrinput.cpp5
-rw-r--r--plugins/samplesource/rtlsdr/rtlsdrinput.h1
-rw-r--r--plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.cpp6
-rw-r--r--plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.h1
-rw-r--r--plugins/samplesource/sdrdaemonsource/sdrdaemonsourcesettings.cpp2
-rw-r--r--plugins/samplesource/sdrdaemonsource/sdrdaemonsourceudphandler.cpp33
-rw-r--r--plugins/samplesource/sdrdaemonsource/sdrdaemonsourceudphandler.h1
-rw-r--r--plugins/samplesource/sdrplay/sdrplayinput.cpp5
-rw-r--r--plugins/samplesource/sdrplay/sdrplayinput.h1
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();