Tx support: interim state (1)

pull/27/head
f4exb 2016-12-29 12:41:10 +01:00
rodzic ddb3c6909b
commit f68f949c19
34 zmienionych plików z 433 dodań i 37 usunięć

6
debian/changelog vendored
Wyświetl plik

@ -1,3 +1,9 @@
sdrangel (3.0.0-1) unstable; urgency=medium
* Implemented real Tx devices (BladeRF and HackRF) for real transmission
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 01 Jan 2017 23:14:18 +0100
sdrangel (2.5.2-1) unstable; urgency=medium
* Changed modulators source device feeding

Wyświetl plik

@ -10,6 +10,9 @@
const char *fcd_traits<Pro>::alsaDeviceName = "hw:CARD=V10";
const char *fcd_traits<ProPlus>::alsaDeviceName = "hw:CARD=V20";
const char *fcd_traits<Pro>::hardwareID = "FCDPro";
const char *fcd_traits<ProPlus>::hardwareID = "FCDPro+";
const char *fcd_traits<Pro>::interfaceIID = "sdrangel.samplesource.fcdpro";
const char *fcd_traits<ProPlus>::interfaceIID = "sdrangel.samplesource.fcdproplus";
@ -19,5 +22,5 @@ const char *fcd_traits<ProPlus>::displayedName = "FunCube Dongle Pro+";
const char *fcd_traits<Pro>::pluginDisplayedName = "FunCube Pro Input";
const char *fcd_traits<ProPlus>::pluginDisplayedName = "FunCube Pro+ Input";
const char *fcd_traits<Pro>::pluginVersion = "2.0.0";
const char *fcd_traits<ProPlus>::pluginVersion = "2.0.0";
const char *fcd_traits<Pro>::pluginVersion = "3.0.0";
const char *fcd_traits<ProPlus>::pluginVersion = "3.0.0";

Wyświetl plik

@ -25,6 +25,7 @@ struct fcd_traits
static const int convBufSize = (1<<11);
static const int fcdBufSize = (1<<12);
static const char *alsaDeviceName;
static const char *hardwareID;
static const char *interfaceIID;
static const char *displayedName;
static const char *pluginDisplayedName;
@ -40,6 +41,7 @@ struct fcd_traits<Pro>
static const int convBufSize = (1<<11);
static const int fcdBufSize = (1<<12);
static const char *alsaDeviceName;
static const char *hardwareID;
static const char *interfaceIID;
static const char *displayedName;
static const char *pluginDisplayedName;
@ -55,6 +57,7 @@ struct fcd_traits<ProPlus>
static const int convBufSize = (1<<12);
static const int fcdBufSize = (1<<18);
static const char *alsaDeviceName;
static const char *hardwareID;
static const char *interfaceIID;
static const char *displayedName;
static const char *pluginDisplayedName;
@ -62,6 +65,7 @@ struct fcd_traits<ProPlus>
};
template <fcd_type FCDType> const char *fcd_traits<FCDType>::alsaDeviceName = "";
template <fcd_type FCDType> const char *fcd_traits<FCDType>::hardwareID = "";
template <fcd_type FCDType> const char *fcd_traits<FCDType>::interfaceIID = "";
template <fcd_type FCDType> const char *fcd_traits<FCDType>::displayedName = "";
template <fcd_type FCDType> const char *fcd_traits<FCDType>::pluginDisplayedName = "";

Wyświetl plik

@ -1,4 +1,15 @@
project(samplesink)
find_package(LibUSB)
find_package(LibBLADERF)
if(LIBUSB_FOUND AND LIBBLADERF_FOUND)
add_subdirectory(bladerfoutput)
endif(LIBUSB_FOUND AND LIBBLADERF_FOUND)
if (BUILD_DEBIAN)
add_subdirectory(bladerfoutput)
endif (BUILD_DEBIAN)
add_subdirectory(filesink)

Wyświetl plik

@ -25,13 +25,14 @@
const PluginDescriptor FileSinkPlugin::m_pluginDescriptor = {
QString("File sink output"),
QString("2.2.1"),
QString("3.0.0"),
QString("(c) Edouard Griffiths, F4EXB"),
QString("https://github.com/f4exb/sdrangel"),
true,
QString("https://github.com/f4exb/sdrangel")
};
const QString FileSinkPlugin::m_hardwareID = "FileSink";
const QString FileSinkPlugin::m_deviceTypeID = FILESINK_DEVICE_TYPE_ID;
FileSinkPlugin::FileSinkPlugin(QObject* parent) :
@ -59,6 +60,7 @@ PluginInterface::SamplingDevices FileSinkPlugin::enumSampleSinks()
QString displayedName(QString("FileSink[%1]").arg(i));
result.append(SamplingDevice(displayedName,
m_hardwareID,
m_deviceTypeID,
QString::null,
i));

Wyświetl plik

@ -39,7 +39,8 @@ public:
virtual SamplingDevices enumSampleSinks();
virtual PluginGUI* createSampleSinkPluginGUI(const QString& sourceId, QWidget **widget, DeviceSinkAPI *deviceAPI);
static const QString m_deviceTypeID;
static const QString m_hardwareID;
static const QString m_deviceTypeID;
private:
static const PluginDescriptor m_pluginDescriptor;

Wyświetl plik

@ -27,13 +27,14 @@
const PluginDescriptor AirspyPlugin::m_pluginDescriptor = {
QString("Airspy Input"),
QString("2.0.0"),
QString("3.0.0"),
QString("(c) Edouard Griffiths, F4EXB"),
QString("https://github.com/f4exb/sdrangel"),
true,
QString("https://github.com/f4exb/sdrangel")
};
const QString AirspyPlugin::m_hardwareID = "Airspy";
const QString AirspyPlugin::m_deviceTypeID = AIRSPY_DEVICE_TYPE_ID;
AirspyPlugin::AirspyPlugin(QObject* parent) :
@ -95,6 +96,7 @@ PluginInterface::SamplingDevices AirspyPlugin::enumSampleSources()
QString displayedName(QString("Airspy[%1] %2").arg(i).arg(serial_str));
result.append(SamplingDevice(displayedName,
m_hardwareID,
m_deviceTypeID,
serial_str,
i));

Wyświetl plik

@ -38,7 +38,8 @@ public:
virtual SamplingDevices enumSampleSources();
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, QWidget **widget, DeviceSourceAPI *deviceAPI);
static const QString m_deviceTypeID;
static const QString m_hardwareID;
static const QString m_deviceTypeID;
private:
static const PluginDescriptor m_pluginDescriptor;

Wyświetl plik

@ -27,13 +27,14 @@
const PluginDescriptor BlderfInputPlugin::m_pluginDescriptor = {
QString("BladerRF Input"),
QString("2.0.0"),
QString("3.0.0"),
QString("(c) Edouard Griffiths, F4EXB"),
QString("https://github.com/f4exb/sdrangel"),
true,
QString("https://github.com/f4exb/sdrangel")
};
const QString BlderfInputPlugin::m_hardwareID = "BladeRF";
const QString BlderfInputPlugin::m_deviceTypeID = BLADERF_DEVICE_TYPE_ID;
BlderfInputPlugin::BlderfInputPlugin(QObject* parent) :
@ -63,6 +64,7 @@ PluginInterface::SamplingDevices BlderfInputPlugin::enumSampleSources()
QString displayedName(QString("BladeRF[%1] %2").arg(devinfo[i].instance).arg(devinfo[i].serial));
result.append(SamplingDevice(displayedName,
m_hardwareID,
m_deviceTypeID,
QString(devinfo[i].serial),
i));

