diff --git a/doc/img/SDRPlayV3_plugin.png b/doc/img/SDRPlayV3_plugin.png index 42558d3a0..a3b9cf6b5 100644 Binary files a/doc/img/SDRPlayV3_plugin.png and b/doc/img/SDRPlayV3_plugin.png differ diff --git a/doc/img/SDRPlayV3_plugin.xcf b/doc/img/SDRPlayV3_plugin.xcf new file mode 100644 index 000000000..3138f5403 Binary files /dev/null and b/doc/img/SDRPlayV3_plugin.xcf differ diff --git a/plugins/samplesource/sdrplayv3/readme.md b/plugins/samplesource/sdrplayv3/readme.md index 7c3ba4883..a24083e4c 100644 --- a/plugins/samplesource/sdrplayv3/readme.md +++ b/plugins/samplesource/sdrplayv3/readme.md @@ -40,35 +40,39 @@ Selects which tuner is used for input. For RSPduo this can be 1 or 2. Other RSP Selects which antenna port is used. The antenna ports available depend upon the RSP device and tuner selected. -

7: DC offset correction

+

7. Transverter mode open dialog

+ +This button opens a dialog to set the transverter mode frequency translation options. The details about this dialog can be found [here](../../../sdrgui/gui/transverterdialog.md) + +

8: DC offset correction

Check this button to enable DC offset correction. -

8: IQ imbalance correction

+

9: IQ imbalance correction

Check this button to enable IQ imbalance correction. -

9: External reference clock output

+

10: External reference clock output

Enable reference clock output. This is only available for RSP2 and DSPduo. -

10: Bias tee

+

11: Bias tee

Enable bias tee. This is only available for RSP1A, RSP2, RSPduo tuner 2 and RSPdx. -

11: AM notch filter

+

12: AM notch filter

Enable AM notch filter. This is only available for RSPduo tuner 1. -

12: MW/FM notch filter

+

13: MW/FM notch filter

Enable MW/FM notch filter. This is only available for RSP1A, RSP2, RSPduo and RSPdx. -

13: DAB notch filter

+

14: DAB notch filter

Enable DAB notch filter. This is only available for RSP1A, RSPduo and RSPdx. -

14: IF bandwidth

+

15: IF bandwidth

This selects the IF filter bandwidth. The following bandwidths are available: @@ -81,31 +85,49 @@ This selects the IF filter bandwidth. The following bandwidths are available: - 7000 kHz - 8000 kHz -

15: IF frequency

+

16: IF frequency

Warning there is no good support of non zero IF. **It is advised to keep zero IF for normal use**. +Some tricks are provided for expert use of non-zero IFs. You may want to start from these settings to experiment more with it. + This selects the IF frequency between these values: - **0 for zero IF** - - 450 kHz. Some practical tricks that may or may not work: - - Frequency is shifted by -450 kHZ. - - Do not set center frequency lower than 450 kHz down the target frequency - - Use at least 1536 kHz bandwidth (14) - - After sample rate change (16) you may need to start/stop device to get thins right. - - Use decimation > 1 (17) with Inf position (18) - - 1620 kHz: do not use - - 2048 kHz: do not use + - 450 kHz. + - Move center frequency by -450 kHZ (3). + - Direct frequency reading is -450 kHz off from real Rx frequency. + - You may use the transverter mode (7) with a shift of +450 kHz to correct the frequency reading + - If you already use the transverter mode for transverter work just add 450 kHz to the current shift + - Use 1536 kHz bandwidth (15) + - After sample rate change (17) you may need to start/stop device to get things right. + - Use decimation > 1 (18) with Inf position (19) + - 1620 kHz: + - Move center frequency by -1620 kHz (3). + - Direct frequency reading is -1620 kHz off from real Rx frequency. + - You may use the transverter mode (7) with a shift of +1620 kHz to correct the frequency reading + - If you already use the transverter mode for transverter work just add 1620 kHz to the current shift + - Use 5000 kHz bandwidth (15) + - After sample rate change (17) you may need to start/stop device to get things right. + - Use decimation > 1 (18) with Inf position (19) + - 2048 kHz: + - Move center frequency by -2048 kHz (3). + - Direct frequency reading is -2048 kHz off from real Rx frequency. + - You may use the transverter mode (7) with a shift of +2048 kHz to correct the frequency reading + - If you already use the transverter mode for transverter work just add 2048 kHz to the current shift + - Use 5000 kHz bandwidth (15) + - After sample rate change (17) you may need to start/stop device to get things right. + - Use decimation > 1 (18) with Inf position (19) -

