1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2026-06-01 21:54:55 -04:00

MIMO: copied test source as multiple input. Adaptation of main classes

This commit is contained in:
f4exb
2019-05-18 06:30:37 +02:00
parent 1777eab1e3
commit ddde7a925f
55 changed files with 5362 additions and 52 deletions
+50 -12
View File
@@ -19,9 +19,11 @@
#include "plugin/plugininterface.h"
#include "dsp/dspdevicesourceengine.h"
#include "dsp/dspdevicesinkengine.h"
#include "dsp/dspdevicemimoengine.h"
#include "dsp/dspengine.h"
#include "dsp/devicesamplesource.h"
#include "dsp/devicesamplesink.h"
#include "dsp/devicesamplemimo.h"
#include "settings/preset.h"
#include "channel/channelapi.h"
@@ -31,7 +33,8 @@ DeviceAPI::DeviceAPI(
StreamType streamType,
int deviceTabIndex,
DSPDeviceSourceEngine *deviceSourceEngine,
DSPDeviceSinkEngine *deviceSinkEngine
DSPDeviceSinkEngine *deviceSinkEngine,
DSPDeviceMIMOEngine *deviceMIMOEngine
) :
m_streamType(streamType),
m_deviceTabIndex(deviceTabIndex),
@@ -44,7 +47,8 @@ DeviceAPI::DeviceAPI(
m_buddySharedPtr(0),
m_isBuddyLeader(false),
m_deviceSourceEngine(deviceSourceEngine),
m_deviceSinkEngine(deviceSinkEngine)
m_deviceSinkEngine(deviceSinkEngine),
m_deviceMIMOEngine(deviceMIMOEngine)
{
}
@@ -156,6 +160,13 @@ void DeviceAPI::setSampleSink(DeviceSampleSink* sink)
}
}
void DeviceAPI::setSampleMIMO(DeviceSampleMIMO* mimo)
{
if (m_deviceMIMOEngine) {
m_deviceMIMOEngine->setMIMO(mimo);
}
}
DeviceSampleSource *DeviceAPI::getSampleSource()
{
if (m_deviceSourceEngine) {
@@ -174,14 +185,25 @@ DeviceSampleSink *DeviceAPI::getSampleSink()
}
}
DeviceSampleMIMO *DeviceAPI::getSampleMIMO()
{
if (m_deviceMIMOEngine) {
return m_deviceMIMOEngine->getMIMO();
} else {
return nullptr;
}
}
bool DeviceAPI::initDeviceEngine()
{
if (m_deviceSourceEngine) {
return m_deviceSourceEngine->initAcquisition();
} else if (m_deviceSinkEngine) {
return m_deviceSinkEngine->initGeneration();
} else if (m_deviceMIMOEngine) {
return m_deviceMIMOEngine->initProcess();
} else {
return false; // TODO: not implemented
return false;
}
}
@@ -191,8 +213,10 @@ bool DeviceAPI::startDeviceEngine()
return m_deviceSourceEngine->startAcquisition();
} else if (m_deviceSinkEngine) {
return m_deviceSinkEngine->startGeneration();
} else if (m_deviceMIMOEngine) {
return m_deviceMIMOEngine->startProcess();
} else {
return false; // TODO: not implemented
return false;
}
}
@@ -202,6 +226,8 @@ void DeviceAPI::stopDeviceEngine()
m_deviceSourceEngine->stopAcquistion();
} else if (m_deviceSinkEngine) {
m_deviceSinkEngine->stopGeneration();
} else if (m_deviceMIMOEngine) {
m_deviceMIMOEngine->stopProcess();
}
}
@@ -211,8 +237,10 @@ DeviceAPI::EngineState DeviceAPI::state() const
return (DeviceAPI::EngineState) m_deviceSourceEngine->state();
} else if (m_deviceSinkEngine) {
return (DeviceAPI::EngineState) m_deviceSinkEngine->state();
} else if (m_deviceMIMOEngine) {
return (DeviceAPI::EngineState) m_deviceMIMOEngine->state();
} else {
return StError; // TODO: not implemented
return StError;
}
}
@@ -222,8 +250,10 @@ QString DeviceAPI::errorMessage()
return m_deviceSourceEngine->errorMessage();
} else if (m_deviceSinkEngine) {
return m_deviceSinkEngine->errorMessage();
} else if (m_deviceMIMOEngine) {
return m_deviceMIMOEngine->errorMessage();
} else {
return "Not implemented"; // TODO: not implemented
return "Not implemented";
}
}
@@ -233,8 +263,10 @@ uint DeviceAPI::getDeviceUID() const
return m_deviceSourceEngine->getUID();
} else if (m_deviceSinkEngine) {
return m_deviceSinkEngine->getUID();
} else if (m_deviceMIMOEngine) {
return m_deviceMIMOEngine->getUID();
} else {
return 0; // TODO: not implemented
return 0;
}
}
@@ -244,8 +276,10 @@ MessageQueue *DeviceAPI::getDeviceEngineInputMessageQueue()
return m_deviceSourceEngine->getInputMessageQueue();
} else if (m_deviceSinkEngine) {
return m_deviceSinkEngine->getInputMessageQueue();
} else if (m_deviceMIMOEngine) {
return m_deviceMIMOEngine->getInputMessageQueue();
} else {
return nullptr; // TODO: not implemented
return nullptr;
}
}
@@ -255,8 +289,10 @@ MessageQueue *DeviceAPI::getSamplingDeviceInputMessageQueue()
return m_deviceSourceEngine->getSource()->getInputMessageQueue();
} else if (m_deviceSinkEngine) {
return m_deviceSinkEngine->getSink()->getInputMessageQueue();
} else if (m_deviceMIMOEngine) {
return m_deviceMIMOEngine->getMIMO()->getInputMessageQueue();
} else {
return nullptr; // TODO: not implemented
return nullptr;
}
}
@@ -266,17 +302,19 @@ MessageQueue *DeviceAPI::getSamplingDeviceGUIMessageQueue()
return m_deviceSourceEngine->getSource()->getMessageQueueToGUI();
} else if (m_deviceSinkEngine) {
return m_deviceSinkEngine->getSink()->getMessageQueueToGUI();
} else if (m_deviceMIMOEngine) {
return m_deviceMIMOEngine->getMIMO()->getMessageQueueToGUI();
} else {
return nullptr; // TODO: not implemented
return nullptr;
}
}
void DeviceAPI::configureCorrections(bool dcOffsetCorrection, bool iqImbalanceCorrection, int streamIndex)
{
(void) streamIndex;
if (m_deviceSourceEngine) {
m_deviceSourceEngine->configureCorrections(dcOffsetCorrection, iqImbalanceCorrection);
} else if (m_deviceMIMOEngine) {
m_deviceMIMOEngine->configureCorrections(dcOffsetCorrection, iqImbalanceCorrection, streamIndex);
}
}