diff --git a/plugins/samplemimo/bladerf2mimo/bladerf2mimo.cpp b/plugins/samplemimo/bladerf2mimo/bladerf2mimo.cpp index cb71106b8..3146fd64e 100644 --- a/plugins/samplemimo/bladerf2mimo/bladerf2mimo.cpp +++ b/plugins/samplemimo/bladerf2mimo/bladerf2mimo.cpp @@ -73,8 +73,7 @@ BladeRF2MIMO::BladeRF2MIMO(DeviceAPI *deviceAPI) : } m_mimoType = MIMOHalfSynchronous; - m_sampleSinkFifos.push_back(SampleSinkFifo(96000 * 4)); - m_sampleSinkFifos.push_back(SampleSinkFifo(96000 * 4)); + m_sampleMIFifo.init(2, 96000 * 4); m_deviceAPI->setNbSourceStreams(2); m_networkManager = new QNetworkAccessManager(); connect(m_networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(networkManagerFinished(QNetworkReply*))); @@ -177,8 +176,7 @@ void BladeRF2MIMO::startRx() } m_sourceThread = new BladeRF2MIThread(m_dev->getDev()); - m_sourceThread->setFifo(0, &m_sampleSinkFifos[0]); - m_sourceThread->setFifo(1, &m_sampleSinkFifos[1]); + m_sourceThread->setFifo(&m_sampleMIFifo); m_sourceThread->setFcPos(m_settings.m_fcPos); m_sourceThread->setLog2Decimation(m_settings.m_log2Decim); diff --git a/plugins/samplemimo/bladerf2mimo/bladerf2mithread.cpp b/plugins/samplemimo/bladerf2mimo/bladerf2mithread.cpp index 82d542b3b..1b6831c9b 100644 --- a/plugins/samplemimo/bladerf2mimo/bladerf2mithread.cpp +++ b/plugins/samplemimo/bladerf2mimo/bladerf2mithread.cpp @@ -16,14 +16,15 @@ /////////////////////////////////////////////////////////////////////////////////// #include "bladerf2/devicebladerf2shared.h" -#include "dsp/samplesinkfifo.h" +#include "dsp/samplemififo.h" #include "bladerf2mithread.h" BladeRF2MIThread::BladeRF2MIThread(struct bladerf* dev, QObject* parent) : QThread(parent), m_running(false), - m_dev(dev) + m_dev(dev), + m_sampleFifo(nullptr) { qDebug("BladeRF2MIThread::BladeRF2MIThread"); m_buf = new qint16[2*DeviceBladeRF2::blockSize*2]; @@ -82,22 +83,6 @@ int BladeRF2MIThread::getFcPos() const return m_fcPos; } -void BladeRF2MIThread::setFifo(unsigned int channel, SampleSinkFifo *sampleFifo) -{ - if (channel < 2) { - m_sampleFifo[channel] = sampleFifo; - } -} - -SampleSinkFifo *BladeRF2MIThread::getFifo(unsigned int channel) -{ - if (channel < 2) { - return m_sampleFifo[channel]; - } else { - return nullptr; - } -} - void BladeRF2MIThread::run() { int res; @@ -143,12 +128,15 @@ void BladeRF2MIThread::callback(const qint16* buf, qint32 samplesPerChannel) return; } + std::vector vbegin; + for (unsigned int channel = 0; channel < 2; channel++) { - if (m_sampleFifo[channel]) { - channelCallback(&buf[2*samplesPerChannel*channel], 2*samplesPerChannel, channel); - } + channelCallback(&buf[2*samplesPerChannel*channel], 2*samplesPerChannel, channel); + vbegin.push_back(m_convertBuffer[channel].begin()); } + + m_sampleFifo->writeSync(vbegin, samplesPerChannel/(1<write(m_convertBuffer[channel].begin(), it); } \ No newline at end of file diff --git a/plugins/samplemimo/bladerf2mimo/bladerf2mithread.h b/plugins/samplemimo/bladerf2mimo/bladerf2mithread.h index ff47eacd7..c14654463 100644 --- a/plugins/samplemimo/bladerf2mimo/bladerf2mithread.h +++ b/plugins/samplemimo/bladerf2mimo/bladerf2mithread.h @@ -29,7 +29,7 @@ #include "dsp/decimators.h" -class SampleSinkFifo; +class SampleMIFifo; class BladeRF2MIThread : public QThread { Q_OBJECT @@ -45,8 +45,8 @@ public: unsigned int getLog2Decimation() const; void setFcPos(int fcPos); int getFcPos() const; - void setFifo(unsigned int channel, SampleSinkFifo *sampleFifo); - SampleSinkFifo *getFifo(unsigned int channel); + void setFifo(SampleMIFifo *sampleFifo) { m_sampleFifo = sampleFifo; } + SampleMIFifo *getFifo() { return m_sampleFifo; } private: QMutex m_startWaitMutex; @@ -56,7 +56,7 @@ private: qint16 *m_buf; SampleVector m_convertBuffer[2]; - SampleSinkFifo* m_sampleFifo[2]; + SampleMIFifo* m_sampleFifo; Decimators m_decimators[2]; unsigned int m_log2Decim; int m_fcPos;