1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2025-02-03 09:44:01 -05:00

Output core creation method implementation in all sink plugins

This commit is contained in:
f4exb 2017-09-14 13:55:57 +02:00
parent aa5c6c59a5
commit 3cddc772b1
18 changed files with 92 additions and 9 deletions

View File

@ -90,3 +90,17 @@ PluginInstanceUI* BladerfOutputPlugin::createSampleSinkPluginInstanceGUI(const Q
return 0;
}
}
DeviceSampleSink* BladerfOutputPlugin::createSampleSinkPluginInstanceOutput(const QString& sinkId, DeviceSinkAPI *deviceAPI)
{
if(sinkId == m_deviceTypeID)
{
BladerfOutput* output = new BladerfOutput(deviceAPI);
return output;
}
else
{
return 0;
}
}

View File

@ -37,6 +37,7 @@ public:
virtual SamplingDevices enumSampleSinks();
virtual PluginInstanceUI* createSampleSinkPluginInstanceGUI(const QString& sinkId, QWidget **widget, DeviceSinkAPI *deviceAPI);
virtual DeviceSampleSink* createSampleSinkPluginInstanceOutput(const QString& sinkId, DeviceSinkAPI *deviceAPI);
static const QString m_hardwareID;
static const QString m_deviceTypeID;

View File

@ -65,7 +65,7 @@ FileSinkGui::FileSinkGui(DeviceSinkAPI *deviceAPI, QWidget* parent) :
displaySettings();
m_deviceSampleSink = new FileSinkOutput(m_deviceAPI, m_deviceAPI->getMainWindow()->getMasterTimer());
m_deviceSampleSink = new FileSinkOutput(m_deviceAPI);
connect(m_deviceSampleSink->getOutputMessageQueueToGUI(), SIGNAL(messageEnqueued()), this, SLOT(handleSinkMessages()));
m_deviceAPI->setSink(m_deviceSampleSink);

View File

@ -36,14 +36,14 @@ MESSAGE_CLASS_DEFINITION(FileSinkOutput::MsgConfigureFileSinkStreamTiming, Messa
MESSAGE_CLASS_DEFINITION(FileSinkOutput::MsgReportFileSinkGeneration, Message)
MESSAGE_CLASS_DEFINITION(FileSinkOutput::MsgReportFileSinkStreamTiming, Message)
FileSinkOutput::FileSinkOutput(DeviceSinkAPI *deviceAPI, const QTimer& masterTimer) :
FileSinkOutput::FileSinkOutput(DeviceSinkAPI *deviceAPI) :
m_deviceAPI(deviceAPI),
m_settings(),
m_fileSinkThread(0),
m_deviceDescription("FileSink"),
m_fileName("./test.sdriq"),
m_startingTimeStamp(0),
m_masterTimer(masterTimer)
m_masterTimer(deviceAPI->getMasterTimer())
{
}

View File

@ -148,7 +148,7 @@ public:
{ }
};
FileSinkOutput(DeviceSinkAPI *deviceAPI, const QTimer& masterTimer);
FileSinkOutput(DeviceSinkAPI *deviceAPI);
virtual ~FileSinkOutput();
virtual bool start();

View File

@ -82,3 +82,18 @@ PluginInstanceUI* FileSinkPlugin::createSampleSinkPluginInstanceGUI(const QStrin
return 0;
}
}
DeviceSampleSink* FileSinkPlugin::createSampleSinkPluginInstanceOutput(const QString& sinkId, DeviceSinkAPI *deviceAPI)
{
if(sinkId == m_deviceTypeID)
{
FileSinkOutput* output = new FileSinkOutput(deviceAPI);
return output;
}
else
{
return 0;
}
}

View File

@ -38,6 +38,7 @@ public:
virtual SamplingDevices enumSampleSinks();
virtual PluginInstanceUI* createSampleSinkPluginInstanceGUI(const QString& sinkId, QWidget **widget, DeviceSinkAPI *deviceAPI);
virtual DeviceSampleSink* createSampleSinkPluginInstanceOutput(const QString& sinkId, DeviceSinkAPI *deviceAPI);
static const QString m_hardwareID;
static const QString m_deviceTypeID;

View File

@ -129,3 +129,19 @@ PluginInstanceUI* HackRFOutputPlugin::createSampleSinkPluginInstanceGUI(const QS
return 0;
}
}
DeviceSampleSink* HackRFOutputPlugin::createSampleSinkPluginInstanceOutput(const QString& sinkId, DeviceSinkAPI *deviceAPI)
{
if(sinkId == m_deviceTypeID)
{
HackRFOutput* output = new HackRFOutput(deviceAPI);
return output;
}
else
{
return 0;
}
}

View File

@ -37,6 +37,7 @@ public:
virtual SamplingDevices enumSampleSinks();
virtual PluginInstanceUI* createSampleSinkPluginInstanceGUI(const QString& sinkId, QWidget **widget, DeviceSinkAPI *deviceAPI);
virtual DeviceSampleSink* createSampleSinkPluginInstanceOutput(const QString& sinkId, DeviceSinkAPI *deviceAPI);
static const QString m_hardwareID;
static const QString m_deviceTypeID;

View File

