mirror of https://github.com/f4exb/sdrangel.git
MainCore: fixed sink device set creation and added MIMO creation
This commit is contained in:
parent
99e16cf0bc
commit
4abeefff82
|
@ -273,6 +273,8 @@ void MainWindow::addSourceDevice(int deviceIndex)
|
||||||
int deviceTabIndex = m_deviceUIs.size();
|
int deviceTabIndex = m_deviceUIs.size();
|
||||||
m_deviceUIs.push_back(new DeviceUISet(deviceTabIndex, 0, m_masterTimer));
|
m_deviceUIs.push_back(new DeviceUISet(deviceTabIndex, 0, m_masterTimer));
|
||||||
m_deviceUIs.back()->m_deviceSourceEngine = dspDeviceSourceEngine;
|
m_deviceUIs.back()->m_deviceSourceEngine = dspDeviceSourceEngine;
|
||||||
|
m_deviceUIs.back()->m_deviceSinkEngine = nullptr;
|
||||||
|
m_deviceUIs.back()->m_deviceMIMOEngine = nullptr;
|
||||||
|
|
||||||
char tabNameCStr[16];
|
char tabNameCStr[16];
|
||||||
sprintf(tabNameCStr, "R%d", deviceTabIndex);
|
sprintf(tabNameCStr, "R%d", deviceTabIndex);
|
||||||
|
@ -352,8 +354,9 @@ void MainWindow::addSinkDevice()
|
||||||
|
|
||||||
int deviceTabIndex = m_deviceUIs.size();
|
int deviceTabIndex = m_deviceUIs.size();
|
||||||
m_deviceUIs.push_back(new DeviceUISet(deviceTabIndex, 1, m_masterTimer));
|
m_deviceUIs.push_back(new DeviceUISet(deviceTabIndex, 1, m_masterTimer));
|
||||||
m_deviceUIs.back()->m_deviceSourceEngine = 0;
|
m_deviceUIs.back()->m_deviceSourceEngine = nullptr;
|
||||||
m_deviceUIs.back()->m_deviceSinkEngine = dspDeviceSinkEngine;
|
m_deviceUIs.back()->m_deviceSinkEngine = dspDeviceSinkEngine;
|
||||||
|
m_deviceUIs.back()->m_deviceMIMOEngine = nullptr;
|
||||||
|
|
||||||
char tabNameCStr[16];
|
char tabNameCStr[16];
|
||||||
sprintf(tabNameCStr, "T%d", deviceTabIndex);
|
sprintf(tabNameCStr, "T%d", deviceTabIndex);
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include "dsp/dspengine.h"
|
#include "dsp/dspengine.h"
|
||||||
#include "dsp/dspdevicesourceengine.h"
|
#include "dsp/dspdevicesourceengine.h"
|
||||||
#include "dsp/dspdevicesinkengine.h"
|
#include "dsp/dspdevicesinkengine.h"
|
||||||
|
#include "dsp/dspdevicemimoengine.h"
|
||||||
#include "device/deviceapi.h"
|
#include "device/deviceapi.h"
|
||||||
#include "device/deviceset.h"
|
#include "device/deviceset.h"
|
||||||
#include "device/deviceenumerator.h"
|
#include "device/deviceenumerator.h"
|
||||||
|
@ -144,7 +145,9 @@ bool MainCore::handleMessage(const Message& cmd)
|
||||||
addSinkDevice();
|
addSinkDevice();
|
||||||
} else if (direction == 0) { // Single stream Rx
|
} else if (direction == 0) { // Single stream Rx
|
||||||
addSourceDevice();
|
addSourceDevice();
|
||||||
} // device type not (yet) supported
|
} else if (direction == 2) { // MIMO
|
||||||
|
addMIMODevice();
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -278,8 +281,9 @@ void MainCore::addSinkDevice()
|
||||||
|
|
||||||
int deviceTabIndex = m_deviceSets.size();
|
int deviceTabIndex = m_deviceSets.size();
|
||||||
m_deviceSets.push_back(new DeviceSet(deviceTabIndex));
|
m_deviceSets.push_back(new DeviceSet(deviceTabIndex));
|
||||||
m_deviceSets.back()->m_deviceSourceEngine = 0;
|
m_deviceSets.back()->m_deviceSourceEngine = nullptr;
|
||||||
m_deviceSets.back()->m_deviceMIMOEngine = 0;
|
m_deviceSets.back()->m_deviceSinkEngine = dspDeviceSinkEngine;
|
||||||
|
m_deviceSets.back()->m_deviceMIMOEngine = nullptr;
|
||||||
|
|
||||||
char tabNameCStr[16];
|
char tabNameCStr[16];
|
||||||
sprintf(tabNameCStr, "T%d", deviceTabIndex);
|
sprintf(tabNameCStr, "T%d", deviceTabIndex);
|
||||||
|
@ -324,8 +328,8 @@ void MainCore::addSourceDevice()
|
||||||
int deviceTabIndex = m_deviceSets.size();
|
int deviceTabIndex = m_deviceSets.size();
|
||||||
m_deviceSets.push_back(new DeviceSet(deviceTabIndex));
|
m_deviceSets.push_back(new DeviceSet(deviceTabIndex));
|
||||||
m_deviceSets.back()->m_deviceSourceEngine = dspDeviceSourceEngine;
|
m_deviceSets.back()->m_deviceSourceEngine = dspDeviceSourceEngine;
|
||||||
m_deviceSets.back()->m_deviceSinkEngine = 0;
|
m_deviceSets.back()->m_deviceSinkEngine = nullptr;
|
||||||
m_deviceSets.back()->m_deviceMIMOEngine = 0;
|
m_deviceSets.back()->m_deviceMIMOEngine = nullptr;
|
||||||
|
|
||||||
char tabNameCStr[16];
|
char tabNameCStr[16];
|
||||||
sprintf(tabNameCStr, "R%d", deviceTabIndex);
|
sprintf(tabNameCStr, "R%d", deviceTabIndex);
|
||||||
|
@ -357,6 +361,49 @@ void MainCore::addSourceDevice()
|
||||||
m_deviceSets.back()->m_deviceAPI->setSampleSource(source);
|
m_deviceSets.back()->m_deviceAPI->setSampleSource(source);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainCore::addMIMODevice()
|
||||||
|
{
|
||||||
|
DSPDeviceMIMOEngine *dspDeviceMIMOEngine = m_dspEngine->addDeviceMIMOEngine();
|
||||||
|
dspDeviceMIMOEngine->start();
|
||||||
|
|
||||||
|
uint dspDeviceMIMOEngineUID = dspDeviceMIMOEngine->getUID();
|
||||||
|
char uidCStr[16];
|
||||||
|
sprintf(uidCStr, "UID:%d", dspDeviceMIMOEngineUID);
|
||||||
|
|
||||||
|
int deviceTabIndex = m_deviceSets.size();
|
||||||
|
m_deviceSets.push_back(new DeviceSet(deviceTabIndex));
|
||||||
|
m_deviceSets.back()->m_deviceSourceEngine = nullptr;
|
||||||
|
m_deviceSets.back()->m_deviceSinkEngine = nullptr;
|
||||||
|
m_deviceSets.back()->m_deviceMIMOEngine = dspDeviceMIMOEngine;
|
||||||
|
|
||||||
|
char tabNameCStr[16];
|
||||||
|
sprintf(tabNameCStr, "M%d", deviceTabIndex);
|
||||||
|
|
||||||
|
DeviceAPI *deviceAPI = new DeviceAPI(DeviceAPI::StreamMIMO, deviceTabIndex, nullptr, nullptr, dspDeviceMIMOEngine);
|
||||||
|
|
||||||
|
// create a test MIMO by default
|
||||||
|
int testMIMODeviceIndex = DeviceEnumerator::instance()->getTestMIMODeviceIndex();
|
||||||
|
const PluginInterface::SamplingDevice *samplingDevice = DeviceEnumerator::instance()->getMIMOSamplingDevice(testMIMODeviceIndex);
|
||||||
|
m_deviceSets.back()->m_deviceAPI->setSamplingDeviceSequence(samplingDevice->sequence);
|
||||||
|
m_deviceSets.back()->m_deviceAPI->setDeviceNbItems(samplingDevice->deviceNbItems);
|
||||||
|
m_deviceSets.back()->m_deviceAPI->setDeviceItemIndex(samplingDevice->deviceItemIndex);
|
||||||
|
m_deviceSets.back()->m_deviceAPI->setHardwareId(samplingDevice->hardwareId);
|
||||||
|
m_deviceSets.back()->m_deviceAPI->setSamplingDeviceId(samplingDevice->id);
|
||||||
|
m_deviceSets.back()->m_deviceAPI->setSamplingDeviceSerial(samplingDevice->serial);
|
||||||
|
m_deviceSets.back()->m_deviceAPI->setSamplingDeviceDisplayName(samplingDevice->displayedName);
|
||||||
|
m_deviceSets.back()->m_deviceAPI->setSamplingDevicePluginInterface(DeviceEnumerator::instance()->getMIMOPluginInterface(testMIMODeviceIndex));
|
||||||
|
|
||||||
|
QString userArgs = m_settings.getDeviceUserArgs().findUserArgs(samplingDevice->hardwareId, samplingDevice->sequence);
|
||||||
|
|
||||||
|
if (userArgs.size() > 0) {
|
||||||
|
m_deviceSets.back()->m_deviceAPI->setHardwareUserArguments(userArgs);
|
||||||
|
}
|
||||||
|
|
||||||
|
DeviceSampleMIMO *mimo = m_deviceSets.back()->m_deviceAPI->getPluginInterface()->createSampleMIMOPluginInstance(
|
||||||
|
m_deviceSets.back()->m_deviceAPI->getSamplingDeviceId(), m_deviceSets.back()->m_deviceAPI);
|
||||||
|
m_deviceSets.back()->m_deviceAPI->setSampleMIMO(mimo);
|
||||||
|
}
|
||||||
|
|
||||||
void MainCore::removeLastDevice()
|
void MainCore::removeLastDevice()
|
||||||
{
|
{
|
||||||
if (m_deviceSets.back()->m_deviceSourceEngine) // source set
|
if (m_deviceSets.back()->m_deviceSourceEngine) // source set
|
||||||
|
|
|
@ -61,6 +61,7 @@ public:
|
||||||
|
|
||||||
void addSourceDevice();
|
void addSourceDevice();
|
||||||
void addSinkDevice();
|
void addSinkDevice();
|
||||||
|
void addMIMODevice();
|
||||||
void removeLastDevice();
|
void removeLastDevice();
|
||||||
void changeSampleSource(int deviceSetIndex, int selectedDeviceIndex);
|
void changeSampleSource(int deviceSetIndex, int selectedDeviceIndex);
|
||||||
void changeSampleSink(int deviceSetIndex, int selectedDeviceIndex);
|
void changeSampleSink(int deviceSetIndex, int selectedDeviceIndex);
|
||||||
|
|
Loading…
Reference in New Issue