From da3cb2d981add96c9400c9a1b9444b04e1e41e48 Mon Sep 17 00:00:00 2001 From: f4exb Date: Sun, 27 May 2018 20:15:55 +0200 Subject: [PATCH] SDRPlay input: implemeted WEB API (2) --- plugins/samplesource/sdrplay/sdrplayinput.cpp | 108 ++++++++++++++++++ .../sdrangel/api/swagger/include/SDRPlay.yaml | 2 - 2 files changed, 108 insertions(+), 2 deletions(-) diff --git a/plugins/samplesource/sdrplay/sdrplayinput.cpp b/plugins/samplesource/sdrplay/sdrplayinput.cpp index c43f9bba9..781ef22b3 100644 --- a/plugins/samplesource/sdrplay/sdrplayinput.cpp +++ b/plugins/samplesource/sdrplay/sdrplayinput.cpp @@ -650,6 +650,114 @@ int SDRPlayInput::webapiRun( return 200; } +int SDRPlayInput::webapiSettingsGet( + SWGSDRangel::SWGDeviceSettings& response, + QString& errorMessage __attribute__((unused))) +{ + response.setSdrPlaySettings(new SWGSDRangel::SWGSDRPlaySettings()); + response.getSdrPlaySettings()->init(); + webapiFormatDeviceSettings(response, m_settings); + return 200; +} + +int SDRPlayInput::webapiSettingsPutPatch( + bool force, + const QStringList& deviceSettingsKeys, + SWGSDRangel::SWGDeviceSettings& response, // query + response + QString& errorMessage __attribute__((unused))) +{ + SDRPlaySettings settings = m_settings; + + if (deviceSettingsKeys.contains("centerFrequency")) { + settings.m_centerFrequency = response.getSdrPlaySettings()->getCenterFrequency(); + } + if (deviceSettingsKeys.contains("tunerGain")) { + settings.m_tunerGain = response.getSdrPlaySettings()->getTunerGain(); + } + if (deviceSettingsKeys.contains("LOppmTenths")) { + settings.m_LOppmTenths = response.getSdrPlaySettings()->getLOppmTenths(); + } + if (deviceSettingsKeys.contains("frequencyBandIndex")) { + settings.m_frequencyBandIndex = response.getSdrPlaySettings()->getFrequencyBandIndex(); + } + if (deviceSettingsKeys.contains("ifFrequencyIndex")) { + settings.m_ifFrequencyIndex = response.getSdrPlaySettings()->getIfFrequencyIndex(); + } + if (deviceSettingsKeys.contains("bandwidthIndex")) { + settings.m_bandwidthIndex = response.getSdrPlaySettings()->getBandwidthIndex(); + } + if (deviceSettingsKeys.contains("devSampleRateIndex")) { + settings.m_devSampleRateIndex = response.getSdrPlaySettings()->getDevSampleRateIndex(); + } + if (deviceSettingsKeys.contains("log2Decim")) { + settings.m_log2Decim = response.getSdrPlaySettings()->getLog2Decim(); + } + if (deviceSettingsKeys.contains("fcPos")) + { + int fcPos = response.getSdrPlaySettings()->getFcPos(); + fcPos = fcPos < 0 ? 0 : fcPos > 2 ? 2 : fcPos; + settings.m_fcPos = (SDRPlaySettings::fcPos_t) fcPos; + } + if (deviceSettingsKeys.contains("dcBlock")) { + settings.m_dcBlock = response.getSdrPlaySettings()->getDcBlock() != 0; + } + if (deviceSettingsKeys.contains("iqCorrection")) { + settings.m_iqCorrection = response.getSdrPlaySettings()->getIqCorrection() != 0; + } + if (deviceSettingsKeys.contains("tunerGainMode")) { + settings.m_tunerGainMode = response.getSdrPlaySettings()->getTunerGainMode() != 0; + } + if (deviceSettingsKeys.contains("lnaOn")) { + settings.m_lnaOn = response.getSdrPlaySettings()->getLnaOn() != 0; + } + if (deviceSettingsKeys.contains("mixerAmpOn")) { + settings.m_mixerAmpOn = response.getSdrPlaySettings()->getMixerAmpOn() != 0; + } + if (deviceSettingsKeys.contains("basebandGain")) { + settings.m_basebandGain = response.getSdrPlaySettings()->getBasebandGain(); + } + if (deviceSettingsKeys.contains("fileRecordName")) { + settings.m_fileRecordName = *response.getRtlSdrSettings()->getFileRecordName(); + } + + MsgConfigureSDRPlay *msg = MsgConfigureSDRPlay::create(settings, force); + m_inputMessageQueue.push(msg); + + if (m_guiMessageQueue) // forward to GUI if any + { + MsgConfigureSDRPlay *msgToGUI = MsgConfigureSDRPlay::create(settings, force); + m_guiMessageQueue->push(msgToGUI); + } + + webapiFormatDeviceSettings(response, settings); + return 200; +} + +void SDRPlayInput::webapiFormatDeviceSettings(SWGSDRangel::SWGDeviceSettings& response, const SDRPlaySettings& settings) +{ + response.getSdrPlaySettings()->setCenterFrequency(settings.m_centerFrequency); + response.getSdrPlaySettings()->setTunerGain(settings.m_tunerGain); + response.getSdrPlaySettings()->setLOppmTenths(settings.m_LOppmTenths); + response.getSdrPlaySettings()->setFrequencyBandIndex(settings.m_frequencyBandIndex); + response.getSdrPlaySettings()->setIfFrequencyIndex(settings.m_ifFrequencyIndex); + response.getSdrPlaySettings()->setBandwidthIndex(settings.m_bandwidthIndex); + response.getSdrPlaySettings()->setDevSampleRateIndex(settings.m_devSampleRateIndex); + response.getSdrPlaySettings()->setLog2Decim(settings.m_log2Decim); + response.getSdrPlaySettings()->setFcPos((int) settings.m_fcPos); + response.getSdrPlaySettings()->setDcBlock(settings.m_dcBlock ? 1 : 0); + response.getSdrPlaySettings()->setIqCorrection(settings.m_iqCorrection ? 1 : 0); + response.getSdrPlaySettings()->setTunerGainMode((int) settings.m_tunerGainMode); + response.getSdrPlaySettings()->setLnaOn(settings.m_lnaOn ? 1 : 0); + response.getSdrPlaySettings()->setMixerAmpOn(settings.m_mixerAmpOn ? 1 : 0); + response.getSdrPlaySettings()->setBasebandGain(settings.m_basebandGain); + + if (response.getSdrPlaySettings()->getFileRecordName()) { + *response.getSdrPlaySettings()->getFileRecordName() = settings.m_fileRecordName; + } else { + response.getSdrPlaySettings()->setFileRecordName(new QString(settings.m_fileRecordName)); + } +} + int SDRPlayInput::webapiReportGet( SWGSDRangel::SWGDeviceReport& response, QString& errorMessage __attribute__((unused))) diff --git a/swagger/sdrangel/api/swagger/include/SDRPlay.yaml b/swagger/sdrangel/api/swagger/include/SDRPlay.yaml index 3f74929e5..e4ae5f13c 100644 --- a/swagger/sdrangel/api/swagger/include/SDRPlay.yaml +++ b/swagger/sdrangel/api/swagger/include/SDRPlay.yaml @@ -33,8 +33,6 @@ SDRPlaySettings: type: integer basebandGain: type: integer - iqCorrection: - type: integer fileRecordName: type: string