mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-09-06 07:07:48 -04:00
Multi device support: completely removed DSPEngine dependency on DSPDeviceEngine message queues
This commit is contained in:
parent
7707858d57
commit
f4c03bcab1
@ -52,7 +52,7 @@ SDRdaemonInput::SDRdaemonInput(const QTimer& masterTimer, PluginAPI *pluginAPI)
|
|||||||
m_autoCorrBuffer(false)
|
m_autoCorrBuffer(false)
|
||||||
{
|
{
|
||||||
m_sampleFifo.setSize(96000 * 4);
|
m_sampleFifo.setSize(96000 * 4);
|
||||||
m_SDRdaemonUDPHandler = new SDRdaemonUDPHandler(&m_sampleFifo, getOutputMessageQueueToGUI());
|
m_SDRdaemonUDPHandler = new SDRdaemonUDPHandler(&m_sampleFifo, getOutputMessageQueueToGUI(), m_pluginAPI);
|
||||||
m_SDRdaemonUDPHandler->connectTimer(&m_masterTimer);
|
m_SDRdaemonUDPHandler->connectTimer(&m_masterTimer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,12 +18,15 @@
|
|||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#include "plugin/pluginapi.h"
|
||||||
#include "dsp/dspcommands.h"
|
#include "dsp/dspcommands.h"
|
||||||
#include "dsp/dspengine.h"
|
#include "dsp/dspengine.h"
|
||||||
#include "sdrdaemonudphandler.h"
|
#include "sdrdaemonudphandler.h"
|
||||||
#include "sdrdaemoninput.h"
|
#include "sdrdaemoninput.h"
|
||||||
|
|
||||||
SDRdaemonUDPHandler::SDRdaemonUDPHandler(SampleFifo *sampleFifo, MessageQueue *outputMessageQueueToGUI) :
|
SDRdaemonUDPHandler::SDRdaemonUDPHandler(SampleFifo *sampleFifo, MessageQueue *outputMessageQueueToGUI, PluginAPI *pluginAPI) :
|
||||||
|
m_pluginAPI(pluginAPI),
|
||||||
m_sdrDaemonBuffer(m_rateDivider),
|
m_sdrDaemonBuffer(m_rateDivider),
|
||||||
m_dataSocket(0),
|
m_dataSocket(0),
|
||||||
m_dataAddress(QHostAddress::LocalHost),
|
m_dataAddress(QHostAddress::LocalHost),
|
||||||
@ -88,7 +91,7 @@ void SDRdaemonUDPHandler::start()
|
|||||||
|
|
||||||
// Need to notify the DSP engine to actually 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
|
DSPSignalNotification *notif = new DSPSignalNotification(m_samplerate, m_centerFrequency * 1000); // Frequency in Hz for the DSP engine
|
||||||
DSPEngine::instance()->getInputMessageQueue()->push(notif);
|
m_pluginAPI->getDeviceInputMessageQueue()->push(notif);
|
||||||
m_elapsedTimer.start();
|
m_elapsedTimer.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -169,7 +172,7 @@ void SDRdaemonUDPHandler::processData()
|
|||||||
if (change)
|
if (change)
|
||||||
{
|
{
|
||||||
DSPSignalNotification *notif = new DSPSignalNotification(m_samplerate, m_centerFrequency * 1000); // Frequency in Hz for the DSP engine
|
DSPSignalNotification *notif = new DSPSignalNotification(m_samplerate, m_centerFrequency * 1000); // Frequency in Hz for the DSP engine
|
||||||
DSPEngine::instance()->getInputMessageQueue()->push(notif);
|
m_pluginAPI->getDeviceInputMessageQueue()->push(notif);
|
||||||
SDRdaemonInput::MsgReportSDRdaemonStreamData *report = SDRdaemonInput::MsgReportSDRdaemonStreamData::create(
|
SDRdaemonInput::MsgReportSDRdaemonStreamData *report = SDRdaemonInput::MsgReportSDRdaemonStreamData::create(
|
||||||
m_sdrDaemonBuffer.getSampleRateStream(),
|
m_sdrDaemonBuffer.getSampleRateStream(),
|
||||||
m_samplerate,
|
m_samplerate,
|
||||||
|
@ -30,12 +30,13 @@
|
|||||||
class SampleFifo;
|
class SampleFifo;
|
||||||
class MessageQueue;
|
class MessageQueue;
|
||||||
class QTimer;
|
class QTimer;
|
||||||
|
class PluginAPI;
|
||||||
|
|
||||||
class SDRdaemonUDPHandler : public QObject
|
class SDRdaemonUDPHandler : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
SDRdaemonUDPHandler(SampleFifo* sampleFifo, MessageQueue *outputMessageQueueToGUI);
|
SDRdaemonUDPHandler(SampleFifo* sampleFifo, MessageQueue *outputMessageQueueToGUI, PluginAPI *pluginAPI);
|
||||||
~SDRdaemonUDPHandler();
|
~SDRdaemonUDPHandler();
|
||||||
void connectTimer(const QTimer* timer);
|
void connectTimer(const QTimer* timer);
|
||||||
void start();
|
void start();
|
||||||
@ -49,6 +50,7 @@ public slots:
|
|||||||
void dataReadyRead();
|
void dataReadyRead();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
PluginAPI *m_pluginAPI;
|
||||||
SDRdaemonBuffer m_sdrDaemonBuffer;
|
SDRdaemonBuffer m_sdrDaemonBuffer;
|
||||||
QUdpSocket *m_dataSocket;
|
QUdpSocket *m_dataSocket;
|
||||||
QHostAddress m_dataAddress;
|
QHostAddress m_dataAddress;
|
||||||
|
@ -44,11 +44,6 @@ DSPEngine *DSPEngine::instance()
|
|||||||
return dspEngine;
|
return dspEngine;
|
||||||
}
|
}
|
||||||
|
|
||||||
MessageQueue* DSPEngine::getInputMessageQueue(uint deviceIndex)
|
|
||||||
{
|
|
||||||
return m_deviceEngines[deviceIndex]->getInputMessageQueue();
|
|
||||||
}
|
|
||||||
|
|
||||||
void DSPEngine::stopAllAcquisitions()
|
void DSPEngine::stopAllAcquisitions()
|
||||||
{
|
{
|
||||||
std::vector<DSPDeviceEngine*>::iterator it = m_deviceEngines.begin();
|
std::vector<DSPDeviceEngine*>::iterator it = m_deviceEngines.begin();
|
||||||
|
@ -38,8 +38,6 @@ public:
|
|||||||
|
|
||||||
static DSPEngine *instance();
|
static DSPEngine *instance();
|
||||||
|
|
||||||
MessageQueue* getInputMessageQueue(uint deviceIndex = 0);
|
|
||||||
|
|
||||||
uint getAudioSampleRate() const { return m_audioSampleRate; }
|
uint getAudioSampleRate() const { return m_audioSampleRate; }
|
||||||
|
|
||||||
void stopAllAcquisitions();
|
void stopAllAcquisitions();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user