From 85d1b8c4be6a2af33166775066a9cb7352062adc Mon Sep 17 00:00:00 2001 From: f4exb Date: Sun, 17 Nov 2019 03:55:02 +0100 Subject: [PATCH] MIMO plugins: fixed generation --- .../beamsteeringcwmodbaseband.cpp | 2 +- .../testmosync/testmosyncthread.cpp | 72 +++++++++++++++---- .../samplemimo/testmosync/testmosyncthread.h | 1 + 3 files changed, 59 insertions(+), 16 deletions(-) diff --git a/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodbaseband.cpp b/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodbaseband.cpp index 5231cb20f..25ddfcf92 100644 --- a/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodbaseband.cpp +++ b/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodbaseband.cpp @@ -42,7 +42,7 @@ BeamSteeringCWModBaseband::BeamSteeringCWModBaseband() : QObject::connect( &m_sampleMOFifo, - &SampleMOFifo::dataSyncRead, + &SampleMOFifo::dataReadSync, this, &BeamSteeringCWModBaseband::handleData, Qt::QueuedConnection diff --git a/plugins/samplemimo/testmosync/testmosyncthread.cpp b/plugins/samplemimo/testmosync/testmosyncthread.cpp index 7aae77565..6e72c2980 100644 --- a/plugins/samplemimo/testmosync/testmosyncthread.cpp +++ b/plugins/samplemimo/testmosync/testmosyncthread.cpp @@ -188,14 +188,7 @@ void TestMOSyncThread::callbackPart(qint16* buf, qint32 nSamples, int iBegin) { for (unsigned int channel = 0; channel < 2; channel++) { - qDebug("TestMOSyncThread::callbackPart: nSamples: %d channel: %u", nSamples, channel); SampleVector::iterator begin = m_sampleFifo->getData(channel).begin() + iBegin; - // m_testVector.allocate(nSamples/(1<& data = m_sampleFifo->getData(); + m_sampleFifo->readSync(m_samplesChunkSize, iPart1Begin, iPart1End, iPart2Begin, iPart2End); - while (chunkSize >= m_blockSize) - { - callback(m_buf, m_blockSize); - chunkSize -= m_blockSize; + if (iPart1Begin != iPart1End) { + callbackPart(data, iPart1Begin, iPart1End); } - m_samplesRemainder = chunkSize; + if (iPart2Begin != iPart2End) { + callbackPart(data, iPart2Begin, iPart2End); + } } } +void TestMOSyncThread::callbackPart(std::vector& data, unsigned int iBegin, unsigned int iEnd) +{ + unsigned int chunkSize = iEnd - iBegin; + + for (unsigned int channel = 0; channel < 2; channel++) + { + SampleVector::iterator beginRead = data[channel].begin() + iBegin; + + if (m_log2Interp == 0) + { + m_interpolators[channel].interpolate1(&beginRead, m_buf, 2*chunkSize); + + if (channel == m_feedSpectrumIndex) { + feedSpectrum(m_buf, 2*chunkSize); + } + } + else + { + switch (m_log2Interp) + { + case 1: + m_interpolators[channel].interpolate2_cen(&beginRead, m_buf, chunkSize*(1<& data, unsigned int iBegin, unsigned int iEnd); void callback(qint16* buf, qint32 samplesPerChannel); void feedSpectrum(int16_t *buf, unsigned int bufSize);