mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-09-04 14:17:50 -04:00
Output core creation method implementation in all sink plugins
This commit is contained in:
parent
aa5c6c59a5
commit
3cddc772b1
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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())
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -148,7 +148,7 @@ public:
|
|||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
|
||||||
FileSinkOutput(DeviceSinkAPI *deviceAPI, const QTimer& masterTimer);
|
FileSinkOutput(DeviceSinkAPI *deviceAPI);
|
||||||
virtual ~FileSinkOutput();
|
virtual ~FileSinkOutput();
|
||||||
|
|
||||||
virtual bool start();
|
virtual bool start();
|
||||||
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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())
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -132,7 +132,7 @@ public:
|
|||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
|
||||||
SDRdaemonSinkOutput(DeviceSinkAPI *deviceAPI, const QTimer& masterTimer);
|
SDRdaemonSinkOutput(DeviceSinkAPI *deviceAPI);
|
||||||
virtual ~SDRdaemonSinkOutput();
|
virtual ~SDRdaemonSinkOutput();
|
||||||
|
|
||||||
virtual bool start();
|
virtual bool start();
|
||||||
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
@ -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;
|
||||||
|
@ -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
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user