From 3cddc772b15b155f1321f8a4b8b55c9ad78e0503 Mon Sep 17 00:00:00 2001 From: f4exb Date: Thu, 14 Sep 2017 13:55:57 +0200 Subject: [PATCH] Output core creation method implementation in all sink plugins --- .../bladerfoutput/bladerfoutputplugin.cpp | 14 ++++++++++++++ .../bladerfoutput/bladerfoutputplugin.h | 1 + plugins/samplesink/filesink/filesinkgui.cpp | 2 +- plugins/samplesink/filesink/filesinkoutput.cpp | 4 ++-- plugins/samplesink/filesink/filesinkoutput.h | 2 +- plugins/samplesink/filesink/filesinkplugin.cpp | 15 +++++++++++++++ plugins/samplesink/filesink/filesinkplugin.h | 1 + .../hackrfoutput/hackrfoutputplugin.cpp | 16 ++++++++++++++++ .../samplesink/hackrfoutput/hackrfoutputplugin.h | 1 + .../limesdroutput/limesdroutputplugin.cpp | 14 ++++++++++++++ .../limesdroutput/limesdroutputplugin.h | 1 + .../sdrdaemonsink/sdrdaemonsinkgui.cpp | 2 +- .../sdrdaemonsink/sdrdaemonsinkoutput.cpp | 4 ++-- .../sdrdaemonsink/sdrdaemonsinkoutput.h | 2 +- .../sdrdaemonsink/sdrdaemonsinkplugin.cpp | 14 ++++++++++++++ .../sdrdaemonsink/sdrdaemonsinkplugin.h | 1 + sdrbase/device/devicesinkapi.cpp | 4 +++- sdrbase/device/devicesinkapi.h | 3 +++ 18 files changed, 92 insertions(+), 9 deletions(-) diff --git a/plugins/samplesink/bladerfoutput/bladerfoutputplugin.cpp b/plugins/samplesink/bladerfoutput/bladerfoutputplugin.cpp index 9c69a8dcc..7af7a8ec0 100644 --- a/plugins/samplesink/bladerfoutput/bladerfoutputplugin.cpp +++ b/plugins/samplesink/bladerfoutput/bladerfoutputplugin.cpp @@ -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; + } + +} diff --git a/plugins/samplesink/bladerfoutput/bladerfoutputplugin.h b/plugins/samplesink/bladerfoutput/bladerfoutputplugin.h index 7bcf08e83..3126667cc 100644 --- a/plugins/samplesink/bladerfoutput/bladerfoutputplugin.h +++ b/plugins/samplesink/bladerfoutput/bladerfoutputplugin.h @@ -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; diff --git a/plugins/samplesink/filesink/filesinkgui.cpp b/plugins/samplesink/filesink/filesinkgui.cpp index 8f6ffcea3..695c27120 100644 --- a/plugins/samplesink/filesink/filesinkgui.cpp +++ b/plugins/samplesink/filesink/filesinkgui.cpp @@ -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); diff --git a/plugins/samplesink/filesink/filesinkoutput.cpp b/plugins/samplesink/filesink/filesinkoutput.cpp index d52b20516..3f7ad4a89 100644 --- a/plugins/samplesink/filesink/filesinkoutput.cpp +++ b/plugins/samplesink/filesink/filesinkoutput.cpp @@ -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()) { } diff --git a/plugins/samplesink/filesink/filesinkoutput.h b/plugins/samplesink/filesink/filesinkoutput.h index a4d911a16..f73900c09 100644 --- a/plugins/samplesink/filesink/filesinkoutput.h +++ b/plugins/samplesink/filesink/filesinkoutput.h @@ -148,7 +148,7 @@ public: { } }; - FileSinkOutput(DeviceSinkAPI *deviceAPI, const QTimer& masterTimer); + FileSinkOutput(DeviceSinkAPI *deviceAPI); virtual ~FileSinkOutput(); virtual bool start(); diff --git a/plugins/samplesink/filesink/filesinkplugin.cpp b/plugins/samplesink/filesink/filesinkplugin.cpp index 2eea6fbe3..b70155a6e 100644 --- a/plugins/samplesink/filesink/filesinkplugin.cpp +++ b/plugins/samplesink/filesink/filesinkplugin.cpp @@ -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; + } + +} + diff --git a/plugins/samplesink/filesink/filesinkplugin.h b/plugins/samplesink/filesink/filesinkplugin.h index 2ffe782b3..5beea7402 100644 --- a/plugins/samplesink/filesink/filesinkplugin.h +++ b/plugins/samplesink/filesink/filesinkplugin.h @@ -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; diff --git a/plugins/samplesink/hackrfoutput/hackrfoutputplugin.cpp b/plugins/samplesink/hackrfoutput/hackrfoutputplugin.cpp index c6e9acc43..f90a8a60e 100644 --- a/plugins/samplesink/hackrfoutput/hackrfoutputplugin.cpp +++ b/plugins/samplesink/hackrfoutput/hackrfoutputplugin.cpp @@ -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; + } + +} + + diff --git a/plugins/samplesink/hackrfoutput/hackrfoutputplugin.h b/plugins/samplesink/hackrfoutput/hackrfoutputplugin.h index 36bcd82d7..3bc320a12 100644 --- a/plugins/samplesink/hackrfoutput/hackrfoutputplugin.h +++ b/plugins/samplesink/hackrfoutput/hackrfoutputplugin.h @@ -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; diff --git a/plugins/samplesink/limesdroutput/limesdroutputplugin.cpp b/plugins/samplesink/limesdroutput/limesdroutputplugin.cpp index f580cf5fe..1bff816a6 100644 --- a/plugins/samplesink/limesdroutput/limesdroutputplugin.cpp +++ b/plugins/samplesink/limesdroutput/limesdroutputplugin.cpp @@ -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; + } + +} + diff --git a/plugins/samplesink/limesdroutput/limesdroutputplugin.h b/plugins/samplesink/limesdroutput/limesdroutputplugin.h index deeacd63b..0fbbc40f5 100644 --- a/plugins/samplesink/limesdroutput/limesdroutputplugin.h +++ b/plugins/samplesink/limesdroutput/limesdroutputplugin.h @@ -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; diff --git a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.cpp b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.cpp index 8ff0cb53b..58d114243 100644 --- a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.cpp +++ b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.cpp @@ -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); diff --git a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.cpp b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.cpp index 70bcce5f7..cca653db5 100644 --- a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.cpp +++ b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.cpp @@ -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()) { } diff --git a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.h b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.h index 8ec84a054..8c5016272 100644 --- a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.h +++ b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.h @@ -132,7 +132,7 @@ public: { } }; - SDRdaemonSinkOutput(DeviceSinkAPI *deviceAPI, const QTimer& masterTimer); + SDRdaemonSinkOutput(DeviceSinkAPI *deviceAPI); virtual ~SDRdaemonSinkOutput(); virtual bool start(); diff --git a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkplugin.cpp b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkplugin.cpp index ea0f3c0e7..58526827d 100644 --- a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkplugin.cpp +++ b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkplugin.cpp @@ -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; + } + +} diff --git a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkplugin.h b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkplugin.h index b5b3097ba..07c3dbfba 100644 --- a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkplugin.h +++ b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkplugin.h @@ -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; diff --git a/sdrbase/device/devicesinkapi.cpp b/sdrbase/device/devicesinkapi.cpp index 4c2bddf68..0a448d092 100644 --- a/sdrbase/device/devicesinkapi.cpp +++ b/sdrbase/device/devicesinkapi.cpp @@ -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 { } diff --git a/sdrbase/device/devicesinkapi.h b/sdrbase/device/devicesinkapi.h index b6eff9028..4651c3d7e 100644 --- a/sdrbase/device/devicesinkapi.h +++ b/sdrbase/device/devicesinkapi.h @@ -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 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;