Device user arguments: pass from main window to device API

pull/375/head
f4exb 2019-06-13 18:43:06 +02:00
rodzic 4f89e22cc2
commit ea1b3e90b4
4 zmienionych plików z 51 dodań i 26 usunięć

Wyświetl plik

@ -102,50 +102,26 @@ public:
MessageQueue *getDeviceEngineInputMessageQueue(); //!< Device engine message queue
MessageQueue *getSamplingDeviceInputMessageQueue(); //!< Sampling device (ex: single Rx) input message queue
// MessageQueue *getSampleSinkInputMessageQueue();
// MessageQueue *getSampleSourceInputMessageQueue();
MessageQueue *getSamplingDeviceGUIMessageQueue(); //!< Sampling device (ex: single Tx) GUI input message queue
// MessageQueue *getSampleSinkGUIMessageQueue();
// MessageQueue *getSampleSourceGUIMessageQueue();
void configureCorrections(bool dcOffsetCorrection, bool iqImbalanceCorrection, int streamIndex = 0); //!< Configure current device engine DSP corrections (Rx)
void setHardwareId(const QString& id);
void setSamplingDeviceId(const QString& id) { m_samplingDeviceId = id; }
// void setSampleSourceId(const QString& id);
// void setSampleSinkId(const QString& id);
void resetSamplingDeviceId() { m_samplingDeviceId.clear(); }
// void resetSampleSourceId();
// void resetSampleSinkId();
void setSamplingDeviceSerial(const QString& serial) { m_samplingDeviceSerial = serial; }
// void setSampleSourceSerial(const QString& serial);
// void setSampleSinkSerial(const QString& serial);
void setSamplingDeviceDisplayName(const QString& name) { m_samplingDeviceDisplayName = name; }
// void setSampleSourceDisplayName(const QString& serial);
// void setSampleSinkDisplayName(const QString& serial);
void setSamplingDeviceSequence(int sequence) { m_samplingDeviceSequence = sequence; }
// void setSampleSourceSequence(int sequence);
// void setSampleSinkSequence(int sequence);
void setHardwareUserArguments(const QString& userArguments) { m_hardwareUserArguments = userArguments; }
void setSamplingDevicePluginInterface(PluginInterface *iface);
// void setSampleSourcePluginInterface(PluginInterface *iface);
// void setSampleSinkPluginInterface(PluginInterface *iface);
void setSamplingDevicePluginInstanceGUI(PluginInstanceGUI *gui);
// void setSampleSourcePluginInstanceGUI(PluginInstanceGUI *gui);
// void setSampleSinkPluginInstanceUI(PluginInstanceGUI *gui);
const QString& getHardwareId() const { return m_hardwareId; }
const QString& getSamplingDeviceId() const { return m_samplingDeviceId; }
// const QString& getSampleSourceId() const { return m_sampleSourceId; }
// const QString& getSampleSinkId() const { return m_sampleSinkId; }
const QString& getSamplingDeviceSerial() const { return m_samplingDeviceSerial; }
// const QString& getSampleSourceSerial() const { return m_sampleSourceSerial; }
// const QString& getSampleSinkSerial() const { return m_sampleSinkSerial; }
const QString& getSamplingDeviceDisplayName() const { return m_samplingDeviceDisplayName; }
// const QString& getSampleSourceDisplayName() const { return m_sampleSourceDisplayName; }
// const QString& getSampleSinkDisplayName() const { return m_sampleSinkDisplayName; }
uint32_t getSamplingDeviceSequence() const { return m_samplingDeviceSequence; }
// uint32_t getSampleSourceSequence() const { return m_sampleSourceSequence; }
// uint32_t getSampleSinkSequence() const { return m_sampleSinkSequence; }
const QString& getHardwareUserArguments() const { return m_hardwareUserArguments; }
void setDeviceNbItems(uint32_t nbItems);
void setDeviceItemIndex(uint32_t index);
@ -212,6 +188,7 @@ protected:
QString m_samplingDeviceSerial; //!< The device serial number defined by the vendor or a fake one (SDRplay)
QString m_samplingDeviceDisplayName; //!< The human readable name identifying this instance
uint32_t m_samplingDeviceSequence; //!< The device sequence. >0 when more than one device of the same type is connected
QString m_hardwareUserArguments; //!< User given arguments to be used at hardware level i.e. for the hardware device and device sequence
PluginInstanceGUI* m_samplingDevicePluginInstanceUI;
// Buddies (single Rx or single Tx)

Wyświetl plik

