mirror of
https://github.com/f4exb/sdrangel.git
synced 2026-06-04 06:54:39 -04:00
Device source plugins: implemented an init method for initializations to be done when all collaborating objects are created and possibly connected
This commit is contained in:
@@ -147,6 +147,11 @@ bool AirspyInput::openDevice()
|
||||
return true;
|
||||
}
|
||||
|
||||
void AirspyInput::init()
|
||||
{
|
||||
applySettings(m_settings, true);
|
||||
}
|
||||
|
||||
bool AirspyInput::start()
|
||||
{
|
||||
QMutexLocker mutexLocker(&m_mutex);
|
||||
|
||||
@@ -94,6 +94,7 @@ public:
|
||||
virtual ~AirspyInput();
|
||||
virtual void destroy();
|
||||
|
||||
virtual void init();
|
||||
virtual bool start();
|
||||
virtual void stop();
|
||||
|
||||
|
||||
@@ -131,6 +131,11 @@ bool BladerfInput::openDevice()
|
||||
return true;
|
||||
}
|
||||
|
||||
void BladerfInput::init()
|
||||
{
|
||||
applySettings(m_settings, true);
|
||||
}
|
||||
|
||||
bool BladerfInput::start()
|
||||
{
|
||||
// QMutexLocker mutexLocker(&m_mutex);
|
||||
|
||||
@@ -97,6 +97,7 @@ public:
|
||||
virtual ~BladerfInput();
|
||||
virtual void destroy();
|
||||
|
||||
virtual void init();
|
||||
virtual bool start();
|
||||
virtual void stop();
|
||||
|
||||
|
||||
@@ -91,6 +91,11 @@ bool FCDProInput::openDevice()
|
||||
return true;
|
||||
}
|
||||
|
||||
void FCDProInput::init()
|
||||
{
|
||||
applySettings(m_settings, true);
|
||||
}
|
||||
|
||||
bool FCDProInput::start()
|
||||
{
|
||||
qDebug() << "FCDProInput::start";
|
||||
|
||||
@@ -101,6 +101,7 @@ public:
|
||||
virtual ~FCDProInput();
|
||||
virtual void destroy();
|
||||
|
||||
virtual void init();
|
||||
virtual bool start();
|
||||
virtual void stop();
|
||||
|
||||
|
||||
@@ -84,6 +84,11 @@ bool FCDProPlusInput::openDevice()
|
||||
return true;
|
||||
}
|
||||
|
||||
void FCDProPlusInput::init()
|
||||
{
|
||||
applySettings(m_settings, true);
|
||||
}
|
||||
|
||||
bool FCDProPlusInput::start()
|
||||
{
|
||||
|
||||
|
||||
@@ -100,6 +100,7 @@ public:
|
||||
virtual ~FCDProPlusInput();
|
||||
virtual void destroy();
|
||||
|
||||
virtual void init();
|
||||
virtual bool start();
|
||||
virtual void stop();
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -226,6 +226,7 @@ public:
|
||||
virtual ~FileSourceInput();
|
||||
virtual void destroy();
|
||||
|
||||
virtual void init();
|
||||
virtual bool start();
|
||||
virtual void stop();
|
||||
|
||||
|
||||
@@ -119,6 +119,11 @@ bool HackRFInput::openDevice()
|
||||
return true;
|
||||
}
|
||||
|
||||
void HackRFInput::init()
|
||||
{
|
||||
applySettings(m_settings, true);
|
||||
}
|
||||
|
||||
bool HackRFInput::start()
|
||||
{
|
||||
// QMutexLocker mutexLocker(&m_mutex);
|
||||
|
||||
@@ -114,6 +114,7 @@ public:
|
||||
virtual ~HackRFInput();
|
||||
virtual void destroy();
|
||||
|
||||
virtual void init();
|
||||
virtual bool start();
|
||||
virtual void stop();
|
||||
|
||||
|
||||
@@ -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()) {
|
||||
|
||||
@@ -208,6 +208,7 @@ public:
|
||||
virtual ~LimeSDRInput();
|
||||
virtual void destroy();
|
||||
|
||||
virtual void init();
|
||||
virtual bool start();
|
||||
virtual void stop();
|
||||
|
||||
|
||||
@@ -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()) {
|
||||
|
||||
@@ -96,6 +96,7 @@ public:
|
||||
~PlutoSDRInput();
|
||||
virtual void destroy();
|
||||
|
||||
virtual void init();
|
||||
virtual bool start();
|
||||
virtual void stop();
|
||||
|
||||
|
||||
@@ -173,6 +173,11 @@ bool RTLSDRInput::openDevice()
|
||||
return true;
|
||||
}
|
||||
|
||||
void RTLSDRInput::init()
|
||||
{
|
||||
applySettings(m_settings, true);
|
||||
}
|
||||
|
||||
bool RTLSDRInput::start()
|
||||
{
|
||||
QMutexLocker mutexLocker(&m_mutex);
|
||||
|
||||
@@ -95,6 +95,7 @@ public:
|
||||
virtual ~RTLSDRInput();
|
||||
virtual void destroy();
|
||||
|
||||
virtual void init();
|
||||
virtual bool start();
|
||||
virtual void stop();
|
||||
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -326,6 +326,7 @@ public:
|
||||
virtual ~SDRdaemonSourceInput();
|
||||
virtual void destroy();
|
||||
|
||||
virtual void init();
|
||||
virtual bool start();
|
||||
virtual void stop();
|
||||
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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);
|
||||
qDebug("SDRdaemonSourceUDPHandler::processData: m_samplerate: %u m_centerFrequency: %u kHz", m_samplerate, m_centerFrequency);
|
||||
|
||||
m_outputMessageQueueToGUI->push(report);
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -132,6 +132,7 @@ public:
|
||||
virtual ~SDRPlayInput();
|
||||
virtual void destroy();
|
||||
|
||||
virtual void init();
|
||||
virtual bool start();
|
||||
virtual void stop();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user