From 3b14e622883aa1b7cfe85975353aea1f6d22306a Mon Sep 17 00:00:00 2001 From: Franco Venturi Date: Wed, 23 Dec 2020 21:17:31 -0500 Subject: [PATCH 1/5] process additional device string arguments in constructor --- Settings.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Settings.cpp b/Settings.cpp index aa29d15..320435a 100644 --- a/Settings.cpp +++ b/Settings.cpp @@ -231,6 +231,15 @@ SoapySDRPlay::SoapySDRPlay(const SoapySDR::Kwargs &args) chParams->rspDuoTunerParams.rfDabNotchEnable = 0; } + // process additional device string arguments + for (std::pair arg : args) { + // ignore 'driver', 'label', and 'soapy' + if (arg.first == "driver" || arg.first == "label" || arg.first == "soapy") { + continue; + } + writeSetting(arg.first, arg.second); + } + _streams[0] = 0; _streams[1] = 0; useShort = true; @@ -1414,6 +1423,7 @@ SoapySDR::ArgInfoList SoapySDRPlay::getSettingInfo(void) const void SoapySDRPlay::writeSetting(const std::string &key, const std::string &value) { std::lock_guard lock(_general_state_mutex); +SoapySDR_logf(SOAPY_SDR_INFO, "DEBUG - writeSetting(key=%s, value=%s)", key.c_str(), value.c_str()); #ifdef RF_GAIN_IN_MENU if (key == "rfgain_sel") From 038a40bb6db007ba807766ffef355d3c50b8347a Mon Sep 17 00:00:00 2001 From: Franco Venturi Date: Thu, 24 Dec 2020 08:00:22 -0500 Subject: [PATCH 2/5] add debug messages for biasT setting --- Settings.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Settings.cpp b/Settings.cpp index 320435a..af8e069 100644 --- a/Settings.cpp +++ b/Settings.cpp @@ -356,6 +356,7 @@ std::vector SoapySDRPlay::listAntennas(const int direction, const s void SoapySDRPlay::setAntenna(const int direction, const size_t channel, const std::string &name) { +SoapySDR_logf(SOAPY_SDR_INFO, "DEBUG - setAntenna(channel=%d, name=%s)", channel, name.c_str()); // Check direction if ((direction != SOAPY_SDR_RX) || (device.hwVer == SDRPLAY_RSP1_ID) || (device.hwVer == SDRPLAY_RSP1A_ID)) { return; @@ -1492,6 +1493,7 @@ SoapySDR_logf(SOAPY_SDR_INFO, "DEBUG - writeSetting(key=%s, value=%s)", key.c_st } else if (device.hwVer == SDRPLAY_RSPduo_ID) { +SoapySDR_logf(SOAPY_SDR_INFO, "DEBUG - biasT - device.tuner=%d isRxChannelA=%d isRxChannelB=%d", device.tuner, chParams == deviceParams->rxChannelA, chParams == deviceParams->rxChannelB); chParams->rspDuoTunerParams.biasTEnable = biasTen; if (streamActive) { From 69a25a7097f3d46dca4067de27e470c2f3ba84f6 Mon Sep 17 00:00:00 2001 From: Franco Venturi Date: Thu, 24 Dec 2020 10:01:13 -0500 Subject: [PATCH 3/5] preserve biasT setting when switching tuners with the RSPduo --- Settings.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Settings.cpp b/Settings.cpp index af8e069..749a38c 100644 --- a/Settings.cpp +++ b/Settings.cpp @@ -489,9 +489,11 @@ SoapySDR_logf(SOAPY_SDR_INFO, "DEBUG - setAntenna(channel=%d, name=%s)", channel } else { + unsigned char biasTen = chParams->rspDuoTunerParams.biasTEnable; releaseDevice(); device.tuner = device.tuner == sdrplay_api_Tuner_A ? sdrplay_api_Tuner_B : sdrplay_api_Tuner_A; selectDevice(); + chParams->rspDuoTunerParams.biasTEnable = biasTen; } } } From 1e8b734f99ca6f85f409066cf7f563ea12f37811 Mon Sep 17 00:00:00 2001 From: Franco Venturi Date: Thu, 24 Dec 2020 10:35:55 -0500 Subject: [PATCH 4/5] preserve biasT setting when switching tuners with the RSPduo --- Settings.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/Settings.cpp b/Settings.cpp index 749a38c..b64a9da 100644 --- a/Settings.cpp +++ b/Settings.cpp @@ -489,6 +489,7 @@ SoapySDR_logf(SOAPY_SDR_INFO, "DEBUG - setAntenna(channel=%d, name=%s)", channel } else { + // preserve biasT setting when changing tuner/antenna unsigned char biasTen = chParams->rspDuoTunerParams.biasTEnable; releaseDevice(); device.tuner = device.tuner == sdrplay_api_Tuner_A ? sdrplay_api_Tuner_B : sdrplay_api_Tuner_A; From e07fe25fdec3dbfde4011e69b3a7f1bd814e7c31 Mon Sep 17 00:00:00 2001 From: Franco Venturi Date: Fri, 25 Dec 2020 17:24:16 -0500 Subject: [PATCH 5/5] remove debug messages --- Settings.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/Settings.cpp b/Settings.cpp index b64a9da..8f6d5c6 100644 --- a/Settings.cpp +++ b/Settings.cpp @@ -356,7 +356,6 @@ std::vector SoapySDRPlay::listAntennas(const int direction, const s void SoapySDRPlay::setAntenna(const int direction, const size_t channel, const std::string &name) { -SoapySDR_logf(SOAPY_SDR_INFO, "DEBUG - setAntenna(channel=%d, name=%s)", channel, name.c_str()); // Check direction if ((direction != SOAPY_SDR_RX) || (device.hwVer == SDRPLAY_RSP1_ID) || (device.hwVer == SDRPLAY_RSP1A_ID)) { return; @@ -1427,7 +1426,6 @@ SoapySDR::ArgInfoList SoapySDRPlay::getSettingInfo(void) const void SoapySDRPlay::writeSetting(const std::string &key, const std::string &value) { std::lock_guard lock(_general_state_mutex); -SoapySDR_logf(SOAPY_SDR_INFO, "DEBUG - writeSetting(key=%s, value=%s)", key.c_str(), value.c_str()); #ifdef RF_GAIN_IN_MENU if (key == "rfgain_sel") @@ -1496,7 +1494,6 @@ SoapySDR_logf(SOAPY_SDR_INFO, "DEBUG - writeSetting(key=%s, value=%s)", key.c_st } else if (device.hwVer == SDRPLAY_RSPduo_ID) { -SoapySDR_logf(SOAPY_SDR_INFO, "DEBUG - biasT - device.tuner=%d isRxChannelA=%d isRxChannelB=%d", device.tuner, chParams == deviceParams->rxChannelA, chParams == deviceParams->rxChannelB); chParams->rspDuoTunerParams.biasTEnable = biasTen; if (streamActive) {