1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2026-04-19 14:06:23 -04:00

IQ swap: REST API: implementation in MIMO plugins

This commit is contained in:
f4exb 2020-06-22 02:10:21 +02:00
parent c6f31d0aa7
commit 05dbe94ae5
4 changed files with 36 additions and 0 deletions

View File

@ -173,6 +173,7 @@ bool BladeRF2MIMO::startRx()
m_sourceThread->setFifo(&m_sampleMIFifo);
m_sourceThread->setFcPos(m_settings.m_fcPosRx);
m_sourceThread->setLog2Decimation(m_settings.m_log2Decim);
m_sourceThread->setIQOrder(m_settings.m_iqOrder);
for (int i = 0; i < 2; i++)
{
@ -444,6 +445,7 @@ bool BladeRF2MIMO::applySettings(const BladeRF2MIMOSettings& settings, bool forc
<< " m_LOppmTenths: " << settings.m_LOppmTenths
<< " m_rxCenterFrequency: " << settings.m_rxCenterFrequency
<< " m_log2Decim: " << settings.m_log2Decim
<< " m_iqOrder: " << settings.m_iqOrder
<< " m_fcPosRx: " << settings.m_fcPosRx
<< " m_rxBandwidth: " << settings.m_rxBandwidth
<< " m_rx0GainMode: " << settings.m_rx0GainMode
@ -567,6 +569,17 @@ bool BladeRF2MIMO::applySettings(const BladeRF2MIMOSettings& settings, bool forc
}
}
if ((m_settings.m_iqOrder != settings.m_iqOrder) || force)
{
reverseAPIKeys.append("iqOrder");
if (m_sourceThread)
{
m_sourceThread->setIQOrder(settings.m_iqOrder);
qDebug() << "BladeRF2MIMO::applySettings: set IQ order to " << (settings.m_iqOrder ? "IQ" : "QI");
}
}
if ((m_settings.m_fcPosTx != settings.m_fcPosTx) || force)
{
reverseAPIKeys.append("fcPosTx");
@ -1049,6 +1062,9 @@ void BladeRF2MIMO::webapiUpdateDeviceSettings(
if (deviceSettingsKeys.contains("log2Decim")) {
settings.m_log2Decim = response.getBladeRf2MimoSettings()->getLog2Decim();
}
if (deviceSettingsKeys.contains("iqOrder")) {
settings.m_iqOrder = response.getBladeRf2MimoSettings()->getIqOrder() != 0;
}
if (deviceSettingsKeys.contains("fcPosRx")) {
settings.m_fcPosRx = static_cast<BladeRF2MIMOSettings::fcPos_t>(response.getBladeRf2MimoSettings()->getFcPosRx());
}
@ -1135,6 +1151,7 @@ void BladeRF2MIMO::webapiFormatDeviceSettings(SWGSDRangel::SWGDeviceSettings& re
response.getBladeRf2MimoSettings()->setRxCenterFrequency(settings.m_rxCenterFrequency);
response.getBladeRf2MimoSettings()->setLog2Decim(settings.m_log2Decim);
response.getBladeRf2MimoSettings()->setIqOrder(settings.m_iqOrder ? 1 : 0);
response.getBladeRf2MimoSettings()->setFcPosRx((int) settings.m_fcPosRx);
response.getBladeRf2MimoSettings()->setRxBandwidth(settings.m_rxBandwidth);
response.getBladeRf2MimoSettings()->setRx0GainMode(settings.m_rx0GainMode);
@ -1244,6 +1261,9 @@ void BladeRF2MIMO::webapiReverseSendSettings(QList<QString>& deviceSettingsKeys,
if (deviceSettingsKeys.contains("log2Decim") || force) {
swgBladeRF2MIMOSettings->setLog2Decim(settings.m_log2Decim);
}
if (deviceSettingsKeys.contains("iqOrder") || force) {
swgBladeRF2MIMOSettings->setIqOrder(settings.m_iqOrder ? 1 : 0);
}
if (deviceSettingsKeys.contains("fcPosRx") || force) {
swgBladeRF2MIMOSettings->setFcPosRx((int) settings.m_fcPosRx);
}

View File

@ -47,6 +47,7 @@ public:
int getFcPos() const;
void setFifo(SampleMIFifo *sampleFifo) { m_sampleFifo = sampleFifo; }
SampleMIFifo *getFifo() { return m_sampleFifo; }
void setIQOrder(bool iqOrder) { m_iqOrder = iqOrder; }
private:
QMutex m_startWaitMutex;

View File

@ -676,6 +676,7 @@ bool LimeSDRMIMO::applySettings(const LimeSDRMIMOSettings& settings, bool force)
<< " m_rxCenterFrequency: " << settings.m_rxCenterFrequency
<< " m_log2HardDecim: " << settings.m_log2HardDecim
<< " m_log2SoftDecim: " << settings.m_log2SoftDecim
<< " m_iqOrder: " << settings.m_iqOrder
<< " m_dcBlock: " << settings.m_dcBlock
<< " m_iqCorrection: " << settings.m_iqCorrection
<< " m_rxTransverterMode: " << settings.m_rxTransverterMode
@ -1838,6 +1839,7 @@ void LimeSDRMIMO::webapiFormatDeviceSettings(
response.getLimeSdrMimoSettings()->setIqCorrection(settings.m_iqCorrection ? 1 : 0);
response.getLimeSdrMimoSettings()->setLog2HardDecim(settings.m_log2HardDecim);
response.getLimeSdrMimoSettings()->setLog2SoftDecim(settings.m_log2SoftDecim);
response.getLimeSdrMimoSettings()->setIqOrder(settings.m_iqOrder ? 1 : 0);
response.getLimeSdrMimoSettings()->setNcoEnableRx(settings.m_ncoEnableRx ? 1 : 0);
response.getLimeSdrMimoSettings()->setNcoFrequencyRx(settings.m_ncoFrequencyRx);
response.getLimeSdrMimoSettings()->setRxTransverterDeltaFrequency(settings.m_rxTransverterDeltaFrequency);
@ -1937,6 +1939,9 @@ void LimeSDRMIMO::webapiUpdateDeviceSettings(
if (deviceSettingsKeys.contains("log2SoftDecim")) {
settings.m_log2SoftDecim = response.getLimeSdrMimoSettings()->getLog2SoftDecim();
}
if (deviceSettingsKeys.contains("iqOrder")) {
settings.m_iqOrder = response.getLimeSdrMimoSettings()->getIqOrder() != 0;
}
if (deviceSettingsKeys.contains("ncoEnableRx")) {
settings.m_ncoEnableRx = response.getLimeSdrMimoSettings()->getNcoEnableRx() != 0;
}
@ -2187,6 +2192,9 @@ void LimeSDRMIMO::webapiReverseSendSettings(QList<QString>& deviceSettingsKeys,
if (deviceSettingsKeys.contains("log2SoftDecim") || force) {
swgLimeSdrMIMOSettings->setLog2SoftDecim(settings.m_log2SoftDecim);
}
if (deviceSettingsKeys.contains("iqOrder") || force) {
swgLimeSdrMIMOSettings->setIqOrder(settings.m_iqOrder ? 1 : 0);
}
if (deviceSettingsKeys.contains("ncoEnableRx") || force) {
swgLimeSdrMIMOSettings->setNcoEnableRx(settings.m_ncoEnableRx ? 1 : 0);
}

View File

@ -1404,6 +1404,9 @@ void XTRXMIMO::webapiUpdateDeviceSettings(
if (deviceSettingsKeys.contains("log2SoftDecim")) {
settings.m_log2SoftDecim = response.getXtrxMimoSettings()->getLog2SoftDecim();
}
if (deviceSettingsKeys.contains("iqOrder")) {
settings.m_iqOrder = response.getXtrxMimoSettings()->getIqOrder() != 0;
}
if (deviceSettingsKeys.contains("rxCenterFrequency")) {
settings.m_rxCenterFrequency = response.getXtrxMimoSettings()->getRxCenterFrequency();
}
@ -1540,6 +1543,7 @@ void XTRXMIMO::webapiFormatDeviceSettings(
response.getXtrxMimoSettings()->setRxDevSampleRate(settings.m_rxDevSampleRate);
response.getXtrxMimoSettings()->setLog2HardDecim(settings.m_log2HardDecim);
response.getXtrxMimoSettings()->setLog2SoftDecim(settings.m_log2SoftDecim);
response.getXtrxMimoSettings()->setIqOrder(settings.m_iqOrder ? 1 : 0);
response.getXtrxMimoSettings()->setRxCenterFrequency(settings.m_rxCenterFrequency);
response.getXtrxMimoSettings()->setDcBlock(settings.m_dcBlock ? 1 : 0);
response.getXtrxMimoSettings()->setIqCorrection(settings.m_iqCorrection ? 1 : 0);
@ -1705,6 +1709,9 @@ void XTRXMIMO::webapiReverseSendSettings(QList<QString>& deviceSettingsKeys, con
if (deviceSettingsKeys.contains("log2SoftDecim") || force) {
swgXTRXMIMOSettings->setLog2SoftDecim(settings.m_log2SoftDecim);
}
if (deviceSettingsKeys.contains("iqOrder") || force) {
swgXTRXMIMOSettings->setIqOrder(settings.m_iqOrder ? 1 : 0);
}
if (deviceSettingsKeys.contains("rxCenterFrequency") || force) {
swgXTRXMIMOSettings->setRxCenterFrequency(settings.m_rxCenterFrequency);
}