@ -128,3 +128,17 @@ bool LimeSDROutputPlugin::findSerial(const char *lmsInfoStr, std::string& serial
}
}
DeviceSampleSink* LimeSDROutputPlugin::createSampleSinkPluginInstanceOutput(const QString& sinkId, DeviceSinkAPI *deviceAPI)
{
if(sinkId == m_deviceTypeID)
{
LimeSDROutput* output = new LimeSDROutput(deviceAPI);
return output;
}
else
{
return 0;
}
}

View File

@ -37,6 +37,7 @@ public:
virtual SamplingDevices enumSampleSinks();
virtual PluginInstanceUI* createSampleSinkPluginInstanceGUI(const QString& sinkId, QWidget **widget, DeviceSinkAPI *deviceAPI);
virtual DeviceSampleSink* createSampleSinkPluginInstanceOutput(const QString& sinkId, DeviceSinkAPI *deviceAPI);
static const QString m_hardwareID;
static const QString m_deviceTypeID;

View File

@ -83,7 +83,7 @@ SDRdaemonSinkGui::SDRdaemonSinkGui(DeviceSinkAPI *deviceAPI, QWidget* parent) :
connect(&m_statusTimer, SIGNAL(timeout()), this, SLOT(updateStatus()));
m_statusTimer.start(500);
m_deviceSampleSink = new SDRdaemonSinkOutput(m_deviceAPI, m_deviceAPI->getMainWindow()->getMasterTimer());
m_deviceSampleSink = new SDRdaemonSinkOutput(m_deviceAPI);
connect(m_deviceSampleSink->getOutputMessageQueueToGUI(), SIGNAL(messageEnqueued()), this, SLOT(handleSinkMessages()));
m_deviceAPI->setSink(m_deviceSampleSink);

View File

@ -35,13 +35,13 @@ MESSAGE_CLASS_DEFINITION(SDRdaemonSinkOutput::MsgConfigureSDRdaemonSinkStreamTim
MESSAGE_CLASS_DEFINITION(SDRdaemonSinkOutput::MsgConfigureSDRdaemonSinkChunkCorrection, Message)
MESSAGE_CLASS_DEFINITION(SDRdaemonSinkOutput::MsgReportSDRdaemonSinkStreamTiming, Message)
SDRdaemonSinkOutput::SDRdaemonSinkOutput(DeviceSinkAPI *deviceAPI, const QTimer& masterTimer) :
SDRdaemonSinkOutput::SDRdaemonSinkOutput(DeviceSinkAPI *deviceAPI) :
m_deviceAPI(deviceAPI),
m_settings(),
m_sdrDaemonSinkThread(0),
m_deviceDescription("SDRdaemonSink"),
m_startingTimeStamp(0),
m_masterTimer(masterTimer)
m_masterTimer(deviceAPI->getMasterTimer())
{
}

View File

@ -132,7 +132,7 @@ public:
{ }
};
SDRdaemonSinkOutput(DeviceSinkAPI *deviceAPI, const QTimer& masterTimer);
SDRdaemonSinkOutput(DeviceSinkAPI *deviceAPI);
virtual ~SDRdaemonSinkOutput();
virtual bool start();

View File

@ -83,3 +83,17 @@ PluginInstanceUI* SDRdaemonSinkPlugin::createSampleSinkPluginInstanceGUI(const Q
return 0;
}
}
DeviceSampleSink* SDRdaemonSinkPlugin::createSampleSinkPluginInstanceOutput(const QString& sinkId, DeviceSinkAPI *deviceAPI)
{
if(sinkId == m_deviceTypeID)
{
SDRdaemonSinkOutput* output = new SDRdaemonSinkOutput(deviceAPI);
return output;
}
else
{
return 0;
}
}

View File

@ -38,6 +38,7 @@ public:
virtual SamplingDevices enumSampleSinks();
virtual PluginInstanceUI* createSampleSinkPluginInstanceGUI(const QString& sinkId, QWidget **widget, DeviceSinkAPI *deviceAPI);
virtual DeviceSampleSink* createSampleSinkPluginInstanceOutput(const QString& sinkId, DeviceSinkAPI *deviceAPI);
static const QString m_hardwareID;
static const QString m_deviceTypeID;

View File

@ -24,6 +24,7 @@
#include "mainwindow.h"
#include "settings/preset.h"
// TODO: extract GUI dependencies in a separate object
DeviceSinkAPI::DeviceSinkAPI(MainWindow *mainWindow,
int deviceTabIndex,
DSPDeviceSinkEngine *deviceSinkEngine,
@ -37,7 +38,8 @@ DeviceSinkAPI::DeviceSinkAPI(MainWindow *mainWindow,
m_sampleSinkSequence(0),
m_sampleSinkPluginInstanceUI(0),
m_buddySharedPtr(0),
m_isBuddyLeader(false)
m_isBuddyLeader(false),
m_masterTimer(mainWindow->getMasterTimer()) // TODO: get master timer directly not from main window
{
}

View File

@ -101,6 +101,8 @@ public:
bool isBuddyLeader() const { return m_isBuddyLeader; }
void setBuddyLeader(bool isBuddyLeader) { m_isBuddyLeader = isBuddyLeader; }
const QTimer& getMasterTimer() const { return m_masterTimer; }
protected:
struct ChannelInstanceRegistration
{
@ -149,6 +151,7 @@ protected:
std::vector<DeviceSinkAPI*> m_sinkBuddies; //!< Device sink APIs referencing the same physical device
void *m_buddySharedPtr;
bool m_isBuddyLeader;
const QTimer& m_masterTimer;
friend class MainWindow;
friend class DeviceSourceAPI;