PlutoSDR input: restored soft decimation

This commit is contained in:
f4exb 2017-09-10 17:07:38 +02:00
parent ccb1563299
commit 251fcd202d
2 changed files with 11 additions and 16 deletions

View File

@ -41,14 +41,14 @@ DevicePlutoSDRBox::DevicePlutoSDRBox(const std::string& uri) :
if (m_valid) {
getXO();
setTracking();
// int nb_channels = iio_device_get_channels_count(m_devRx);
// for (int i = 0; i < nb_channels; i++) {
// iio_channel_disable(iio_device_get_channel(m_devRx, i));
// }
// nb_channels = iio_device_get_channels_count(m_devTx);
// for (int i = 0; i < nb_channels; i++) {
// iio_channel_disable(iio_device_get_channel(m_devTx, i));
// }
int nb_channels = iio_device_get_channels_count(m_devRx);
for (int i = 0; i < nb_channels; i++) {
iio_channel_disable(iio_device_get_channel(m_devRx, i));
}
nb_channels = iio_device_get_channels_count(m_devTx);
for (int i = 0; i < nb_channels; i++) {
iio_channel_disable(iio_device_get_channel(m_devTx, i));
}
}
}

View File

@ -92,24 +92,19 @@ void PlutoSDRInputThread::run()
p_end = m_plutoBox->rxBufferEnd();
ihs = 0;
// qDebug("PlutoSDRInputThread::run: %ld samples read step: %ld", nbytes_rx / p_inc, p_inc);
// p_inc is 2 on a char* buffer therefore each iteration processes only the I or Q sample
// I and Q samples are processed one at a time
// I and Q samples are processed one after the other
// conversion is not needed as samples are little endian
for (p_dat = m_plutoBox->rxBufferFirst(); p_dat < p_end; p_dat += p_inc)
{
// m_buf[2*is] = ((int16_t *) p_dat)[0];
// m_buf[2*is+1] = ((int16_t *) p_dat)[1];
// memcpy(&m_buf[2*ihs], p_dat, 2*sizeof(int16_t));
m_buf[ihs] = *((int16_t *) p_dat);
// iio_channel_convert(m_plutoBox->getRxChannel0(), (void *) &m_bufConv[2*ihs], (const void *) &m_buf[2*ihs]);
// iio_channel_convert(m_plutoBox->getRxChannel0(), (void *) &m_bufConv[ihs], (const void *) &m_buf[ihs]);
ihs++;
}
m_sampleFifo->write((unsigned char *) m_buf, ihs*sizeof(int16_t));
//convert(m_bufConv, 2 * m_blockSize);
//m_sampleFifo->write((unsigned char *) m_buf, ihs*sizeof(int16_t));
convert(m_buf, 2*m_blockSizeSamples); // size given in number of int16_t (I and Q interleaved)
}
m_running = false;