kopia lustrzana https://github.com/f4exb/sdrangel
PlutoSDR MIMO: fixed MO thread and att setting in GUI
rodzic
bfa4c62d81
commit
94d037aa16
|
@ -43,7 +43,9 @@ DevicePlutoSDRBox::DevicePlutoSDRBox(const std::string& uri) :
|
|||
m_rxBuf(nullptr),
|
||||
m_txBuf(nullptr),
|
||||
m_xoInitial(0),
|
||||
m_temp(0.0f)
|
||||
m_temp(0.0f),
|
||||
m_rxSampleBytes(0),
|
||||
m_txSampleBytes(0)
|
||||
{
|
||||
m_ctx = iio_create_context_from_uri(uri.c_str());
|
||||
|
||||
|
@ -295,6 +297,7 @@ bool DevicePlutoSDRBox::openRx()
|
|||
df->with_scale? "true" : "false",
|
||||
df->scale,
|
||||
df->repeat);
|
||||
m_rxSampleBytes = df->length / 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -343,6 +346,7 @@ bool DevicePlutoSDRBox::openSecondRx()
|
|||
df->with_scale? "true" : "false",
|
||||
df->scale,
|
||||
df->repeat);
|
||||
m_rxSampleBytes = df->length / 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -390,6 +394,7 @@ bool DevicePlutoSDRBox::openTx()
|
|||
df->with_scale? "true" : "false",
|
||||
df->scale,
|
||||
df->repeat);
|
||||
m_txSampleBytes = df->length / 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -436,6 +441,7 @@ bool DevicePlutoSDRBox::openSecondTx()
|
|||
df->with_scale? "true" : "false",
|
||||
df->scale,
|
||||
df->repeat);
|
||||
m_txSampleBytes = df->length / 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -90,6 +90,8 @@ public:
|
|||
void closeSecondTx(); //!< Close second Tx (Tx1)
|
||||
int getNbRx() const { return m_rxChannels.size() / 2; }
|
||||
int getNbTx() const { return m_txChannels.size() / 2; }
|
||||
int getRxSampleBytes() const { return m_rxSampleBytes; }
|
||||
int getTxSampleBytes() const { return m_txSampleBytes; }
|
||||
struct iio_buffer *createRxBuffer(unsigned int size, bool cyclic);
|
||||
struct iio_buffer *createTxBuffer(unsigned int size, bool cyclic);
|
||||
void deleteRxBuffer();
|
||||
|
@ -133,6 +135,8 @@ private:
|
|||
bool m_valid;
|
||||
int64_t m_xoInitial;
|
||||
float m_temp;
|
||||
int m_rxSampleBytes; //!< size in bytes of a Rx I or Q sample. Rx must be opened.
|
||||
int m_txSampleBytes; //!< size in bytes of a Tx I or Q sample. Tx must be opened.
|
||||
QList<QString> m_rxChannelIds;
|
||||
QList<iio_channel*> m_rxChannels;
|
||||
QList<QString> m_txChannelIds;
|
||||
|
|
|
@ -228,7 +228,7 @@ bool PlutoSDRMIMO::startTx()
|
|||
m_plutoParams->getBox()->openSecondTx();
|
||||
}
|
||||
|
||||
m_plutoTxBuffer = m_plutoParams->getBox()->createRxBuffer(PlutoSDRMIMOSettings::m_plutoSDRBlockSizeSamples, false);
|
||||
m_plutoTxBuffer = m_plutoParams->getBox()->createTxBuffer(PlutoSDRMIMOSettings::m_plutoSDRBlockSizeSamples, false);
|
||||
m_sinkThread->startWork();
|
||||
mutexLocker.unlock();
|
||||
m_runningTx = true;
|
||||
|
|
|
@ -771,6 +771,19 @@ void PlutoSDRMIMOGUI::on_gain_valueChanged(int value)
|
|||
sendSettings();
|
||||
}
|
||||
|
||||
void PlutoSDRMIMOGUI::on_att_valueChanged(int value)
|
||||
{
|
||||
ui->attText->setText(QString("%1 dB").arg(QString::number(value*0.25, 'f', 2)));
|
||||
|
||||
if (m_streamIndex == 0) {
|
||||
m_settings.m_tx0Att = value;
|
||||
} else {
|
||||
m_settings.m_tx1Att = value;
|
||||
}
|
||||
|
||||
sendSettings();
|
||||
}
|
||||
|
||||
void PlutoSDRMIMOGUI::on_antenna_currentIndexChanged(int index)
|
||||
{
|
||||
if (m_rxElseTx)
|
||||
|
|
|
@ -103,6 +103,7 @@ private slots:
|
|||
void on_gainLock_toggled(bool checked);
|
||||
void on_gainMode_currentIndexChanged(int index);
|
||||
void on_gain_valueChanged(int value);
|
||||
void on_att_valueChanged(int value);
|
||||
void on_transverter_clicked();
|
||||
void on_rfDCOffset_toggled(bool checked);
|
||||
void on_bbDCOffset_toggled(bool checked);
|
||||
|
|
|
@ -90,13 +90,14 @@ int PlutoSDRMIThread::getFcPos() const
|
|||
void PlutoSDRMIThread::run()
|
||||
{
|
||||
std::ptrdiff_t p_inc = m_plutoBox->rxBufferStep();
|
||||
int sampleSize = 4; // I/Q sample size in bytes
|
||||
int sampleSize = 2*m_plutoBox->getRxSampleBytes(); // I/Q sample size in bytes
|
||||
int nbChan = p_inc / sampleSize; // number of I/Q channels
|
||||
|
||||
qDebug("PlutoSDRMOThread::run: nbChan: %d", nbChan);
|
||||
qDebug("PlutoSDRMOThread::run: I+Q bytes %d", sampleSize);
|
||||
qDebug("PlutoSDRMIThread::run: rxBufferStep: %ld bytes", p_inc);
|
||||
qDebug("PlutoSDRMIThread::run: Rx sample size is %ld bytes", m_plutoBox->getRxSampleSize()); // couple of I/Q
|
||||
qDebug("PlutoSDRMIThread::run: Tx sample size is %ld bytes", m_plutoBox->getTxSampleSize());
|
||||
qDebug("PlutoSDRMIThread::run: Rx all samples size is %ld bytes", m_plutoBox->getRxSampleSize());
|
||||
qDebug("PlutoSDRMIThread::run: Tx all samples size is %ld bytes", m_plutoBox->getTxSampleSize());
|
||||
qDebug("PlutoSDRMIThread::run: nominal nbytes_rx is %ld bytes with 1 refill", m_plutoSDRBlockSizeSamples*p_inc);
|
||||
|
||||
m_running = true;
|
||||
|
|
|
@ -86,13 +86,14 @@ int PlutoSDRMOThread::getFcPos() const
|
|||
void PlutoSDRMOThread::run()
|
||||
{
|
||||
std::ptrdiff_t p_inc = m_plutoBox->txBufferStep();
|
||||
int sampleSize = 4; // I/Q sample size in bytes
|
||||
int sampleSize = 2*m_plutoBox->getTxSampleBytes(); // I/Q sample size in bytes
|
||||
int nbChan = p_inc / sampleSize; // number of I/Q channels
|
||||
|
||||
qDebug("PlutoSDRMOThread::run: nbChan: %d", nbChan);
|
||||
qDebug("PlutoSDRMOThread::run: I+Q bytes %d", sampleSize);
|
||||
qDebug("PlutoSDRMOThread::run: txBufferStep: %ld bytes", p_inc);
|
||||
qDebug("PlutoSDRMOThread::run: Rx sample size is %ld bytes", m_plutoBox->getRxSampleSize()); // couple of I/Q
|
||||
qDebug("PlutoSDRMOThread::run: Tx sample size is %ld bytes", m_plutoBox->getTxSampleSize());
|
||||
qDebug("PlutoSDRMOThread::run: Rx all samples size is %ld bytes", m_plutoBox->getRxSampleSize());
|
||||
qDebug("PlutoSDRMOThread::run: Tx all samples size is %ld bytes", m_plutoBox->getTxSampleSize());
|
||||
qDebug("PlutoSDRMOThread::run: nominal nbytes_tx is %ld bytes", PlutoSDRMIMOSettings::m_plutoSDRBlockSizeSamples*p_inc);
|
||||
|
||||
m_running = true;
|
||||
|
@ -126,7 +127,7 @@ void PlutoSDRMOThread::run()
|
|||
// Schedule TX buffer for sending
|
||||
nbytes_tx = m_plutoBox->txBufferPush();
|
||||
|
||||
if (nbytes_tx != sampleSize*PlutoSDRMIMOSettings::m_plutoSDRBlockSizeSamples)
|
||||
if (nbytes_tx != nbChan*sampleSize*PlutoSDRMIMOSettings::m_plutoSDRBlockSizeSamples)
|
||||
{
|
||||
qDebug("PlutoSDRMOThread::run: error pushing buf %d / %d",
|
||||
(int) nbytes_tx, (int) sampleSize*PlutoSDRMIMOSettings::m_plutoSDRBlockSizeSamples);
|
||||
|
|
Ładowanie…
Reference in New Issue