@ -79,6 +79,17 @@ QList<DeviceUserArgs::Args>::iterator DeviceUserArgs::findDeviceArgs(const QStri
}
}
QString DeviceUserArgs::findUserArgs(const QString& id, int sequence)
{
QList<DeviceUserArgs::Args>::iterator it = findDeviceArgs(id, sequence);
if (it != m_argsByDevice.end()) {
return it->m_args;
} else {
return "";
}
}
void DeviceUserArgs::addDeviceArgs(const QString& id, int sequence, const QString& deviceArgs)
{
Args args;

Wyświetl plik

@ -43,6 +43,7 @@ public:
QByteArray serialize() const;
bool deserialize(const QByteArray& data);
QList<Args>::iterator findDeviceArgs(const QString& id, int sequence);
QString findUserArgs(const QString& id, int sequence);
void addDeviceArgs(const QString& id, int sequence, const QString& args); //!< Will not add if it exists for same reference
void addOrUpdateDeviceArgs(const QString& id, int sequence, const QString& args); //!< Add or update if it exists for same reference
void updateDeviceArgs(const QString& id, int sequence, const QString& args); //!< Will not update if reference does not exist

Wyświetl plik

@ -315,6 +315,12 @@ void MainWindow::addSourceDevice(int deviceIndex)
m_deviceUIs.back()->m_deviceAPI->setSamplingDeviceDisplayName(samplingDevice->displayedName);
m_deviceUIs.back()->m_deviceAPI->setSamplingDevicePluginInterface(DeviceEnumerator::instance()->getRxPluginInterface(deviceIndex));
QString userArgs = m_settings.getDeviceUserArgs().findUserArgs(samplingDevice->hardwareId, samplingDevice->sequence);
if (userArgs.size() > 0) {
m_deviceUIs.back()->m_deviceAPI->setHardwareUserArguments(userArgs);
}
m_deviceUIs.back()->m_samplingDeviceControl->setSelectedDeviceIndex(deviceIndex);
// delete previous plugin GUI
@ -388,6 +394,12 @@ void MainWindow::addSinkDevice()
m_deviceUIs.back()->m_deviceAPI->setSamplingDeviceDisplayName(samplingDevice->displayedName);
m_deviceUIs.back()->m_deviceAPI->setSamplingDevicePluginInterface(DeviceEnumerator::instance()->getTxPluginInterface(fileSinkDeviceIndex));
QString userArgs = m_settings.getDeviceUserArgs().findUserArgs(samplingDevice->hardwareId, samplingDevice->sequence);
if (userArgs.size() > 0) {
m_deviceUIs.back()->m_deviceAPI->setHardwareUserArguments(userArgs);
}
m_deviceUIs.back()->m_samplingDeviceControl->setSelectedDeviceIndex(fileSinkDeviceIndex);
// delete previous plugin GUI if it exists
@ -469,6 +481,12 @@ void MainWindow::addMIMODevice()
m_deviceUIs.back()->m_deviceAPI->setSamplingDeviceDisplayName(samplingDevice->displayedName);
m_deviceUIs.back()->m_deviceAPI->setSamplingDevicePluginInterface(DeviceEnumerator::instance()->getMIMOPluginInterface(testMIMODeviceIndex));
QString userArgs = m_settings.getDeviceUserArgs().findUserArgs(samplingDevice->hardwareId, samplingDevice->sequence);
if (userArgs.size() > 0) {
m_deviceUIs.back()->m_deviceAPI->setHardwareUserArguments(userArgs);
}
m_deviceUIs.back()->m_samplingDeviceControl->setSelectedDeviceIndex(testMIMODeviceIndex);
// delete previous plugin GUI if it exists
@ -1676,6 +1694,12 @@ void MainWindow::sampleSourceChanged()
deviceUI->m_deviceAPI->setSamplingDeviceDisplayName(samplingDevice->displayedName);
deviceUI->m_deviceAPI->setSamplingDevicePluginInterface(DeviceEnumerator::instance()->getRxPluginInterface(deviceUI->m_samplingDeviceControl->getSelectedDeviceIndex()));
QString userArgs = m_settings.getDeviceUserArgs().findUserArgs(samplingDevice->hardwareId, samplingDevice->sequence);
if (userArgs.size() > 0) {
deviceUI->m_deviceAPI->setHardwareUserArguments(userArgs);
}
// add to buddies list
std::vector<DeviceUISet*>::iterator it = m_deviceUIs.begin();
int nbOfBuddies = 0;
@ -1765,6 +1789,12 @@ void MainWindow::sampleSinkChanged()
deviceUI->m_deviceAPI->setSamplingDeviceDisplayName(samplingDevice->displayedName);
deviceUI->m_deviceAPI->setSamplingDevicePluginInterface(DeviceEnumerator::instance()->getTxPluginInterface(deviceUI->m_samplingDeviceControl->getSelectedDeviceIndex()));
QString userArgs = m_settings.getDeviceUserArgs().findUserArgs(samplingDevice->hardwareId, samplingDevice->sequence);
if (userArgs.size() > 0) {
deviceUI->m_deviceAPI->setHardwareUserArguments(userArgs);
}
// add to buddies list
std::vector<DeviceUISet*>::iterator it = m_deviceUIs.begin();
int nbOfBuddies = 0;
@ -1849,6 +1879,12 @@ void MainWindow::sampleMIMOChanged()
deviceUI->m_deviceAPI->setSamplingDevicePluginInterface(
DeviceEnumerator::instance()->getMIMOPluginInterface(deviceUI->m_samplingDeviceControl->getSelectedDeviceIndex()));
QString userArgs = m_settings.getDeviceUserArgs().findUserArgs(samplingDevice->hardwareId, samplingDevice->sequence);
if (userArgs.size() > 0) {
deviceUI->m_deviceAPI->setHardwareUserArguments(userArgs);
}
// constructs new GUI and MIMO object
DeviceSampleMIMO *mimo = deviceUI->m_deviceAPI->getPluginInterface()->createSampleMIMOPluginInstance(
deviceUI->m_deviceAPI->getSamplingDeviceId(), deviceUI->m_deviceAPI);