16: Sample rate

+

17: Sample rate

Sets the ADC IQ sample rats from 2M to 10.66M Hz. -

17: Decimation

+

18: Decimation

Decimation in powers of two from 1 (no decimation) to 64. -

18: Decimated bandpass center frequency position relative the SDRplay center frequency

+

19: Decimated bandpass center frequency position relative the SDRplay center frequency

- **Cen**: the decimation operation takes place around the SDRplay center frequency Fs. - **Inf**: the decimation operation takes place around Fs - Fc. @@ -116,14 +138,14 @@ With SR as the sample rate before decimation Fc is calculated as: - if decimation n is 4 or lower: Fc = SR/2^(log2(n)-1). The device center frequency is on the side of the baseband. You need a RF filter bandwidth at least twice the baseband. - if decimation n is 8 or higher: Fc = SR/n. The device center frequency is half the baseband away from the side of the baseband. You need a RF filter bandwidth at least 3 times the baseband. -

19. RF gain setting

+

20. RF gain setting

Sets the LNA and mixer gain dB. The settings available depended upon the RSP device and frequency band. -

20. IF AGC

+

21. IF AGC

Check this button to enable IF automatic gain control. -

21. IF gain

+

22. IF gain

Manual IF gain from 0 to -59 dB. Only enabled when IF AGC is disabled. diff --git a/plugins/samplesource/sdrplayv3/sdrplayv3gui.cpp b/plugins/samplesource/sdrplayv3/sdrplayv3gui.cpp index 5e28a1e9a..7b78455b4 100644 --- a/plugins/samplesource/sdrplayv3/sdrplayv3gui.cpp +++ b/plugins/samplesource/sdrplayv3/sdrplayv3gui.cpp @@ -44,7 +44,7 @@ SDRPlayV3Gui::SDRPlayV3Gui(DeviceUISet *deviceUISet, QWidget* parent) : ui->setupUi(this); ui->centerFrequency->setColorMapper(ColorMapper(ColorMapper::GrayGold)); - ui->centerFrequency->setValueRange(7, 1U, 2000000U); + updateFrequencyLimits(); ui->ifFrequency->clear(); for (unsigned int i = 0; i < SDRPlayV3IF::getNbIFs(); i++) @@ -218,8 +218,28 @@ void SDRPlayV3Gui::updateSampleRateAndFrequency() ui->deviceRateText->setText(tr("%1k").arg((float)m_sampleRate / 1000)); } +void SDRPlayV3Gui::updateFrequencyLimits() +{ + // values in kHz + qint64 deltaFrequency = m_settings.m_transverterMode ? m_settings.m_transverterDeltaFrequency/1000 : 0; + qint64 minLimit = 1U + deltaFrequency; + qint64 maxLimit = 2000000U + deltaFrequency; + + minLimit = minLimit < 0 ? 0 : minLimit > 9999999 ? 9999999 : minLimit; + maxLimit = maxLimit < 0 ? 0 : maxLimit > 9999999 ? 9999999 : maxLimit; + + qDebug("SDRPlayV3Gui::updateFrequencyLimits: delta: %lld min: %lld max: %lld", deltaFrequency, minLimit, maxLimit); + + ui->centerFrequency->setValueRange(7, minLimit, maxLimit); +} + void SDRPlayV3Gui::displaySettings() { + ui->transverter->setDeltaFrequency(m_settings.m_transverterDeltaFrequency); + ui->transverter->setDeltaFrequencyActive(m_settings.m_transverterMode); + ui->transverter->setIQOrder(m_settings.m_iqOrder); + updateFrequencyLimits(); + ui->centerFrequency->setValue(m_settings.m_centerFrequency / 1000); ui->ppm->setValue(m_settings.m_LOppmTenths); @@ -471,6 +491,17 @@ void SDRPlayV3Gui::on_startStop_toggled(bool checked) } } +void SDRPlayV3Gui::on_transverter_clicked() +{ + m_settings.m_transverterMode = ui->transverter->getDeltaFrequencyAcive(); + m_settings.m_transverterDeltaFrequency = ui->transverter->getDeltaFrequency(); + m_settings.m_iqOrder = ui->transverter->getIQOrder(); + qDebug("SDRPlayV3Gui::on_transverter_clicked: %lld Hz %s", m_settings.m_transverterDeltaFrequency, m_settings.m_transverterMode ? "on" : "off"); + updateFrequencyLimits(); + m_settings.m_centerFrequency = ui->centerFrequency->getValueNew()*1000; + sendSettings(); +} + void SDRPlayV3Gui::openDeviceSettingsDialog(const QPoint& p) { BasicDeviceSettingsDialog dialog(this); diff --git a/plugins/samplesource/sdrplayv3/sdrplayv3gui.h b/plugins/samplesource/sdrplayv3/sdrplayv3gui.h index e91e79af9..0c790c961 100644 --- a/plugins/samplesource/sdrplayv3/sdrplayv3gui.h +++ b/plugins/samplesource/sdrplayv3/sdrplayv3gui.h @@ -67,6 +67,7 @@ private: void updateLNAValues(); void sendSettings(); void updateSampleRateAndFrequency(); + void updateFrequencyLimits(); bool handleMessage(const Message& message); private slots: @@ -93,6 +94,7 @@ private slots: void on_gainIFAGC_toggled(bool checked); void on_gainIF_valueChanged(int value); void on_startStop_toggled(bool checked); + void on_transverter_clicked(); void openDeviceSettingsDialog(const QPoint& p); }; diff --git a/plugins/samplesource/sdrplayv3/sdrplayv3gui.ui b/plugins/samplesource/sdrplayv3/sdrplayv3gui.ui index a7f57a614..f4665f4f5 100644 --- a/plugins/samplesource/sdrplayv3/sdrplayv3gui.ui +++ b/plugins/samplesource/sdrplayv3/sdrplayv3gui.ui @@ -6,7 +6,7 @@ 0 0 - 317 + 409 260 @@ -278,6 +278,25 @@ + + + + + 24 + 24 + + + + Transverter frequency translation dialog + + + X + + + false + + + @@ -791,6 +810,11 @@
gui/valuedial.h
1 + + TransverterButton + QPushButton +
gui/transverterbutton.h
+
diff --git a/plugins/samplesource/sdrplayv3/sdrplayv3input.cpp b/plugins/samplesource/sdrplayv3/sdrplayv3input.cpp index 2d9fa6433..bc9cfd80d 100644 --- a/plugins/samplesource/sdrplayv3/sdrplayv3input.cpp +++ b/plugins/samplesource/sdrplayv3/sdrplayv3input.cpp @@ -429,20 +429,37 @@ bool SDRPlayV3Input::applySettings(const SDRPlayV3Settings& settings, bool forwa if ((m_settings.m_LOppmTenths != settings.m_LOppmTenths) || force) { reverseAPIKeys.append("LOppmTenths"); } + if ((m_settings.m_transverterMode != settings.m_transverterMode) || force) { + reverseAPIKeys.append("transverterMode"); + } + if ((m_settings.m_transverterDeltaFrequency != settings.m_transverterDeltaFrequency) || force) { + reverseAPIKeys.append("transverterDeltaFrequency"); + } + + if ((m_settings.m_iqOrder != settings.m_iqOrder) || force) + { + reverseAPIKeys.append("iqOrder"); + + if (m_sdrPlayThread) { + m_sdrPlayThread->setIQOrder(settings.m_iqOrder); + } + } if ((m_settings.m_centerFrequency != settings.m_centerFrequency) || (m_settings.m_LOppmTenths != settings.m_LOppmTenths) || (m_settings.m_fcPos != settings.m_fcPos) - || (m_settings.m_log2Decim != settings.m_log2Decim) || force) + || (m_settings.m_log2Decim != settings.m_log2Decim) + || (m_settings.m_transverterMode != settings.m_transverterMode) + || (m_settings.m_transverterDeltaFrequency != settings.m_transverterDeltaFrequency) || force) { qint64 deviceCenterFrequency = DeviceSampleSource::calculateDeviceCenterFrequency( settings.m_centerFrequency, - 0, + settings.m_transverterDeltaFrequency, settings.m_log2Decim, (DeviceSampleSource::fcPos_t) settings.m_fcPos, settings.m_devSampleRate, DeviceSampleSource::FrequencyShiftScheme::FSHIFT_STD, - false); + settings.m_transverterMode); forwardChange = true; @@ -862,6 +879,15 @@ void SDRPlayV3Input::webapiUpdateDeviceSettings( if (deviceSettingsKeys.contains("antenna")) { settings.m_antenna = response.getSdrPlayV3Settings()->getAntenna(); } + if (deviceSettingsKeys.contains("transverterDeltaFrequency")) { + settings.m_transverterDeltaFrequency = response.getSdrPlayV3Settings()->getTransverterDeltaFrequency(); + } + if (deviceSettingsKeys.contains("transverterMode")) { + settings.m_transverterMode = response.getSdrPlayV3Settings()->getTransverterMode() != 0; + } + if (deviceSettingsKeys.contains("iqOrder")) { + settings.m_iqOrder = response.getSdrPlayV3Settings()->getIqOrder() != 0; + } if (deviceSettingsKeys.contains("useReverseAPI")) { settings.m_useReverseAPI = response.getSdrPlayV3Settings()->getUseReverseApi() != 0; } @@ -896,6 +922,9 @@ void SDRPlayV3Input::webapiFormatDeviceSettings(SWGSDRangel::SWGDeviceSettings& response.getSdrPlayV3Settings()->setExtRef(settings.m_extRef); response.getSdrPlayV3Settings()->setTuner(settings.m_tuner); response.getSdrPlayV3Settings()->setAntenna(settings.m_antenna); + response.getSdrPlayV3Settings()->setTransverterDeltaFrequency(settings.m_transverterDeltaFrequency); + response.getSdrPlayV3Settings()->setTransverterMode(settings.m_transverterMode ? 1 : 0); + response.getSdrPlayV3Settings()->setIqOrder(settings.m_iqOrder ? 1 : 0); response.getSdrPlayV3Settings()->setUseReverseApi(settings.m_useReverseAPI ? 1 : 0); @@ -1026,6 +1055,15 @@ void SDRPlayV3Input::webapiReverseSendSettings(QList& deviceSettingsKey if (deviceSettingsKeys.contains("antenna") || force) { swgSDRPlayV3Settings->setAntenna(settings.m_antenna); } + if (deviceSettingsKeys.contains("transverterDeltaFrequency") || force) { + swgSDRPlayV3Settings->setTransverterDeltaFrequency(settings.m_transverterDeltaFrequency); + } + if (deviceSettingsKeys.contains("transverterMode") || force) { + swgSDRPlayV3Settings->setTransverterMode(settings.m_transverterMode ? 1 : 0); + } + if (deviceSettingsKeys.contains("iqOrder") || force) { + swgSDRPlayV3Settings->setIqOrder(settings.m_iqOrder ? 1 : 0); + } QString deviceSettingsURL = QString("http://%1:%2/sdrangel/deviceset/%3/device/settings") .arg(settings.m_reverseAPIAddress) diff --git a/plugins/samplesource/sdrplayv3/sdrplayv3settings.cpp b/plugins/samplesource/sdrplayv3/sdrplayv3settings.cpp index f0526b87f..3787f473b 100644 --- a/plugins/samplesource/sdrplayv3/sdrplayv3settings.cpp +++ b/plugins/samplesource/sdrplayv3/sdrplayv3settings.cpp @@ -47,6 +47,9 @@ void SDRPlayV3Settings::resetToDefaults() m_tuner = 0; m_antenna = 0; m_extRef = false; + m_transverterMode = false; + m_iqOrder = true; + m_transverterDeltaFrequency = 0; m_useReverseAPI = false; m_reverseAPIAddress = "127.0.0.1"; m_reverseAPIPort = 8888; @@ -79,6 +82,10 @@ QByteArray SDRPlayV3Settings::serialize() const s.writeS32(23, m_tuner); s.writeS32(24, m_antenna); s.writeBool(25, m_extRef); + s.writeBool(26, m_transverterMode); + s.writeS64(27, m_transverterDeltaFrequency); + s.writeBool(28, m_iqOrder); + return s.final(); } @@ -128,6 +135,9 @@ bool SDRPlayV3Settings::deserialize(const QByteArray& data) d.readS32(23, &m_tuner, 0); d.readS32(24, &m_antenna, 0); d.readBool(25, &m_extRef, false); + d.readBool(26, &m_transverterMode, false); + d.readS64(27, &m_transverterDeltaFrequency, 0); + d.readBool(28, &m_iqOrder, true); return true; } diff --git a/plugins/samplesource/sdrplayv3/sdrplayv3settings.h b/plugins/samplesource/sdrplayv3/sdrplayv3settings.h index 268d9326f..6a2ed2a90 100644 --- a/plugins/samplesource/sdrplayv3/sdrplayv3settings.h +++ b/plugins/samplesource/sdrplayv3/sdrplayv3settings.h @@ -50,6 +50,9 @@ struct SDRPlayV3Settings { int m_tuner; int m_antenna; bool m_extRef; + bool m_transverterMode; + bool m_iqOrder; + qint64 m_transverterDeltaFrequency; bool m_useReverseAPI; QString m_reverseAPIAddress; uint16_t m_reverseAPIPort; diff --git a/plugins/samplesource/sdrplayv3/sdrplayv3thread.cpp b/plugins/samplesource/sdrplayv3/sdrplayv3thread.cpp index 6861757fe..7a2709cac 100644 --- a/plugins/samplesource/sdrplayv3/sdrplayv3thread.cpp +++ b/plugins/samplesource/sdrplayv3/sdrplayv3thread.cpp @@ -33,7 +33,8 @@ SDRPlayV3Thread::SDRPlayV3Thread(sdrplay_api_DeviceT* dev, SampleSinkFifo* sampl m_sampleFifo(sampleFifo), m_samplerate(2000000), m_log2Decim(0), - m_fcPos(0) + m_fcPos(0), + m_iqOrder(true) { } @@ -149,7 +150,11 @@ void SDRPlayV3Thread::callbackHelper(short *xi, short *xq, sdrplay_api_StreamCbP iq[i*2+1] = xq[i]; } - thread->callbackIQ(iq, numSamples*2); + if (thread->m_iqOrder) { + thread->callbackIQ(iq, numSamples*2); + } else { + thread->callbackQI(iq, numSamples*2); + } } } @@ -245,3 +250,96 @@ void SDRPlayV3Thread::callbackIQ(const qint16* buf, qint32 len) m_sampleFifo->write(m_convertBuffer.begin(), it); } + +void SDRPlayV3Thread::callbackQI(const qint16* buf, qint32 len) +{ + SampleVector::iterator it = m_convertBuffer.begin(); + + if (m_log2Decim == 0) + { + m_decimatorsQI.decimate1(&it, buf, len); + } + else + { + if (m_fcPos == 0) // Infradyne + { + switch (m_log2Decim) + { + case 1: + m_decimatorsQI.decimate2_inf(&it, buf, len); + break; + case 2: + m_decimatorsQI.decimate4_inf(&it, buf, len); + break; + case 3: + m_decimatorsQI.decimate8_inf(&it, buf, len); + break; + case 4: + m_decimatorsQI.decimate16_inf(&it, buf, len); + break; + case 5: + m_decimatorsQI.decimate32_inf(&it, buf, len); + break; + case 6: + m_decimatorsQI.decimate64_inf(&it, buf, len); + break; + default: + break; + } + } + else if (m_fcPos == 1) // Supradyne + { + switch (m_log2Decim) + { + case 1: + m_decimatorsQI.decimate2_sup(&it, buf, len); + break; + case 2: + m_decimatorsQI.decimate4_sup(&it, buf, len); + break; + case 3: + m_decimatorsQI.decimate8_sup(&it, buf, len); + break; + case 4: + m_decimatorsQI.decimate16_sup(&it, buf, len); + break; + case 5: + m_decimatorsQI.decimate32_sup(&it, buf, len); + break; + case 6: + m_decimatorsQI.decimate64_sup(&it, buf, len); + break; + default: + break; + } + } + else // Centered + { + switch (m_log2Decim) + { + case 1: + m_decimatorsQI.decimate2_cen(&it, buf, len); + break; + case 2: + m_decimatorsQI.decimate4_cen(&it, buf, len); + break; + case 3: + m_decimatorsQI.decimate8_cen(&it, buf, len); + break; + case 4: + m_decimatorsQI.decimate16_cen(&it, buf, len); + break; + case 5: + m_decimatorsQI.decimate32_cen(&it, buf, len); + break; + case 6: + m_decimatorsQI.decimate64_cen(&it, buf, len); + break; + default: + break; + } + } + } + + m_sampleFifo->write(m_convertBuffer.begin(), it); +} diff --git a/plugins/samplesource/sdrplayv3/sdrplayv3thread.h b/plugins/samplesource/sdrplayv3/sdrplayv3thread.h index 2637263e6..2debf6320 100644 --- a/plugins/samplesource/sdrplayv3/sdrplayv3thread.h +++ b/plugins/samplesource/sdrplayv3/sdrplayv3thread.h @@ -41,6 +41,7 @@ public: void setSamplerate(int samplerate); void setLog2Decimation(unsigned int log2_decim); void setFcPos(int fcPos); + void setIQOrder(bool iqOrder) { m_iqOrder = iqOrder; } void resetRfChanged(); bool waitForRfChanged(); @@ -57,14 +58,17 @@ private: int m_samplerate; unsigned int m_log2Decim; int m_fcPos; + bool m_iqOrder; int m_rfChanged; static const unsigned int m_rfChangedTimeout = 500; Decimators m_decimatorsIQ; + Decimators m_decimatorsQI; void run(); void callbackIQ(const qint16* buf, qint32 len); + void callbackQI(const qint16* buf, qint32 len); static void callbackHelper(short *xi, short *xq, sdrplay_api_StreamCbParamsT *params, unsigned int numSamples, unsigned int reset, void *ctx); static void eventCallback(sdrplay_api_EventT eventId, sdrplay_api_TunerSelectT tuner, sdrplay_api_EventParamsT *params, void *cbContext); diff --git a/sdrbase/resources/webapi/doc/html2/index.html b/sdrbase/resources/webapi/doc/html2/index.html index 36cf7fbd1..aac389257 100644 --- a/sdrbase/resources/webapi/doc/html2/index.html +++ b/sdrbase/resources/webapi/doc/html2/index.html @@ -10880,6 +10880,17 @@ margin-bottom: 20px; "antenna" : { "type" : "integer" }, + "transverterMode" : { + "type" : "integer" + }, + "transverterDeltaFrequency" : { + "type" : "integer", + "format" : "int64" + }, + "iqOrder" : { + "type" : "integer", + "description" : "IQ samples order\n * 0 - Q then I (swapped)\n * 1 - I then Q (straight)\n" + }, "useReverseAPI" : { "type" : "integer", "description" : "Synchronize with reverse API (1 for yes, 0 for no)" @@ -52269,7 +52280,7 @@ except ApiException as e:
- Generated 2022-02-06T00:22:44.703+01:00 + Generated 2022-02-06T20:14:33.369+01:00
diff --git a/sdrbase/resources/webapi/doc/swagger/include/SDRPlayV3.yaml b/sdrbase/resources/webapi/doc/swagger/include/SDRPlayV3.yaml index 9ecdab669..db184656d 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/SDRPlayV3.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/SDRPlayV3.yaml @@ -38,6 +38,17 @@ SDRPlayV3Settings: type: integer antenna: type: integer + transverterMode: + type: integer + transverterDeltaFrequency: + type: integer + format: int64 + iqOrder: + type: integer + description: > + IQ samples order + * 0 - Q then I (swapped) + * 1 - I then Q (straight) useReverseAPI: description: Synchronize with reverse API (1 for yes, 0 for no) type: integer diff --git a/swagger/sdrangel/api/swagger/include/SDRPlayV3.yaml b/swagger/sdrangel/api/swagger/include/SDRPlayV3.yaml index 83b2606cf..6afb3ea82 100644 --- a/swagger/sdrangel/api/swagger/include/SDRPlayV3.yaml +++ b/swagger/sdrangel/api/swagger/include/SDRPlayV3.yaml @@ -38,6 +38,17 @@ SDRPlayV3Settings: type: integer antenna: type: integer + transverterMode: + type: integer + transverterDeltaFrequency: + type: integer + format: int64 + iqOrder: + type: integer + description: > + IQ samples order + * 0 - Q then I (swapped) + * 1 - I then Q (straight) useReverseAPI: description: Synchronize with reverse API (1 for yes, 0 for no) type: integer diff --git a/swagger/sdrangel/code/html2/index.html b/swagger/sdrangel/code/html2/index.html index 36cf7fbd1..aac389257 100644 --- a/swagger/sdrangel/code/html2/index.html +++ b/swagger/sdrangel/code/html2/index.html @@ -10880,6 +10880,17 @@ margin-bottom: 20px; "antenna" : { "type" : "integer" }, + "transverterMode" : { + "type" : "integer" + }, + "transverterDeltaFrequency" : { + "type" : "integer", + "format" : "int64" + }, + "iqOrder" : { + "type" : "integer", + "description" : "IQ samples order\n * 0 - Q then I (swapped)\n * 1 - I then Q (straight)\n" + }, "useReverseAPI" : { "type" : "integer", "description" : "Synchronize with reverse API (1 for yes, 0 for no)" @@ -52269,7 +52280,7 @@ except ApiException as e:
- Generated 2022-02-06T00:22:44.703+01:00 + Generated 2022-02-06T20:14:33.369+01:00
diff --git a/swagger/sdrangel/code/qt5/client/SWGSDRPlayV3Settings.cpp b/swagger/sdrangel/code/qt5/client/SWGSDRPlayV3Settings.cpp index 777ae2e44..ddc012fa3 100644 --- a/swagger/sdrangel/code/qt5/client/SWGSDRPlayV3Settings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGSDRPlayV3Settings.cpp @@ -64,6 +64,12 @@ SWGSDRPlayV3Settings::SWGSDRPlayV3Settings() { m_tuner_isSet = false; antenna = 0; m_antenna_isSet = false; + transverter_mode = 0; + m_transverter_mode_isSet = false; + transverter_delta_frequency = 0L; + m_transverter_delta_frequency_isSet = false; + iq_order = 0; + m_iq_order_isSet = false; use_reverse_api = 0; m_use_reverse_api_isSet = false; reverse_api_address = nullptr; @@ -116,6 +122,12 @@ SWGSDRPlayV3Settings::init() { m_tuner_isSet = false; antenna = 0; m_antenna_isSet = false; + transverter_mode = 0; + m_transverter_mode_isSet = false; + transverter_delta_frequency = 0L; + m_transverter_delta_frequency_isSet = false; + iq_order = 0; + m_iq_order_isSet = false; use_reverse_api = 0; m_use_reverse_api_isSet = false; reverse_api_address = new QString(""); @@ -145,6 +157,9 @@ SWGSDRPlayV3Settings::cleanup() { + + + if(reverse_api_address != nullptr) { @@ -201,6 +216,12 @@ SWGSDRPlayV3Settings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&antenna, pJson["antenna"], "qint32", ""); + ::SWGSDRangel::setValue(&transverter_mode, pJson["transverterMode"], "qint32", ""); + + ::SWGSDRangel::setValue(&transverter_delta_frequency, pJson["transverterDeltaFrequency"], "qint64", ""); + + ::SWGSDRangel::setValue(&iq_order, pJson["iqOrder"], "qint32", ""); + ::SWGSDRangel::setValue(&use_reverse_api, pJson["useReverseAPI"], "qint32", ""); ::SWGSDRangel::setValue(&reverse_api_address, pJson["reverseAPIAddress"], "QString", "QString"); @@ -279,6 +300,15 @@ SWGSDRPlayV3Settings::asJsonObject() { if(m_antenna_isSet){ obj->insert("antenna", QJsonValue(antenna)); } + if(m_transverter_mode_isSet){ + obj->insert("transverterMode", QJsonValue(transverter_mode)); + } + if(m_transverter_delta_frequency_isSet){ + obj->insert("transverterDeltaFrequency", QJsonValue(transverter_delta_frequency)); + } + if(m_iq_order_isSet){ + obj->insert("iqOrder", QJsonValue(iq_order)); + } if(m_use_reverse_api_isSet){ obj->insert("useReverseAPI", QJsonValue(use_reverse_api)); } @@ -475,6 +505,36 @@ SWGSDRPlayV3Settings::setAntenna(qint32 antenna) { this->m_antenna_isSet = true; } +qint32 +SWGSDRPlayV3Settings::getTransverterMode() { + return transverter_mode; +} +void +SWGSDRPlayV3Settings::setTransverterMode(qint32 transverter_mode) { + this->transverter_mode = transverter_mode; + this->m_transverter_mode_isSet = true; +} + +qint64 +SWGSDRPlayV3Settings::getTransverterDeltaFrequency() { + return transverter_delta_frequency; +} +void +SWGSDRPlayV3Settings::setTransverterDeltaFrequency(qint64 transverter_delta_frequency) { + this->transverter_delta_frequency = transverter_delta_frequency; + this->m_transverter_delta_frequency_isSet = true; +} + +qint32 +SWGSDRPlayV3Settings::getIqOrder() { + return iq_order; +} +void +SWGSDRPlayV3Settings::setIqOrder(qint32 iq_order) { + this->iq_order = iq_order; + this->m_iq_order_isSet = true; +} + qint32 SWGSDRPlayV3Settings::getUseReverseApi() { return use_reverse_api; @@ -574,6 +634,15 @@ SWGSDRPlayV3Settings::isSet(){ if(m_antenna_isSet){ isObjectUpdated = true; break; } + if(m_transverter_mode_isSet){ + isObjectUpdated = true; break; + } + if(m_transverter_delta_frequency_isSet){ + isObjectUpdated = true; break; + } + if(m_iq_order_isSet){ + isObjectUpdated = true; break; + } if(m_use_reverse_api_isSet){ isObjectUpdated = true; break; } diff --git a/swagger/sdrangel/code/qt5/client/SWGSDRPlayV3Settings.h b/swagger/sdrangel/code/qt5/client/SWGSDRPlayV3Settings.h index 7426749de..6df5cf747 100644 --- a/swagger/sdrangel/code/qt5/client/SWGSDRPlayV3Settings.h +++ b/swagger/sdrangel/code/qt5/client/SWGSDRPlayV3Settings.h @@ -96,6 +96,15 @@ public: qint32 getAntenna(); void setAntenna(qint32 antenna); + qint32 getTransverterMode(); + void setTransverterMode(qint32 transverter_mode); + + qint64 getTransverterDeltaFrequency(); + void setTransverterDeltaFrequency(qint64 transverter_delta_frequency); + + qint32 getIqOrder(); + void setIqOrder(qint32 iq_order); + qint32 getUseReverseApi(); void setUseReverseApi(qint32 use_reverse_api); @@ -166,6 +175,15 @@ private: qint32 antenna; bool m_antenna_isSet; + qint32 transverter_mode; + bool m_transverter_mode_isSet; + + qint64 transverter_delta_frequency; + bool m_transverter_delta_frequency_isSet; + + qint32 iq_order; + bool m_iq_order_isSet; + qint32 use_reverse_api; bool m_use_reverse_api_isSet;