Wyświetl plik

@ -38,7 +38,8 @@ public:
virtual SamplingDevices enumSampleSources();
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, QWidget **widget, DeviceSourceAPI *deviceAPI);
static const QString m_deviceTypeID;
static const QString m_hardwareID;
static const QString m_deviceTypeID;
private:
static const PluginDescriptor m_pluginDescriptor;

Wyświetl plik

@ -34,8 +34,6 @@ const PluginDescriptor FCDProPlugin::m_pluginDescriptor = {
QString("https://github.com/f4exb/sdrangel")
};
const QString FCDProPlugin::m_deviceTypeID = FCDPRO_DEVICE_TYPE_ID;
FCDProPlugin::FCDProPlugin(QObject* parent) :
QObject(parent)
{
@ -64,7 +62,8 @@ PluginInterface::SamplingDevices FCDProPlugin::enumSampleSources()
QString displayedName(QString("%1[%2] %3").arg(fcd_traits<Pro>::displayedName).arg(i).arg(serialNumber));
result.append(SamplingDevice(displayedName,
fcd_traits<Pro>::interfaceIID,
fcd_traits<Pro>::hardwareID,
fcd_traits<Pro>::interfaceIID,
serialNumber,
i));

Wyświetl plik

@ -22,8 +22,6 @@ public:
virtual SamplingDevices enumSampleSources();
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, QWidget **widget, DeviceSourceAPI *deviceAPI);
static const QString m_deviceTypeID;
private:
static const PluginDescriptor m_pluginDescriptor;
};

Wyświetl plik

@ -64,6 +64,7 @@ PluginInterface::SamplingDevices FCDProPlusPlugin::enumSampleSources()
QString displayedName(QString("%1[%2] %3").arg(fcd_traits<ProPlus>::displayedName).arg(i).arg(serialNumber));
result.append(SamplingDevice(displayedName,
fcd_traits<ProPlus>::hardwareID,
fcd_traits<ProPlus>::interfaceIID,
serialNumber,
i));

Wyświetl plik

@ -25,13 +25,14 @@
const PluginDescriptor FileSourcePlugin::m_pluginDescriptor = {
QString("File source input"),
QString("2.1.5"),
QString("3.0.0"),
QString("(c) Edouard Griffiths, F4EXB"),
QString("https://github.com/f4exb/sdrangel"),
true,
QString("https://github.com/f4exb/sdrangel")
};
const QString FileSourcePlugin::m_hardwareID = "FileSource";
const QString FileSourcePlugin::m_deviceTypeID = FILESOURCE_DEVICE_TYPE_ID;
FileSourcePlugin::FileSourcePlugin(QObject* parent) :
@ -59,6 +60,7 @@ PluginInterface::SamplingDevices FileSourcePlugin::enumSampleSources()
QString displayedName(QString("FileSource[%1]").arg(i));
result.append(SamplingDevice(displayedName,
m_hardwareID,
m_deviceTypeID,
QString::null,
i));

Wyświetl plik

@ -38,7 +38,8 @@ public:
virtual SamplingDevices enumSampleSources();
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, QWidget **widget, DeviceSourceAPI *deviceAPI);
static const QString m_deviceTypeID;
static const QString m_hardwareID;
static const QString m_deviceTypeID;
private:
static const PluginDescriptor m_pluginDescriptor;

Wyświetl plik

@ -29,13 +29,14 @@
const PluginDescriptor HackRFInputPlugin::m_pluginDescriptor = {
QString("HackRF Input"),
QString("2.0.0"),
QString("3.0.0"),
QString("(c) Edouard Griffiths, F4EXB"),
QString("https://github.com/f4exb/sdrangel"),
true,
QString("https://github.com/f4exb/sdrangel")
};
const QString HackRFInputPlugin::m_hardwareID = "HackRF";
const QString HackRFInputPlugin::m_deviceTypeID = HACKRF_DEVICE_TYPE_ID;
HackRFInputPlugin::HackRFInputPlugin(QObject* parent) :
@ -92,7 +93,9 @@ PluginInterface::SamplingDevices HackRFInputPlugin::enumSampleSources()
uint64_t serial_num = (((uint64_t) serial_msb)<<32) + serial_lsb;
QString displayedName(QString("HackRF[%1] %2").arg(i).arg(serial_str));
result.append(SamplingDevice(displayedName, m_deviceTypeID,
result.append(SamplingDevice(displayedName,
m_hardwareID,
m_deviceTypeID,
serial_str,
i));

Wyświetl plik

@ -38,7 +38,8 @@ public:
virtual SamplingDevices enumSampleSources();
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, QWidget **widget, DeviceSourceAPI *deviceAPI);
static const QString m_deviceTypeID;
static const QString m_hardwareID;
static const QString m_deviceTypeID;
private:
static const PluginDescriptor m_pluginDescriptor;

Wyświetl plik

@ -11,13 +11,14 @@
const PluginDescriptor RTLSDRPlugin::m_pluginDescriptor = {
QString("RTL-SDR Input"),
QString("2.1.6"),
QString("3.0.0"),
QString("(c) Edouard Griffiths, F4EXB"),
QString("https://github.com/f4exb/sdrangel"),
true,
QString("https://github.com/f4exb/sdrangel")
};
const QString RTLSDRPlugin::m_hardwareID = "RTLSDR";
const QString RTLSDRPlugin::m_deviceTypeID = RTLSDR_DEVICE_TYPE_ID;
RTLSDRPlugin::RTLSDRPlugin(QObject* parent) :
@ -53,6 +54,7 @@ PluginInterface::SamplingDevices RTLSDRPlugin::enumSampleSources()
QString displayedName(QString("RTL-SDR[%1] %2").arg(i).arg(serial));
result.append(SamplingDevice(displayedName,
m_hardwareID,
m_deviceTypeID,
QString(serial),
i));

Wyświetl plik

@ -22,7 +22,8 @@ public:
virtual SamplingDevices enumSampleSources();
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, QWidget **widget, DeviceSourceAPI *deviceAPI);
static const QString m_deviceTypeID;
static const QString m_hardwareID;
static const QString m_deviceTypeID;
private:
static const PluginDescriptor m_pluginDescriptor;

Wyświetl plik

@ -25,13 +25,14 @@
const PluginDescriptor SDRdaemonPlugin::m_pluginDescriptor = {
QString("SDRdaemon input"),
QString("2.0.0"),
QString("3.0.0"),
QString("(c) Edouard Griffiths, F4EXB"),
QString("https://github.com/f4exb/sdrangel"),
true,
QString("https://github.com/f4exb/sdrangel")
};
const QString SDRdaemonPlugin::m_hardwareID = "SDRdaemon";
const QString SDRdaemonPlugin::m_deviceTypeID = SDRDAEMON_DEVICE_TYPE_ID;
SDRdaemonPlugin::SDRdaemonPlugin(QObject* parent) :
@ -59,6 +60,7 @@ PluginInterface::SamplingDevices SDRdaemonPlugin::enumSampleSources()
QString displayedName(QString("SDRdaemon[%1]").arg(i));
result.append(SamplingDevice(displayedName,
m_hardwareID,
m_deviceTypeID,
QString::null,
i));

