1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2026-06-11 02:08:46 -04:00

XTRX MIMO: fixed transmitter

This commit is contained in:
f4exb
2020-04-18 11:40:48 +02:00
parent aad783b653
commit 7e82ede7ae
+12 -13
View File
@@ -105,14 +105,13 @@ void XTRXMOThread::run()
qDebug("XTRXMOThread::run: stream started");
}
const unsigned int elemSize = 4; // XTRX uses 4 byte I+Q samples
std::vector<std::vector<char>> buffMem(2, std::vector<char>(elemSize*DeviceXTRX::blockSize));
qint16 buf0[2*DeviceXTRX::blockSize]; // I+Q = 2x16 bit samples
qint16 buf1[2*DeviceXTRX::blockSize];
std::vector<void *> buffs(2);
master_ts ts = 4096*1024;
for (std::size_t i = 0; i < 2; i++) {
buffs[i] = buffMem[i].data();
}
buffs[0] = &buf0;
buffs[1] = &buf1;
xtrx_send_ex_info_t nfo;
nfo.samples = DeviceXTRX::blockSize;
@@ -125,7 +124,7 @@ void XTRXMOThread::run()
while (m_running)
{
callback((qint16*) buffs[0], (qint16*) buffs[1], nfo.samples);
callback(buf0, buf1, nfo.samples);
res = xtrx_send_sync_ex(m_dev, &nfo);
if (res < 0)
@@ -189,7 +188,7 @@ void XTRXMOThread::callbackPart(qint16* buf0, qint16* buf1, qint32 nSamples, int
{
m_interpolators[channel].interpolate1(
&begin,
channel == 0 ? &buf0[2*nSamples] : &buf1[2*nSamples],
channel == 0 ? buf0 : buf1,
2*nSamples);
}
else
@@ -199,37 +198,37 @@ void XTRXMOThread::callbackPart(qint16* buf0, qint16* buf1, qint32 nSamples, int
case 1:
m_interpolators[channel].interpolate2_cen(
&begin,
channel == 0 ? &buf0[2*nSamples] : &buf1[2*nSamples],
channel == 0 ? buf0 : buf1,
2*nSamples);
break;
case 2:
m_interpolators[channel].interpolate4_cen(
&begin,
channel == 0 ? &buf0[2*nSamples] : &buf1[2*nSamples],
channel == 0 ? buf0 : buf1,
2*nSamples);
break;
case 3:
m_interpolators[channel].interpolate8_cen(
&begin,
channel == 0 ? &buf0[2*nSamples] : &buf1[2*nSamples],
channel == 0 ? buf0 : buf1,
2*nSamples);
break;
case 4:
m_interpolators[channel].interpolate16_cen(
&begin,
channel == 0 ? &buf0[2*nSamples] : &buf1[2*nSamples],
channel == 0 ? buf0 : buf1,
2*nSamples);
break;
case 5:
m_interpolators[channel].interpolate32_cen(
&begin,
channel == 0 ? &buf0[2*nSamples] : &buf1[2*nSamples],
channel == 0 ? buf0 : buf1,
2*nSamples);
break;
case 6:
m_interpolators[channel].interpolate64_cen(
&begin,
channel == 0 ? &buf0[2*nSamples] : &buf1[2*nSamples],
channel == 0 ? buf0 : buf1,
2*nSamples);
break;
default: