diff --git a/CHANGELOG b/CHANGELOG index a7cbd2ad3..7810d19a0 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -31,7 +31,7 @@ sdrangel (4.8.2-1) unstable; urgency=medium sdrangel (4.8.1-1) unstable; urgency=medium * AM demod: fixed audio interpolator. Issue #354 - * Implemented interpolation to audio for NFM and SSB demods allowing the use of a 48k audio sink regardless of the channel sample rate + * Interpolation to audio for NFM and SSB demods allowing the use of a 48k audio sink regardless of the channel sample rate * AM demod: implemented low pass filter after the demod. Issue #352 * Spectrum window: added ability to use the mouse wheel to move the central channel marker line. Issue #343 * Frequency Tracker: make lock converge faster diff --git a/debian/changelog b/debian/changelog index a7cbd2ad3..7810d19a0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -31,7 +31,7 @@ sdrangel (4.8.2-1) unstable; urgency=medium sdrangel (4.8.1-1) unstable; urgency=medium * AM demod: fixed audio interpolator. Issue #354 - * Implemented interpolation to audio for NFM and SSB demods allowing the use of a 48k audio sink regardless of the channel sample rate + * Interpolation to audio for NFM and SSB demods allowing the use of a 48k audio sink regardless of the channel sample rate * AM demod: implemented low pass filter after the demod. Issue #352 * Spectrum window: added ability to use the mouse wheel to move the central channel marker line. Issue #343 * Frequency Tracker: make lock converge faster diff --git a/doc/img/KiwiSDRInput_plugin.png b/doc/img/KiwiSDRInput_plugin.png index e19507a4c..a8e78f517 100644 Binary files a/doc/img/KiwiSDRInput_plugin.png and b/doc/img/KiwiSDRInput_plugin.png differ diff --git a/doc/img/KiwiSDRInput_plugin.xcf b/doc/img/KiwiSDRInput_plugin.xcf index 66966e692..db052dab2 100644 Binary files a/doc/img/KiwiSDRInput_plugin.xcf and b/doc/img/KiwiSDRInput_plugin.xcf differ diff --git a/plugins/samplesource/kiwisdr/kiwisdrgui.cpp b/plugins/samplesource/kiwisdr/kiwisdrgui.cpp index 35f8e9c1c..b2e423214 100644 --- a/plugins/samplesource/kiwisdr/kiwisdrgui.cpp +++ b/plugins/samplesource/kiwisdr/kiwisdrgui.cpp @@ -165,6 +165,12 @@ void KiwiSDRGui::on_serverAddressApplyButton_clicked() sendSettings(); } +void KiwiSDRGui::on_dcBlock_toggled(bool checked) +{ + m_settings.m_dcBlock = checked; + sendSettings(); +} + void KiwiSDRGui::on_record_toggled(bool checked) { if (checked) { diff --git a/plugins/samplesource/kiwisdr/kiwisdrgui.h b/plugins/samplesource/kiwisdr/kiwisdrgui.h index 2cce8a58a..a9ef5fd4d 100644 --- a/plugins/samplesource/kiwisdr/kiwisdrgui.h +++ b/plugins/samplesource/kiwisdr/kiwisdrgui.h @@ -85,6 +85,7 @@ private slots: void on_agc_toggled(bool checked); void on_serverAddress_returnPressed(); void on_serverAddressApplyButton_clicked(); + void on_dcBlock_toggled(bool checked); void openDeviceSettingsDialog(const QPoint& p); void updateStatus(); void updateHardware(); diff --git a/plugins/samplesource/kiwisdr/kiwisdrgui.ui b/plugins/samplesource/kiwisdr/kiwisdrgui.ui index 112e643a3..1d4b37066 100644 --- a/plugins/samplesource/kiwisdr/kiwisdrgui.ui +++ b/plugins/samplesource/kiwisdr/kiwisdrgui.ui @@ -32,7 +32,7 @@ - Test source + KiwiSDR @@ -310,6 +310,16 @@ + + + + Automatic DC offset removal + + + DC + + + diff --git a/plugins/samplesource/kiwisdr/kiwisdrinput.cpp b/plugins/samplesource/kiwisdr/kiwisdrinput.cpp index 6ae3657ed..aaca03fa9 100644 --- a/plugins/samplesource/kiwisdr/kiwisdrinput.cpp +++ b/plugins/samplesource/kiwisdr/kiwisdrinput.cpp @@ -302,6 +302,12 @@ bool KiwiSDRInput::applySettings(const KiwiSDRSettings& settings, bool force) emit setWorkerGain(settings.m_gain, settings.m_useAGC); } + if (m_settings.m_dcBlock != settings.m_dcBlock) + { + reverseAPIKeys.append("dcBlock"); + m_deviceAPI->configureCorrections(settings.m_dcBlock, false); + } + if (m_settings.m_centerFrequency != settings.m_centerFrequency || force) { reverseAPIKeys.append("centerFrequency"); @@ -382,6 +388,9 @@ int KiwiSDRInput::webapiSettingsPutPatch( if (deviceSettingsKeys.contains("useAGC")) { settings.m_useAGC = response.getKiwiSdrSettings()->getUseAgc(); } + if (deviceSettingsKeys.contains("dcBlock")) { + settings.m_dcBlock = response.getKiwiSdrSettings()->getDcBlock() != 0; + } if (deviceSettingsKeys.contains("centerFrequency")) { settings.m_centerFrequency = response.getKiwiSdrSettings()->getCenterFrequency(); } @@ -432,6 +441,7 @@ void KiwiSDRInput::webapiFormatDeviceSettings(SWGSDRangel::SWGDeviceSettings& re { response.getKiwiSdrSettings()->setGain(settings.m_gain); response.getKiwiSdrSettings()->setUseAgc(settings.m_useAGC ? 1 : 0); + response.getKiwiSdrSettings()->setDcBlock(settings.m_dcBlock ? 1 : 0); response.getKiwiSdrSettings()->setCenterFrequency(settings.m_centerFrequency); if (response.getKiwiSdrSettings()->getServerAddress()) { @@ -480,6 +490,9 @@ void KiwiSDRInput::webapiReverseSendSettings(QList& deviceSettingsKeys, if (deviceSettingsKeys.contains("useAGC")) { swgKiwiSDRSettings->setUseAgc(settings.m_useAGC ? 1 : 0); } + if (deviceSettingsKeys.contains("dcBlock") || force) { + swgKiwiSDRSettings->setDcBlock(settings.m_dcBlock ? 1 : 0); + } if (deviceSettingsKeys.contains("centerFrequency") || force) { swgKiwiSDRSettings->setCenterFrequency(settings.m_centerFrequency); } diff --git a/plugins/samplesource/kiwisdr/kiwisdrsettings.cpp b/plugins/samplesource/kiwisdr/kiwisdrsettings.cpp index f0ad5fd63..c569ab64c 100644 --- a/plugins/samplesource/kiwisdr/kiwisdrsettings.cpp +++ b/plugins/samplesource/kiwisdr/kiwisdrsettings.cpp @@ -30,6 +30,7 @@ void KiwiSDRSettings::resetToDefaults() m_gain = 20; m_useAGC = true; + m_dcBlock = false; m_serverAddress = "127.0.0.1:8073"; diff --git a/plugins/samplesource/kiwisdr/kiwisdrsettings.h b/plugins/samplesource/kiwisdr/kiwisdrsettings.h index eb2391fd6..bbb329a2c 100644 --- a/plugins/samplesource/kiwisdr/kiwisdrsettings.h +++ b/plugins/samplesource/kiwisdr/kiwisdrsettings.h @@ -25,6 +25,7 @@ struct KiwiSDRSettings { uint32_t m_gain; bool m_useAGC; + bool m_dcBlock; quint64 m_centerFrequency; QString m_serverAddress; diff --git a/plugins/samplesource/kiwisdr/readme.md b/plugins/samplesource/kiwisdr/readme.md index bbdda095f..ee9a38752 100644 --- a/plugins/samplesource/kiwisdr/readme.md +++ b/plugins/samplesource/kiwisdr/readme.md @@ -2,7 +2,7 @@

Introduction

-This plugin is designed to enable connection to publicly available [KiwiSDR](http://kiwisdr.com/) receivers. A list of on-line receiver is available [here](https://sdr.hu/?q=kiwisdr) +This plugin is designed to enable connection to publicly available [KiwiSDR](http://kiwisdr.com/) receivers. A list of on-line receivers is available [here](https://sdr.hu/?q=kiwisdr)

Interface

@@ -57,4 +57,8 @@ This is the RF gain control sent to the remote

9: AGC

-Use this button to switch on or off the AGC in the remote \ No newline at end of file +Use this button to switch on or off the AGC in the remote + +

10: DC block

+ +Some remote receivers exhibit a peak at DC. Use this button to filter DC out. diff --git a/sdrbase/resources/webapi/doc/html2/index.html b/sdrbase/resources/webapi/doc/html2/index.html index 097664313..762b634cc 100644 --- a/sdrbase/resources/webapi/doc/html2/index.html +++ b/sdrbase/resources/webapi/doc/html2/index.html @@ -3098,6 +3098,9 @@ margin-bottom: 20px; "type" : "integer", "description" : "AGC active (1 for yes, 0 for no)" }, + "dcBlock" : { + "type" : "integer" + }, "centerFrequency" : { "type" : "integer", "format" : "int64" @@ -25151,7 +25154,7 @@ except ApiException as e:
- Generated 2019-06-09T01:28:52.118+02:00 + Generated 2019-06-09T20:39:26.572+02:00
diff --git a/sdrbase/resources/webapi/doc/swagger/include/KiwiSDR.yaml b/sdrbase/resources/webapi/doc/swagger/include/KiwiSDR.yaml index 5f22cd599..cb3dee599 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/KiwiSDR.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/KiwiSDR.yaml @@ -6,6 +6,8 @@ KiwiSDRSettings: useAGC: description: AGC active (1 for yes, 0 for no) type: integer + dcBlock: + type: integer centerFrequency: type: integer format: int64 diff --git a/swagger/sdrangel/api/swagger/include/KiwiSDR.yaml b/swagger/sdrangel/api/swagger/include/KiwiSDR.yaml index 5f22cd599..cb3dee599 100644 --- a/swagger/sdrangel/api/swagger/include/KiwiSDR.yaml +++ b/swagger/sdrangel/api/swagger/include/KiwiSDR.yaml @@ -6,6 +6,8 @@ KiwiSDRSettings: useAGC: description: AGC active (1 for yes, 0 for no) type: integer + dcBlock: + type: integer centerFrequency: type: integer format: int64 diff --git a/swagger/sdrangel/code/html2/index.html b/swagger/sdrangel/code/html2/index.html index 097664313..762b634cc 100644 --- a/swagger/sdrangel/code/html2/index.html +++ b/swagger/sdrangel/code/html2/index.html @@ -3098,6 +3098,9 @@ margin-bottom: 20px; "type" : "integer", "description" : "AGC active (1 for yes, 0 for no)" }, + "dcBlock" : { + "type" : "integer" + }, "centerFrequency" : { "type" : "integer", "format" : "int64" @@ -25151,7 +25154,7 @@ except ApiException as e:
- Generated 2019-06-09T01:28:52.118+02:00 + Generated 2019-06-09T20:39:26.572+02:00
diff --git a/swagger/sdrangel/code/qt5/client/SWGKiwiSDRSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGKiwiSDRSettings.cpp index 95e3cec3b..5be468379 100644 --- a/swagger/sdrangel/code/qt5/client/SWGKiwiSDRSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGKiwiSDRSettings.cpp @@ -32,6 +32,8 @@ SWGKiwiSDRSettings::SWGKiwiSDRSettings() { m_gain_isSet = false; use_agc = 0; m_use_agc_isSet = false; + dc_block = 0; + m_dc_block_isSet = false; center_frequency = 0L; m_center_frequency_isSet = false; server_address = nullptr; @@ -58,6 +60,8 @@ SWGKiwiSDRSettings::init() { m_gain_isSet = false; use_agc = 0; m_use_agc_isSet = false; + dc_block = 0; + m_dc_block_isSet = false; center_frequency = 0L; m_center_frequency_isSet = false; server_address = new QString(""); @@ -79,6 +83,7 @@ SWGKiwiSDRSettings::cleanup() { + if(server_address != nullptr) { delete server_address; } @@ -108,6 +113,8 @@ SWGKiwiSDRSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&use_agc, pJson["useAGC"], "qint32", ""); + ::SWGSDRangel::setValue(&dc_block, pJson["dcBlock"], "qint32", ""); + ::SWGSDRangel::setValue(¢er_frequency, pJson["centerFrequency"], "qint64", ""); ::SWGSDRangel::setValue(&server_address, pJson["serverAddress"], "QString", "QString"); @@ -144,6 +151,9 @@ SWGKiwiSDRSettings::asJsonObject() { if(m_use_agc_isSet){ obj->insert("useAGC", QJsonValue(use_agc)); } + if(m_dc_block_isSet){ + obj->insert("dcBlock", QJsonValue(dc_block)); + } if(m_center_frequency_isSet){ obj->insert("centerFrequency", QJsonValue(center_frequency)); } @@ -189,6 +199,16 @@ SWGKiwiSDRSettings::setUseAgc(qint32 use_agc) { this->m_use_agc_isSet = true; } +qint32 +SWGKiwiSDRSettings::getDcBlock() { + return dc_block; +} +void +SWGKiwiSDRSettings::setDcBlock(qint32 dc_block) { + this->dc_block = dc_block; + this->m_dc_block_isSet = true; +} + qint64 SWGKiwiSDRSettings::getCenterFrequency() { return center_frequency; @@ -266,6 +286,7 @@ SWGKiwiSDRSettings::isSet(){ do{ if(m_gain_isSet){ isObjectUpdated = true; break;} if(m_use_agc_isSet){ isObjectUpdated = true; break;} + if(m_dc_block_isSet){ isObjectUpdated = true; break;} if(m_center_frequency_isSet){ isObjectUpdated = true; break;} if(server_address != nullptr && *server_address != QString("")){ isObjectUpdated = true; break;} if(file_record_name != nullptr && *file_record_name != QString("")){ isObjectUpdated = true; break;} diff --git a/swagger/sdrangel/code/qt5/client/SWGKiwiSDRSettings.h b/swagger/sdrangel/code/qt5/client/SWGKiwiSDRSettings.h index 0a5a0b356..ef752c4ed 100644 --- a/swagger/sdrangel/code/qt5/client/SWGKiwiSDRSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGKiwiSDRSettings.h @@ -48,6 +48,9 @@ public: qint32 getUseAgc(); void setUseAgc(qint32 use_agc); + qint32 getDcBlock(); + void setDcBlock(qint32 dc_block); + qint64 getCenterFrequency(); void setCenterFrequency(qint64 center_frequency); @@ -79,6 +82,9 @@ private: qint32 use_agc; bool m_use_agc_isSet; + qint32 dc_block; + bool m_dc_block_isSet; + qint64 center_frequency; bool m_center_frequency_isSet;