Wyświetl plik

@ -38,7 +38,8 @@ public:
virtual SamplingDevices enumSampleSources();
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, QWidget **widget, DeviceSourceAPI *deviceAPI);
static const QString m_deviceTypeID;
static const QString m_hardwareID;
static const QString m_deviceTypeID;
private:
static const PluginDescriptor m_pluginDescriptor;

Wyświetl plik

@ -27,13 +27,14 @@
const PluginDescriptor SDRdaemonFECPlugin::m_pluginDescriptor = {
QString("SDRdaemon with FEC input"),
QString("2.1.0"),
QString("3.0.0"),
QString("(c) Edouard Griffiths, F4EXB"),
QString("https://github.com/f4exb/sdrangel"),
true,
QString("https://github.com/f4exb/sdrangel")
};
const QString SDRdaemonFECPlugin::m_hardwareID = "SDRdaemonFEC";
const QString SDRdaemonFECPlugin::m_deviceTypeID = SDRDAEMONFEC_DEVICE_TYPE_ID;
SDRdaemonFECPlugin::SDRdaemonFECPlugin(QObject* parent) :
@ -61,6 +62,7 @@ PluginInterface::SamplingDevices SDRdaemonFECPlugin::enumSampleSources()
QString displayedName(QString("SDRdaemonFEC[%1]").arg(i));
result.append(SamplingDevice(displayedName,
m_hardwareID,
m_deviceTypeID,
QString::null,
i));

Wyświetl plik

@ -38,7 +38,8 @@ public:
virtual SamplingDevices enumSampleSources();
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, QWidget **widget, DeviceSourceAPI *deviceAPI);
static const QString m_deviceTypeID;
static const QString m_hardwareID;
static const QString m_deviceTypeID;
private:
static const PluginDescriptor m_pluginDescriptor;

Wyświetl plik

@ -24,14 +24,15 @@
#include <device/devicesourceapi.h>
const PluginDescriptor SDRPlayPlugin::m_pluginDescriptor = {
QString("SDRPlay Input"),
QString("2.3.0"),
QString("SDRPlay RSP1 Input"),
QString("3.0.0"),
QString("(c) Edouard Griffiths, F4EXB"),
QString("https://github.com/f4exb/sdrangel"),
true,
QString("https://github.com/f4exb/sdrangel")
};
const QString SDRPlayPlugin::m_hardwareID = "SDRplay1";
const QString SDRPlayPlugin::m_deviceTypeID = SDRPLAY_DEVICE_TYPE_ID;
SDRPlayPlugin::SDRPlayPlugin(QObject* parent) :
@ -73,6 +74,7 @@ PluginInterface::SamplingDevices SDRPlayPlugin::enumSampleSources()
QString displayedName(QString("SDRPlay[%1] %2").arg(i).arg(serial));
result.append(SamplingDevice(displayedName,
m_hardwareID,
m_deviceTypeID,
QString(serial),
i));

Wyświetl plik

@ -38,6 +38,7 @@ public:
virtual SamplingDevices enumSampleSources();
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, QWidget **widget, DeviceSourceAPI *deviceAPI);
static const QString m_hardwareID;
static const QString m_deviceTypeID;
private:

Wyświetl plik

@ -15,6 +15,7 @@
///////////////////////////////////////////////////////////////////////////////////
#include "device/devicesinkapi.h"
#include "device/devicesourceapi.h"
#include "plugin/plugingui.h"
#include "plugin/pluginapi.h"
#include "plugin/plugininterface.h"
@ -146,6 +147,11 @@ void DeviceSinkAPI::setOutputGUI(QWidget* outputGUI, const QString& sinkDisplayN
m_mainWindow->setDeviceGUI(m_deviceTabIndex, outputGUI, sinkDisplayName, false);
}
void DeviceSinkAPI::setHardwareId(const QString& id)
{
m_hardwareId = id;
}
void DeviceSinkAPI::setSampleSinkId(const QString& id)
{
m_sampleSinkId = id;
@ -377,4 +383,107 @@ bool DeviceSinkAPI::ChannelInstanceRegistration::operator<(const ChannelInstance
}
}
void DeviceSinkAPI::addSourceBuddy(DeviceSourceAPI* buddy)
{
std::vector<DeviceSourceAPI*>::iterator it = m_sourceBuddies.begin();
for (;it != m_sourceBuddies.end(); ++it)
{
if (((*it)->getHardwareId() == buddy->getHardwareId()) &&
((*it)->getSampleSourceSerial() == buddy->getSampleSourceSerial()))
{
qDebug("DeviceSinkAPI::addSourceBuddy: buddy %s(%s) already in the list",
qPrintable(buddy->getHardwareId()),
qPrintable(buddy->getSampleSourceSerial()));
return;
}
}
m_sourceBuddies.push_back(buddy);
qDebug("DeviceSinkAPI::addSourceBuddy: added buddy %s(%s) to the list",
qPrintable(buddy->getHardwareId()),
qPrintable(buddy->getSampleSourceSerial()));
}
void DeviceSinkAPI::addSinkBuddy(DeviceSinkAPI* buddy)
{
std::vector<DeviceSinkAPI*>::iterator it = m_sinkBuddies.begin();
for (;it != m_sinkBuddies.end(); ++it)
{
if (((*it)->getHardwareId() == buddy->getHardwareId()) &&
((*it)->getSampleSinkSerial() == buddy->getSampleSinkSerial()))
{
qDebug("DeviceSinkAPI::addSinkBuddy: buddy %s(%s) already in the list",
qPrintable(buddy->getHardwareId()),
qPrintable(buddy->getSampleSinkSerial()));
return;
}
}
m_sinkBuddies.push_back(buddy);
qDebug("DeviceSinkAPI::addSinkBuddy: added buddy %s(%s) to the list",
qPrintable(buddy->getHardwareId()),
qPrintable(buddy->getSampleSinkSerial()));
}
void DeviceSinkAPI::removeSourceBuddy(DeviceSourceAPI* buddy)
{
std::vector<DeviceSourceAPI*>::iterator it = m_sourceBuddies.begin();
for (;it != m_sourceBuddies.end(); ++it)
{
if (((*it)->getHardwareId() == buddy->getHardwareId()) &&
((*it)->getSampleSourceSerial() == buddy->getSampleSourceSerial()))
{
m_sourceBuddies.erase(it);
qDebug("DeviceSinkAPI::removeSourceBuddy: buddy %s(%s) removed from the list",
qPrintable(buddy->getHardwareId()),
qPrintable(buddy->getSampleSourceSerial()));
return;
}
}
qDebug("DeviceSinkAPI::removeSourceBuddy: buddy %s(%s) not found in the list",
qPrintable(buddy->getHardwareId()),
qPrintable(buddy->getSampleSourceSerial()));
}
void DeviceSinkAPI::removeSinkBuddy(DeviceSinkAPI* buddy)
{
std::vector<DeviceSinkAPI*>::iterator it = m_sinkBuddies.begin();
for (;it != m_sinkBuddies.end(); ++it)
{
if (((*it)->getHardwareId() == buddy->getHardwareId()) &&
((*it)->getSampleSinkSerial() == buddy->getSampleSinkSerial()))
{
m_sinkBuddies.erase(it);
qDebug("DeviceSinkAPI::removeSinkBuddy: buddy %s(%s) removed from the list",
qPrintable(buddy->getHardwareId()),
qPrintable(buddy->getSampleSinkSerial()));
return;
}
}
qDebug("DeviceSinkAPI::removeSinkBuddy: buddy %s(%s) not found in the list",
qPrintable(buddy->getHardwareId()),
qPrintable(buddy->getSampleSinkSerial()));
}
void DeviceSinkAPI::removeFromBuddies()
{
std::vector<DeviceSourceAPI*>::iterator itSource = m_sourceBuddies.begin();
std::vector<DeviceSinkAPI*>::iterator itSink = m_sinkBuddies.begin();
for (;itSource != m_sourceBuddies.end(); ++itSource)
{
(*itSource)->removeSinkBuddy(this);
}
for (;itSink != m_sinkBuddies.end(); ++itSink)
{
(*itSink)->removeSinkBuddy(this);
}
}

