1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2025-09-03 21:57:51 -04: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; 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 SamplingDevices enumSampleSinks();
virtual PluginInstanceUI* createSampleSinkPluginInstanceGUI(const QString& sinkId, QWidget **widget, DeviceSinkAPI *deviceAPI); 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_hardwareID;
static const QString m_deviceTypeID; static const QString m_deviceTypeID;

View File

@ -65,7 +65,7 @@ FileSinkGui::FileSinkGui(DeviceSinkAPI *deviceAPI, QWidget* parent) :
displaySettings(); 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())); connect(m_deviceSampleSink->getOutputMessageQueueToGUI(), SIGNAL(messageEnqueued()), this, SLOT(handleSinkMessages()));
m_deviceAPI->setSink(m_deviceSampleSink); 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::MsgReportFileSinkGeneration, Message)
MESSAGE_CLASS_DEFINITION(FileSinkOutput::MsgReportFileSinkStreamTiming, Message) MESSAGE_CLASS_DEFINITION(FileSinkOutput::MsgReportFileSinkStreamTiming, Message)
FileSinkOutput::FileSinkOutput(DeviceSinkAPI *deviceAPI, const QTimer& masterTimer) : FileSinkOutput::FileSinkOutput(DeviceSinkAPI *deviceAPI) :
m_deviceAPI(deviceAPI), m_deviceAPI(deviceAPI),
m_settings(), m_settings(),
m_fileSinkThread(0), m_fileSinkThread(0),
m_deviceDescription("FileSink"), m_deviceDescription("FileSink"),
m_fileName("./test.sdriq"), m_fileName("./test.sdriq"),
m_startingTimeStamp(0), 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 ~FileSinkOutput();
virtual bool start(); virtual bool start();

View File

@ -82,3 +82,18 @@ PluginInstanceUI* FileSinkPlugin::createSampleSinkPluginInstanceGUI(const QStrin
return 0; 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 SamplingDevices enumSampleSinks();
virtual PluginInstanceUI* createSampleSinkPluginInstanceGUI(const QString& sinkId, QWidget **widget, DeviceSinkAPI *deviceAPI); 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_hardwareID;
static const QString m_deviceTypeID; static const QString m_deviceTypeID;

View File

@ -129,3 +129,19 @@ PluginInstanceUI* HackRFOutputPlugin::createSampleSinkPluginInstanceGUI(const QS
return 0; 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 SamplingDevices enumSampleSinks();
virtual PluginInstanceUI* createSampleSinkPluginInstanceGUI(const QString& sinkId, QWidget **widget, DeviceSinkAPI *deviceAPI); 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_hardwareID;
static const QString m_deviceTypeID; 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 SamplingDevices enumSampleSinks();
virtual PluginInstanceUI* createSampleSinkPluginInstanceGUI(const QString& sinkId, QWidget **widget, DeviceSinkAPI *deviceAPI); 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_hardwareID;
static const QString m_deviceTypeID; 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())); connect(&m_statusTimer, SIGNAL(timeout()), this, SLOT(updateStatus()));
m_statusTimer.start(500); 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())); connect(m_deviceSampleSink->getOutputMessageQueueToGUI(), SIGNAL(messageEnqueued()), this, SLOT(handleSinkMessages()));
m_deviceAPI->setSink(m_deviceSampleSink); 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::MsgConfigureSDRdaemonSinkChunkCorrection, Message)
MESSAGE_CLASS_DEFINITION(SDRdaemonSinkOutput::MsgReportSDRdaemonSinkStreamTiming, Message) MESSAGE_CLASS_DEFINITION(SDRdaemonSinkOutput::MsgReportSDRdaemonSinkStreamTiming, Message)
SDRdaemonSinkOutput::SDRdaemonSinkOutput(DeviceSinkAPI *deviceAPI, const QTimer& masterTimer) : SDRdaemonSinkOutput::SDRdaemonSinkOutput(DeviceSinkAPI *deviceAPI) :
m_deviceAPI(deviceAPI), m_deviceAPI(deviceAPI),
m_settings(), m_settings(),
m_sdrDaemonSinkThread(0), m_sdrDaemonSinkThread(0),
m_deviceDescription("SDRdaemonSink"), m_deviceDescription("SDRdaemonSink"),
m_startingTimeStamp(0), 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 ~SDRdaemonSinkOutput();
virtual bool start(); virtual bool start();

View File

@ -83,3 +83,17 @@ PluginInstanceUI* SDRdaemonSinkPlugin::createSampleSinkPluginInstanceGUI(const Q
return 0; 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 SamplingDevices enumSampleSinks();
virtual PluginInstanceUI* createSampleSinkPluginInstanceGUI(const QString& sinkId, QWidget **widget, DeviceSinkAPI *deviceAPI); 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_hardwareID;
static const QString m_deviceTypeID; static const QString m_deviceTypeID;

View File

@ -24,6 +24,7 @@
#include "mainwindow.h" #include "mainwindow.h"
#include "settings/preset.h" #include "settings/preset.h"
// TODO: extract GUI dependencies in a separate object
DeviceSinkAPI::DeviceSinkAPI(MainWindow *mainWindow, DeviceSinkAPI::DeviceSinkAPI(MainWindow *mainWindow,
int deviceTabIndex, int deviceTabIndex,
DSPDeviceSinkEngine *deviceSinkEngine, DSPDeviceSinkEngine *deviceSinkEngine,
@ -37,7 +38,8 @@ DeviceSinkAPI::DeviceSinkAPI(MainWindow *mainWindow,
m_sampleSinkSequence(0), m_sampleSinkSequence(0),
m_sampleSinkPluginInstanceUI(0), m_sampleSinkPluginInstanceUI(0),
m_buddySharedPtr(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; } bool isBuddyLeader() const { return m_isBuddyLeader; }
void setBuddyLeader(bool isBuddyLeader) { m_isBuddyLeader = isBuddyLeader; } void setBuddyLeader(bool isBuddyLeader) { m_isBuddyLeader = isBuddyLeader; }
const QTimer& getMasterTimer() const { return m_masterTimer; }
protected: protected:
struct ChannelInstanceRegistration struct ChannelInstanceRegistration
{ {
@ -149,6 +151,7 @@ protected:
std::vector<DeviceSinkAPI*> m_sinkBuddies; //!< Device sink APIs referencing the same physical device std::vector<DeviceSinkAPI*> m_sinkBuddies; //!< Device sink APIs referencing the same physical device
void *m_buddySharedPtr; void *m_buddySharedPtr;
bool m_isBuddyLeader; bool m_isBuddyLeader;
const QTimer& m_masterTimer;
friend class MainWindow; friend class MainWindow;
friend class DeviceSourceAPI; friend class DeviceSourceAPI;