Wyświetl plik

@ -35,6 +35,7 @@ class QWidget;
class PluginGUI;
class PluginAPI;
class Preset;
class DeviceSourceAPI;
class SDRANGEL_API DeviceSinkAPI : public QObject {
Q_OBJECT
@ -64,11 +65,17 @@ public:
void addRollupWidget(QWidget *widget); //!< Add rollup widget to channel window
void setOutputGUI(QWidget* outputGUI, const QString& sinkDisplayName);
void setHardwareId(const QString& id);
void setSampleSinkId(const QString& id);
void setSampleSinkSerial(const QString& serial);
void setSampleSinkSequence(int sequence);
void setSampleSinkPluginGUI(PluginGUI *gui);
const QString& getHardwareId() const { return m_hardwareId; }
const QString& getSampleSinkId() const { return m_sampleSinkId; }
const QString& getSampleSinkSerial() const { return m_sampleSinkSerial; }
int getSampleSinkSequence() const { return m_sampleSinkSequence; }
void registerChannelInstance(const QString& channelName, PluginGUI* pluginGUI);
void removeChannelInstance(PluginGUI* pluginGUI);
@ -80,6 +87,15 @@ public:
void saveChannelSettings(Preset* preset);
MainWindow *getMainWindow() { return m_mainWindow; }
DSPDeviceSinkEngine *getDeviceSinkEngine() { return m_deviceSinkEngine; }
const std::vector<DeviceSourceAPI*>& getSourceBuddies() const { return m_sourceBuddies; }
const std::vector<DeviceSinkAPI*>& getSinkBuddies() const { return m_sinkBuddies; }
void addSourceBuddy(DeviceSourceAPI* buddy);
void addSinkBuddy(DeviceSinkAPI* buddy);
void removeSourceBuddy(DeviceSourceAPI* buddy);
void removeSinkBuddy(DeviceSinkAPI* buddy);
void removeFromBuddies();
protected:
struct ChannelInstanceRegistration
@ -117,6 +133,7 @@ protected:
GLSpectrum *m_spectrum;
ChannelWindow *m_channelWindow;
QString m_hardwareId;
QString m_sampleSinkId;
QString m_sampleSinkSerial;
int m_sampleSinkSequence;
@ -124,6 +141,9 @@ protected:
ChannelInstanceRegistrations m_channelInstanceRegistrations;
std::vector<DeviceSourceAPI*> m_sourceBuddies; //!< Device source APIs referencing the same physical device
std::vector<DeviceSinkAPI*> m_sinkBuddies; //!< Device sink APIs referencing the same physical device
friend class MainWindow;
};

Wyświetl plik

@ -15,6 +15,7 @@
///////////////////////////////////////////////////////////////////////////////////
#include "device/devicesourceapi.h"
#include "device/devicesinkapi.h"
#include "plugin/plugingui.h"
#include "plugin/pluginapi.h"
#include "plugin/plugininterface.h"
@ -137,6 +138,11 @@ void DeviceSourceAPI::setInputGUI(QWidget* inputGUI, const QString& sourceDispla
m_mainWindow->setDeviceGUI(m_deviceTabIndex, inputGUI, sourceDisplayName);
}
void DeviceSourceAPI::setHardwareId(const QString& id)
{
m_hardwareId = id;
}
void DeviceSourceAPI::setSampleSourceId(const QString& id)
{
m_sampleSourceId = id;
@ -373,3 +379,107 @@ bool DeviceSourceAPI::ChannelInstanceRegistration::operator<(const ChannelInstan
return false;
}
}
void DeviceSourceAPI::addSourceBuddy(DeviceSourceAPI* buddy)
{
std::vector<DeviceSourceAPI*>::iterator it = m_sourceBuddies.begin();
for (;it != m_sourceBuddies.end(); ++it)
{
if (((*it)->getHardwareId() == buddy->getHardwareId()) &&
((*it)->getSampleSourceSerial() == buddy->getSampleSourceSerial()))
{
qDebug("DeviceSourceAPI::addSourceBuddy: buddy %s(%s) already in the list",
qPrintable(buddy->getHardwareId()),
qPrintable(buddy->getSampleSourceSerial()));
return;
}
}
m_sourceBuddies.push_back(buddy);
qDebug("DeviceSourceAPI::addSourceBuddy: added buddy %s(%s) to the list",
qPrintable(buddy->getHardwareId()),
qPrintable(buddy->getSampleSourceSerial()));
}
void DeviceSourceAPI::addSinkBuddy(DeviceSinkAPI* buddy)
{
std::vector<DeviceSinkAPI*>::iterator it = m_sinkBuddies.begin();
for (;it != m_sinkBuddies.end(); ++it)
{
if (((*it)->getHardwareId() == buddy->getHardwareId()) &&
((*it)->getSampleSinkSerial() == buddy->getSampleSinkSerial()))
{
qDebug("DeviceSourceAPI::addSinkBuddy: buddy %s(%s) already in the list",
qPrintable(buddy->getHardwareId()),
qPrintable(buddy->getSampleSinkSerial()));
return;
}
}
m_sinkBuddies.push_back(buddy);
qDebug("DeviceSourceAPI::addSinkBuddy: added buddy %s(%s) to the list",
qPrintable(buddy->getHardwareId()),
qPrintable(buddy->getSampleSinkSerial()));
}
void DeviceSourceAPI::removeSourceBuddy(DeviceSourceAPI* buddy)
{
std::vector<DeviceSourceAPI*>::iterator it = m_sourceBuddies.begin();
for (;it != m_sourceBuddies.end(); ++it)
{
if (((*it)->getHardwareId() == buddy->getHardwareId()) &&
((*it)->getSampleSourceSerial() == buddy->getSampleSourceSerial()))
{
m_sourceBuddies.erase(it);
qDebug("DeviceSourceAPI::removeSourceBuddy: buddy %s(%s) removed from the list",
qPrintable(buddy->getHardwareId()),
qPrintable(buddy->getSampleSourceSerial()));
return;
}
}
qDebug("DeviceSourceAPI::removeSourceBuddy: buddy %s(%s) not found in the list",
qPrintable(buddy->getHardwareId()),
qPrintable(buddy->getSampleSourceSerial()));
}
void DeviceSourceAPI::removeSinkBuddy(DeviceSinkAPI* buddy)
{
std::vector<DeviceSinkAPI*>::iterator it = m_sinkBuddies.begin();
for (;it != m_sinkBuddies.end(); ++it)
{
if (((*it)->getHardwareId() == buddy->getHardwareId()) &&
((*it)->getSampleSinkSerial() == buddy->getSampleSinkSerial()))
{
m_sinkBuddies.erase(it);
qDebug("DeviceSourceAPI::removeSinkBuddy: buddy %s(%s) removed from the list",
qPrintable(buddy->getHardwareId()),
qPrintable(buddy->getSampleSinkSerial()));
return;
}
}
qDebug("DeviceSourceAPI::removeSinkBuddy: buddy %s(%s) not found in the list",
qPrintable(buddy->getHardwareId()),
qPrintable(buddy->getSampleSinkSerial()));
}
void DeviceSourceAPI::removeFromBuddies()
{
std::vector<DeviceSourceAPI*>::iterator itSource = m_sourceBuddies.begin();
std::vector<DeviceSinkAPI*>::iterator itSink = m_sinkBuddies.begin();
for (;itSource != m_sourceBuddies.end(); ++itSource)
{
(*itSource)->removeSourceBuddy(this);
}
for (;itSink != m_sinkBuddies.end(); ++itSink)
{
(*itSink)->removeSourceBuddy(this);
}
}

Wyświetl plik

@ -36,6 +36,7 @@ class QWidget;
class PluginGUI;
class PluginAPI;
class Preset;
class DeviceSinkAPI;
class SDRANGEL_API DeviceSourceAPI : public QObject {
Q_OBJECT
@ -64,11 +65,17 @@ public:
void addRollupWidget(QWidget *widget); //!< Add rollup widget to channel window
void setInputGUI(QWidget* inputGUI, const QString& sourceDisplayName);
void setHardwareId(const QString& id);
void setSampleSourceId(const QString& id);
void setSampleSourceSerial(const QString& serial);
void setSampleSourceSequence(int sequence);
void setSampleSourcePluginGUI(PluginGUI *gui);
const QString& getHardwareId() const { return m_hardwareId; }
const QString& getSampleSourceId() const { return m_sampleSourceId; }
const QString& getSampleSourceSerial() const { return m_sampleSourceSerial; }
int getSampleSourceSequence() const { return m_sampleSourceSequence; }
void registerChannelInstance(const QString& channelName, PluginGUI* pluginGUI);
void removeChannelInstance(PluginGUI* pluginGUI);
@ -80,6 +87,15 @@ public:
void saveChannelSettings(Preset* preset);
MainWindow *getMainWindow() { return m_mainWindow; }
DSPDeviceSourceEngine *getDeviceSourceEngine() { return m_deviceSourceEngine; }
const std::vector<DeviceSourceAPI*>& getSourceBuddies() const { return m_sourceBuddies; }
const std::vector<DeviceSinkAPI*>& getSinkBuddies() const { return m_sinkBuddies; }
void addSourceBuddy(DeviceSourceAPI* buddy);
void addSinkBuddy(DeviceSinkAPI* buddy);
void removeSourceBuddy(DeviceSourceAPI* buddy);
void removeSinkBuddy(DeviceSinkAPI* buddy);
void removeFromBuddies();
protected:
struct ChannelInstanceRegistration
@ -117,6 +133,7 @@ protected:
GLSpectrum *m_spectrum;
ChannelWindow *m_channelWindow;
QString m_hardwareId;
QString m_sampleSourceId;
QString m_sampleSourceSerial;
int m_sampleSourceSequence;
@ -124,6 +141,9 @@ protected:
ChannelInstanceRegistrations m_channelInstanceRegistrations;
std::vector<DeviceSourceAPI*> m_sourceBuddies; //!< Device source APIs referencing the same physical device
std::vector<DeviceSinkAPI*> m_sinkBuddies; //!< Device sink APIs referencing the same physical device
friend class MainWindow;
};

Wyświetl plik

@ -84,7 +84,7 @@
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Version 2.5.2 - Copyright (C) 2015-2016 Edouard Griffiths, F4EXB. &lt;/p&gt;&lt;p&gt;Code at &lt;a href=&quot;https://github.com/f4exb/sdrangel&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;https://github.com/f4exb/sdrangel&lt;/span&gt;&lt;/a&gt; This is a complete redesign from RTL-SDRangelove at &lt;a href=&quot;https://github.com/hexameron/rtl-sdrangelove&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;https://github.com/hexameron/rtl-sdrangelove&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Many thanks to the original developers:&lt;/p&gt;&lt;p&gt;The osmocom developer team - especially horizon, Hoernchen &amp;amp; tnt.&lt;/p&gt;&lt;p&gt;Christian Daniel from maintech GmbH.&lt;/p&gt;&lt;p&gt;John Greb (hexameron) for the contributions in RTL-SDRangelove&lt;/p&gt;&lt;p&gt;The following rules apply to the SDRangel main application and libsdrbase:&lt;br/&gt;This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. You should have received a copy of the GNU General Public License along with this program. If not, see &lt;a href=&quot;http://www.gnu.org/licenses/&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://www.gnu.org/licenses/&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;For the license of installed plugins, look into the plugin list.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Version 3.0.0 - Copyright (C) 2015-2016 Edouard Griffiths, F4EXB. &lt;/p&gt;&lt;p&gt;Code at &lt;a href=&quot;https://github.com/f4exb/sdrangel&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;https://github.com/f4exb/sdrangel&lt;/span&gt;&lt;/a&gt; This is a complete redesign from RTL-SDRangelove at &lt;a href=&quot;https://github.com/hexameron/rtl-sdrangelove&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;https://github.com/hexameron/rtl-sdrangelove&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Many thanks to the original developers:&lt;/p&gt;&lt;p&gt;The osmocom developer team - especially horizon, Hoernchen &amp;amp; tnt.&lt;/p&gt;&lt;p&gt;Christian Daniel from maintech GmbH.&lt;/p&gt;&lt;p&gt;John Greb (hexameron) for the contributions in RTL-SDRangelove&lt;/p&gt;&lt;p&gt;The following rules apply to the SDRangel main application and libsdrbase:&lt;br/&gt;This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. You should have received a copy of the GNU General Public License along with this program. If not, see &lt;a href=&quot;http://www.gnu.org/licenses/&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://www.gnu.org/licenses/&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;For the license of installed plugins, look into the plugin list.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>

Wyświetl plik

@ -451,9 +451,9 @@ void MainWindow::createStatusBar()
{
QString qtVersionStr = QString("Qt %1 ").arg(QT_VERSION_STR);
#if QT_VERSION >= 0x050400
m_showSystemWidget = new QLabel("SDRangel v2.5.2 " + qtVersionStr + QSysInfo::prettyProductName(), this);
m_showSystemWidget = new QLabel("SDRangel v3.0.0 " + qtVersionStr + QSysInfo::prettyProductName(), this);
#else
m_showSystemWidget = new QLabel("SDRangel v2.5.2 " + qtVersionStr, this);
m_showSystemWidget = new QLabel("SDRangel v3.0.0 " + qtVersionStr, this);
#endif
statusBar()->addPermanentWidget(m_showSystemWidget);
@ -787,18 +787,44 @@ void MainWindow::on_sampleSource_confirmClicked(bool checked)
{
qDebug("MainWindow::on_sampleSource_confirmClicked: tab at %d", currentSourceTabIndex);
DeviceUISet *deviceUI = m_deviceUIs[currentSourceTabIndex];
deviceUI->m_deviceSourceAPI->saveSourceSettings(m_settings.getWorkingPreset());
deviceUI->m_deviceSourceAPI->saveSourceSettings(m_settings.getWorkingPreset()); // save old API settings
deviceUI->m_deviceSourceAPI->removeFromBuddies(); // remove old API from buddies lists
int selectedComboIndex = deviceUI->m_samplingDeviceControl->getDeviceSelector()->currentIndex();
void *devicePtr = deviceUI->m_samplingDeviceControl->getDeviceSelector()->itemData(selectedComboIndex).value<void *>();
m_pluginManager->selectSampleSourceByDevice(devicePtr, deviceUI->m_deviceSourceAPI);
deviceUI->m_deviceSourceAPI->loadSourceSettings(m_settings.getWorkingPreset());
m_pluginManager->selectSampleSourceByDevice(devicePtr, deviceUI->m_deviceSourceAPI); // sets the new API
deviceUI->m_deviceSourceAPI->loadSourceSettings(m_settings.getWorkingPreset()); // load new API settings
// add to buddies list
std::vector<DeviceUISet*>::iterator it = m_deviceUIs.begin();
for (; it != m_deviceUIs.end(); ++it)
{
if (*it != deviceUI) // do not add to itself
{
if ((*it)->m_deviceSourceEngine) // it is a source device
{
if ((deviceUI->m_deviceSourceAPI->getHardwareId() == (*it)->m_deviceSourceAPI->getHardwareId()) &&
(deviceUI->m_deviceSourceAPI->getSampleSourceSerial() == (*it)->m_deviceSourceAPI->getSampleSourceSerial()))
{
(*it)->m_deviceSourceAPI->addSourceBuddy(deviceUI->m_deviceSourceAPI);
}
}
if ((*it)->m_deviceSinkEngine) // it is a sink device
{
if ((deviceUI->m_deviceSourceAPI->getHardwareId() == (*it)->m_deviceSinkAPI->getHardwareId()) &&
(deviceUI->m_deviceSourceAPI->getSampleSourceSerial() == (*it)->m_deviceSinkAPI->getSampleSinkSerial()))
{
(*it)->m_deviceSinkAPI->addSourceBuddy(deviceUI->m_deviceSourceAPI);
}
}
}
}
if (currentSourceTabIndex == 0)
{
m_settings.setSourceIndex(deviceUI->m_samplingDeviceControl->getDeviceSelector()->currentIndex());
}
}
}
void MainWindow::on_sampleSink_confirmClicked(bool checked)
@ -810,11 +836,38 @@ void MainWindow::on_sampleSink_confirmClicked(bool checked)
{
qDebug("MainWindow::on_sampleSink_confirmClicked: tab at %d", currentSinkTabIndex);
DeviceUISet *deviceUI = m_deviceUIs[currentSinkTabIndex];
deviceUI->m_deviceSinkAPI->saveSinkSettings(m_settings.getWorkingPreset());
deviceUI->m_deviceSinkAPI->saveSinkSettings(m_settings.getWorkingPreset()); // save old API settings
deviceUI->m_deviceSinkAPI->removeFromBuddies(); // remove old API from buddies lists
int selectedComboIndex = deviceUI->m_samplingDeviceControl->getDeviceSelector()->currentIndex();
void *devicePtr = deviceUI->m_samplingDeviceControl->getDeviceSelector()->itemData(selectedComboIndex).value<void *>();
m_pluginManager->selectSampleSinkByDevice(devicePtr, deviceUI->m_deviceSinkAPI);
deviceUI->m_deviceSinkAPI->loadSinkSettings(m_settings.getWorkingPreset());
m_pluginManager->selectSampleSinkByDevice(devicePtr, deviceUI->m_deviceSinkAPI); // sets the new API
deviceUI->m_deviceSinkAPI->loadSinkSettings(m_settings.getWorkingPreset()); // load new API settings
// add to buddies list
std::vector<DeviceUISet*>::iterator it = m_deviceUIs.begin();
for (; it != m_deviceUIs.end(); ++it)
{
if (*it != deviceUI) // do not add to itself
{
if ((*it)->m_deviceSourceEngine) // it is a source device
{
if ((deviceUI->m_deviceSourceAPI->getHardwareId() == (*it)->m_deviceSourceAPI->getHardwareId()) &&
(deviceUI->m_deviceSourceAPI->getSampleSourceSerial() == (*it)->m_deviceSourceAPI->getSampleSourceSerial()))
{
(*it)->m_deviceSourceAPI->addSinkBuddy(deviceUI->m_deviceSinkAPI);
}
}
if ((*it)->m_deviceSinkEngine) // it is a sink device
{
if ((deviceUI->m_deviceSourceAPI->getHardwareId() == (*it)->m_deviceSinkAPI->getHardwareId()) &&
(deviceUI->m_deviceSourceAPI->getSampleSourceSerial() == (*it)->m_deviceSinkAPI->getSampleSinkSerial()))
{
(*it)->m_deviceSinkAPI->addSinkBuddy(deviceUI->m_deviceSinkAPI);
}
}
}
}
}
}

Wyświetl plik

@ -25,15 +25,18 @@ public:
struct SamplingDevice
{
QString displayedName;
QString hardwareId;
QString id;
QString serial;
int sequence;
SamplingDevice(const QString& _displayedName,
const QString& _hardwareId,
const QString& _id,
const QString& _serial,
int _sequence) :
displayedName(_displayedName),
hardwareId(_hardwareId),
id(_id),
serial(_serial),
sequence(_sequence)

Wyświetl plik

@ -32,8 +32,11 @@
#include "dsp/dspdevicesourceengine.h"
#include "dsp/dspdevicesinkengine.h"
const QString PluginManager::m_sdrDaemonHardwareID = "SDRdaemon";
const QString PluginManager::m_sdrDaemonDeviceTypeID = "sdrangel.samplesource.sdrdaemon";
const QString PluginManager::m_sdrDaemonFECHardwareID = "SDRdaemonFEC";
const QString PluginManager::m_sdrDaemonFECDeviceTypeID = "sdrangel.samplesource.sdrdaemonfec";
const QString PluginManager::m_fileSourceHardwareID = "FileSource";
const QString PluginManager::m_fileSourceDeviceTypeID = "sdrangel.samplesource.filesource";
const QString PluginManager::m_fileSinkDeviceTypeID = "sdrangel.samplesink.filesink";
@ -120,6 +123,7 @@ void PluginManager::updateSampleSourceDevices()
{
m_sampleSourceDevices.append(SamplingDevice(m_sampleSourceRegistrations[i].m_plugin,
ssd[j].displayedName,
ssd[j].hardwareId,
ssd[j].id,
ssd[j].serial,
ssd[j].sequence));
@ -139,7 +143,8 @@ void PluginManager::updateSampleSinkDevices()
{
m_sampleSinkDevices.append(SamplingDevice(m_sampleSinkRegistrations[i].m_plugin,
ssd[j].displayedName,
ssd[j].id,
ssd[j].hardwareId,
ssd[j].id,
ssd[j].serial,
ssd[j].sequence));
}
@ -196,6 +201,7 @@ void PluginManager::duplicateLocalSampleSourceDevices(uint deviceUID)
SamplingDevice(
sdrDaemonSSD0->m_plugin,
QString("SDRdaemon[%1]").arg(deviceUID),
sdrDaemonSSD0->m_hadrwareId,
sdrDaemonSSD0->m_deviceId,
sdrDaemonSSD0->m_deviceSerial,
deviceUID
@ -209,6 +215,7 @@ void PluginManager::duplicateLocalSampleSourceDevices(uint deviceUID)
SamplingDevice(
sdrDaemonFECSSD0->m_plugin,
QString("SDRdaemonFEC[%1]").arg(deviceUID),
sdrDaemonFECSSD0->m_hadrwareId,
sdrDaemonFECSSD0->m_deviceId,
sdrDaemonFECSSD0->m_deviceSerial,
deviceUID
@ -222,6 +229,7 @@ void PluginManager::duplicateLocalSampleSourceDevices(uint deviceUID)
SamplingDevice(
fileSourceSSD0->m_plugin,
QString("FileSource[%1]").arg(deviceUID),
fileSourceSSD0->m_hadrwareId,
fileSourceSSD0->m_deviceId,
fileSourceSSD0->m_deviceSerial,
deviceUID
@ -258,6 +266,7 @@ void PluginManager::duplicateLocalSampleSinkDevices(uint deviceUID)
SamplingDevice(
fileSinkSSD0->m_plugin,
QString("FileSink[%1]").arg(deviceUID),
fileSinkSSD0->m_hadrwareId,
fileSinkSSD0->m_deviceId,
fileSinkSSD0->m_deviceSerial,
deviceUID
@ -324,6 +333,7 @@ int PluginManager::selectSampleSourceByIndex(int index, DeviceSourceAPI *deviceA
}
qDebug() << "PluginManager::selectSampleSourceByIndex: m_sampleSource at index " << index
<< " hid: " << m_sampleSourceDevices[index].m_hadrwareId.toStdString().c_str()
<< " id: " << m_sampleSourceDevices[index].m_deviceId.toStdString().c_str()
<< " ser: " << m_sampleSourceDevices[index].m_deviceSerial.toStdString().c_str()
<< " seq: " << m_sampleSourceDevices[index].m_deviceSequence;
@ -336,6 +346,7 @@ int PluginManager::selectSampleSourceByIndex(int index, DeviceSourceAPI *deviceA
// m_sampleSourcePluginGUI = pluginGUI;
deviceAPI->setSampleSourceSequence(m_sampleSourceDevices[index].m_deviceSequence);
deviceAPI->setHardwareId(m_sampleSourceDevices[index].m_hadrwareId);
deviceAPI->setSampleSourceId(m_sampleSourceDevices[index].m_deviceId);
deviceAPI->setSampleSourceSerial(m_sampleSourceDevices[index].m_deviceSerial);
deviceAPI->setSampleSourcePluginGUI(pluginGUI);
@ -364,6 +375,7 @@ int PluginManager::selectSampleSinkByIndex(int index, DeviceSinkAPI *deviceAPI)
}
qDebug() << "PluginManager::selectSampleSinkByIndex: m_sampleSink at index " << index
<< " hid: " << m_sampleSinkDevices[index].m_hadrwareId.toStdString().c_str()
<< " id: " << m_sampleSinkDevices[index].m_deviceId.toStdString().c_str()
<< " ser: " << m_sampleSinkDevices[index].m_deviceSerial.toStdString().c_str()
<< " seq: " << m_sampleSinkDevices[index].m_deviceSequence;
@ -376,6 +388,7 @@ int PluginManager::selectSampleSinkByIndex(int index, DeviceSinkAPI *deviceAPI)
// m_sampleSourcePluginGUI = pluginGUI;
deviceAPI->setSampleSinkSequence(m_sampleSinkDevices[index].m_deviceSequence);
deviceAPI->setHardwareId(m_sampleSinkDevices[index].m_hadrwareId);
deviceAPI->setSampleSinkId(m_sampleSinkDevices[index].m_deviceId);
deviceAPI->setSampleSinkSerial(m_sampleSinkDevices[index].m_deviceSerial);
deviceAPI->setSampleSinkPluginGUI(pluginGUI);
@ -414,6 +427,7 @@ int PluginManager::selectFirstSampleSource(const QString& sourceId, DeviceSource
}
qDebug() << "PluginManager::selectFirstSampleSource: m_sampleSource at index " << index
<< " hid: " << m_sampleSourceDevices[index].m_hadrwareId.toStdString().c_str()
<< " id: " << m_sampleSourceDevices[index].m_deviceId.toStdString().c_str()
<< " ser: " << m_sampleSourceDevices[index].m_deviceSerial.toStdString().c_str()
<< " seq: " << m_sampleSourceDevices[index].m_deviceSequence;
@ -426,6 +440,7 @@ int PluginManager::selectFirstSampleSource(const QString& sourceId, DeviceSource
// m_sampleSourcePluginGUI = pluginGUI;
deviceAPI->setSampleSourceSequence(m_sampleSourceDevices[index].m_deviceSequence);
deviceAPI->setHardwareId(m_sampleSourceDevices[index].m_hadrwareId);
deviceAPI->setSampleSourceId(m_sampleSourceDevices[index].m_deviceId);
deviceAPI->setSampleSourceSerial(m_sampleSourceDevices[index].m_deviceSerial);
deviceAPI->setSampleSourcePluginGUI(pluginGUI);
@ -464,6 +479,7 @@ int PluginManager::selectFirstSampleSink(const QString& sinkId, DeviceSinkAPI *d
}
qDebug() << "PluginManager::selectFirstSampleSink: m_sampleSink at index " << index
<< " hid: " << m_sampleSinkDevices[index].m_hadrwareId.toStdString().c_str()
<< " id: " << m_sampleSinkDevices[index].m_deviceId.toStdString().c_str()
<< " ser: " << m_sampleSinkDevices[index].m_deviceSerial.toStdString().c_str()
<< " seq: " << m_sampleSinkDevices[index].m_deviceSequence;
@ -476,6 +492,7 @@ int PluginManager::selectFirstSampleSink(const QString& sinkId, DeviceSinkAPI *d
// m_sampleSourcePluginGUI = pluginGUI;
deviceAPI->setSampleSinkSequence(m_sampleSinkDevices[index].m_deviceSequence);
deviceAPI->setHardwareId(m_sampleSinkDevices[index].m_hadrwareId);
deviceAPI->setSampleSinkId(m_sampleSinkDevices[index].m_deviceId);
deviceAPI->setSampleSinkSerial(m_sampleSinkDevices[index].m_deviceSerial);
deviceAPI->setSampleSinkPluginGUI(pluginGUI);
@ -538,6 +555,7 @@ int PluginManager::selectSampleSourceBySerialOrSequence(const QString& sourceId,
}
qDebug() << "PluginManager::selectSampleSourceBySequence: m_sampleSource at index " << index
<< " hid: " << m_sampleSourceDevices[index].m_hadrwareId.toStdString().c_str()
<< " id: " << m_sampleSourceDevices[index].m_deviceId.toStdString().c_str()
<< " ser: " << m_sampleSourceDevices[index].m_deviceSerial.toStdString().c_str()
<< " seq: " << m_sampleSourceDevices[index].m_deviceSequence;
@ -550,6 +568,7 @@ int PluginManager::selectSampleSourceBySerialOrSequence(const QString& sourceId,
// m_sampleSourcePluginGUI = pluginGUI;
deviceAPI->setSampleSourceSequence(m_sampleSourceDevices[index].m_deviceSequence);
deviceAPI->setHardwareId(m_sampleSourceDevices[index].m_hadrwareId);
deviceAPI->setSampleSourceId(m_sampleSourceDevices[index].m_deviceId);
deviceAPI->setSampleSourceSerial(m_sampleSourceDevices[index].m_deviceSerial);
deviceAPI->setSampleSourcePluginGUI(pluginGUI);
@ -612,6 +631,7 @@ int PluginManager::selectSampleSinkBySerialOrSequence(const QString& sinkId, con
}
qDebug() << "PluginManager::selectSampleSinkBySerialOrSequence: m_sampleSink at index " << index
<< " hid: " << m_sampleSinkDevices[index].m_hadrwareId.toStdString().c_str()
<< " id: " << m_sampleSinkDevices[index].m_deviceId.toStdString().c_str()
<< " ser: " << m_sampleSinkDevices[index].m_deviceSerial.toStdString().c_str()
<< " seq: " << m_sampleSinkDevices[index].m_deviceSequence;
@ -624,6 +644,7 @@ int PluginManager::selectSampleSinkBySerialOrSequence(const QString& sinkId, con
// m_sampleSourcePluginGUI = pluginGUI;
deviceAPI->setSampleSinkSequence(m_sampleSinkDevices[index].m_deviceSequence);
deviceAPI->setHardwareId(m_sampleSinkDevices[index].m_hadrwareId);
deviceAPI->setSampleSinkId(m_sampleSinkDevices[index].m_deviceId);
deviceAPI->setSampleSinkSerial(m_sampleSinkDevices[index].m_deviceSerial);
deviceAPI->setSampleSinkPluginGUI(pluginGUI);
@ -637,6 +658,7 @@ void PluginManager::selectSampleSourceByDevice(void *devicePtr, DeviceSourceAPI
SamplingDevice *sampleSourceDevice = (SamplingDevice *) devicePtr;
qDebug() << "PluginManager::selectSampleSourceByDevice: "
<< " hid: " << sampleSourceDevice->m_hadrwareId.toStdString().c_str()
<< " id: " << sampleSourceDevice->m_deviceId.toStdString().c_str()
<< " ser: " << sampleSourceDevice->m_deviceSerial.toStdString().c_str()
<< " seq: " << sampleSourceDevice->m_deviceSequence;
@ -649,6 +671,7 @@ void PluginManager::selectSampleSourceByDevice(void *devicePtr, DeviceSourceAPI
// m_sampleSourcePluginGUI = pluginGUI;
deviceAPI->setSampleSourceSequence(sampleSourceDevice->m_deviceSequence);
deviceAPI->setHardwareId(sampleSourceDevice->m_hadrwareId);
deviceAPI->setSampleSourceId(sampleSourceDevice->m_deviceId);
deviceAPI->setSampleSourceSerial(sampleSourceDevice->m_deviceSerial);
deviceAPI->setSampleSourcePluginGUI(pluginGUI);
@ -660,6 +683,7 @@ void PluginManager::selectSampleSinkByDevice(void *devicePtr, DeviceSinkAPI *dev
SamplingDevice *sampleSinkDevice = (SamplingDevice *) devicePtr;
qDebug() << "PluginManager::selectSampleSinkByDevice: "
<< " hid: " << sampleSinkDevice->m_hadrwareId.toStdString().c_str()
<< " id: " << sampleSinkDevice->m_deviceId.toStdString().c_str()
<< " ser: " << sampleSinkDevice->m_deviceSerial.toStdString().c_str()
<< " seq: " << sampleSinkDevice->m_deviceSequence;
@ -672,6 +696,7 @@ void PluginManager::selectSampleSinkByDevice(void *devicePtr, DeviceSinkAPI *dev
// m_sampleSourcePluginGUI = pluginGUI;
deviceAPI->setSampleSinkSequence(sampleSinkDevice->m_deviceSequence);
deviceAPI->setHardwareId(sampleSinkDevice->m_hadrwareId);
deviceAPI->setSampleSinkId(sampleSinkDevice->m_deviceId);
deviceAPI->setSampleSinkSerial(sampleSinkDevice->m_deviceSerial);
deviceAPI->setSampleSinkPluginGUI(pluginGUI);

Wyświetl plik

@ -89,17 +89,20 @@ private:
struct SamplingDevice {
PluginInterface* m_plugin;
QString m_displayName;
QString m_hadrwareId;
QString m_deviceId;
QString m_deviceSerial;
int m_deviceSequence;
SamplingDevice(PluginInterface* plugin,
const QString& displayName,
const QString& hadrwareId,
const QString& deviceId,
const QString& deviceSerial,
int deviceSequence) :
m_plugin(plugin),
m_displayName(displayName),
m_hadrwareId(hadrwareId),
m_deviceId(deviceId),
m_deviceSerial(deviceSerial),
m_deviceSequence(deviceSequence)
@ -121,8 +124,11 @@ private:
SamplingDevices m_sampleSinkDevices; //!< Instances of output sinks present in the system
// "Local" sample source device IDs
static const QString m_sdrDaemonHardwareID; //!< SDRdaemon hardware ID
static const QString m_sdrDaemonDeviceTypeID; //!< SDRdaemon source plugin ID
static const QString m_sdrDaemonFECHardwareID; //!< SDRdaemon with FEC hardware ID
static const QString m_sdrDaemonFECDeviceTypeID; //!< SDRdaemon with FEC source plugin ID
static const QString m_fileSourceHardwareID; //!< FileSource source hardware ID
static const QString m_fileSourceDeviceTypeID; //!< FileSource source plugin ID
// "Local" sample sink device IDs