From f16c296f380dcc680a96b9a692a223eea512a230 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Sat, 31 Jul 2021 21:00:47 +0200 Subject: [PATCH] Potential fix for windows 7 not detecting the home key and the radio not saving the bandwidth when set through the frequency manager --- core/src/gui/menus/display.cpp | 5 +++-- core/src/gui/widgets/waterfall.cpp | 5 +++-- radio/src/am_demod.h | 8 ++++++++ radio/src/cw_demod.h | 8 ++++++++ radio/src/dsb_demod.h | 8 ++++++++ radio/src/fm_demod.h | 8 ++++++++ radio/src/lsb_demod.h | 8 ++++++++ radio/src/main.cpp | 1 + radio/src/radio_demod.h | 1 + radio/src/raw_demod.h | 7 +++++++ radio/src/usb_demod.h | 8 ++++++++ radio/src/wfm_demod.h | 10 ++++++++++ 12 files changed, 73 insertions(+), 4 deletions(-) diff --git a/core/src/gui/menus/display.cpp b/core/src/gui/menus/display.cpp index 1e03e7bc..2f419e09 100644 --- a/core/src/gui/menus/display.cpp +++ b/core/src/gui/menus/display.cpp @@ -82,8 +82,9 @@ namespace displaymenu { void draw(void* ctx) { float menuWidth = ImGui::GetContentRegionAvailWidth(); - if (ImGui::Checkbox("Show Waterfall##_sdrpp", &showWaterfall) || ImGui::IsKeyPressed(GLFW_KEY_HOME, false)) { - if (ImGui::IsKeyPressed(GLFW_KEY_HOME, false)) { showWaterfall = !showWaterfall; } + bool homePressed = ImGui::IsKeyPressed(GLFW_KEY_HOME, false); + if (ImGui::Checkbox("Show Waterfall##_sdrpp", &showWaterfall) || homePressed) { + if (homePressed) { showWaterfall = !showWaterfall; } showWaterfall ? gui::waterfall.showWaterfall() : gui::waterfall.hideWaterfall(); core::configManager.acquire(); core::configManager.conf["showWaterfall"] = showWaterfall; diff --git a/core/src/gui/widgets/waterfall.cpp b/core/src/gui/widgets/waterfall.cpp index 52208eeb..3df810d6 100644 --- a/core/src/gui/widgets/waterfall.cpp +++ b/core/src/gui/widgets/waterfall.cpp @@ -389,8 +389,9 @@ namespace ImGui { } // If the left and right keys are pressed while hovering the freq scale, move it too - if ((ImGui::IsKeyPressed(GLFW_KEY_LEFT) || ImGui::IsKeyPressed(GLFW_KEY_RIGHT)) && mouseInFreq) { - viewOffset += ImGui::IsKeyPressed(GLFW_KEY_LEFT) ? (viewBandwidth / 20.0) : (-viewBandwidth / 20.0); + bool leftKeyPressed = ImGui::IsKeyPressed(GLFW_KEY_LEFT); + if ((leftKeyPressed || ImGui::IsKeyPressed(GLFW_KEY_RIGHT)) && mouseInFreq) { + viewOffset += leftKeyPressed ? (viewBandwidth / 20.0) : (-viewBandwidth / 20.0); if (viewOffset + (viewBandwidth / 2.0) > wholeBandwidth / 2.0) { double freqOffset = (viewOffset + (viewBandwidth / 2.0)) - (wholeBandwidth / 2.0); diff --git a/radio/src/am_demod.h b/radio/src/am_demod.h index 279b0375..4144a2ff 100644 --- a/radio/src/am_demod.h +++ b/radio/src/am_demod.h @@ -173,6 +173,14 @@ public: resamp.updateWindow(&win); } + void saveParameters(bool lock = true) { + if (lock) { _config->acquire(); } + _config->conf[uiPrefix]["WFM"]["bandwidth"] = bw; + _config->conf[uiPrefix]["WFM"]["snapInterval"] = snapInterval; + _config->conf[uiPrefix]["WFM"]["squelchLevel"] = squelchLevel; + if (lock) { _config->release(true); } + } + private: void setSnapInterval(float snapInt) { snapInterval = snapInt; diff --git a/radio/src/cw_demod.h b/radio/src/cw_demod.h index c7610c68..93c3bc4f 100644 --- a/radio/src/cw_demod.h +++ b/radio/src/cw_demod.h @@ -176,6 +176,14 @@ public: resamp.updateWindow(&win); } + void saveParameters(bool lock = true) { + if (lock) { _config->acquire(); } + _config->conf[uiPrefix]["WFM"]["bandwidth"] = bw; + _config->conf[uiPrefix]["WFM"]["snapInterval"] = snapInterval; + _config->conf[uiPrefix]["WFM"]["squelchLevel"] = squelchLevel; + if (lock) { _config->release(true); } + } + private: void setSnapInterval(float snapInt) { snapInterval = snapInt; diff --git a/radio/src/dsb_demod.h b/radio/src/dsb_demod.h index 86ea8ebf..aa686570 100644 --- a/radio/src/dsb_demod.h +++ b/radio/src/dsb_demod.h @@ -168,6 +168,14 @@ public: _vfo->setBandwidth(bw, updateWaterfall); } + void saveParameters(bool lock = true) { + if (lock) { _config->acquire(); } + _config->conf[uiPrefix]["WFM"]["bandwidth"] = bw; + _config->conf[uiPrefix]["WFM"]["snapInterval"] = snapInterval; + _config->conf[uiPrefix]["WFM"]["squelchLevel"] = squelchLevel; + if (lock) { _config->release(true); } + } + private: void setSnapInterval(float snapInt) { snapInterval = snapInt; diff --git a/radio/src/fm_demod.h b/radio/src/fm_demod.h index 28ea63ec..7d7cfe53 100644 --- a/radio/src/fm_demod.h +++ b/radio/src/fm_demod.h @@ -162,6 +162,14 @@ public: setAudioSampleRate(audioSampRate); } + void saveParameters(bool lock = true) { + if (lock) { _config->acquire(); } + _config->conf[uiPrefix]["WFM"]["bandwidth"] = bw; + _config->conf[uiPrefix]["WFM"]["snapInterval"] = snapInterval; + _config->conf[uiPrefix]["WFM"]["squelchLevel"] = squelchLevel; + if (lock) { _config->release(true); } + } + private: void setSnapInterval(float snapInt) { snapInterval = snapInt; diff --git a/radio/src/lsb_demod.h b/radio/src/lsb_demod.h index 00f5303a..0d68b1ff 100644 --- a/radio/src/lsb_demod.h +++ b/radio/src/lsb_demod.h @@ -173,6 +173,14 @@ public: resamp.updateWindow(&win); } + void saveParameters(bool lock = true) { + if (lock) { _config->acquire(); } + _config->conf[uiPrefix]["WFM"]["bandwidth"] = bw; + _config->conf[uiPrefix]["WFM"]["snapInterval"] = snapInterval; + _config->conf[uiPrefix]["WFM"]["squelchLevel"] = squelchLevel; + if (lock) { _config->release(true); } + } + private: void setSnapInterval(float snapInt) { snapInterval = snapInt; diff --git a/radio/src/main.cpp b/radio/src/main.cpp index 053e2601..0f89d7d0 100644 --- a/radio/src/main.cpp +++ b/radio/src/main.cpp @@ -179,6 +179,7 @@ private: else if (code == RADIO_IFACE_CMD_SET_BANDWIDTH) { float* _in = (float*)in; _this->currentDemod->setBandwidth(*_in, true); + _this->currentDemod->saveParameters(); } } diff --git a/radio/src/radio_demod.h b/radio/src/radio_demod.h index 09032d5d..e83c8b02 100644 --- a/radio/src/radio_demod.h +++ b/radio/src/radio_demod.h @@ -15,4 +15,5 @@ public: virtual void setBandwidth(float bandWidth, bool updateWaterfall = true) = 0; virtual dsp::stream* getOutput() = 0; virtual void showMenu() = 0; + virtual void saveParameters(bool lock = true) = 0; }; \ No newline at end of file diff --git a/radio/src/raw_demod.h b/radio/src/raw_demod.h index a39de794..057a4e92 100644 --- a/radio/src/raw_demod.h +++ b/radio/src/raw_demod.h @@ -118,6 +118,13 @@ public: // Do nothing } + void saveParameters(bool lock = true) { + if (lock) { _config->acquire(); } + _config->conf[uiPrefix]["WFM"]["snapInterval"] = snapInterval; + _config->conf[uiPrefix]["WFM"]["squelchLevel"] = squelchLevel; + if (lock) { _config->release(true); } + } + private: void setSnapInterval(float snapInt) { snapInterval = snapInt; diff --git a/radio/src/usb_demod.h b/radio/src/usb_demod.h index 2de8c9c6..4347643e 100644 --- a/radio/src/usb_demod.h +++ b/radio/src/usb_demod.h @@ -173,6 +173,14 @@ public: resamp.updateWindow(&win); } + void saveParameters(bool lock = true) { + if (lock) { _config->acquire(); } + _config->conf[uiPrefix]["WFM"]["bandwidth"] = bw; + _config->conf[uiPrefix]["WFM"]["snapInterval"] = snapInterval; + _config->conf[uiPrefix]["WFM"]["squelchLevel"] = squelchLevel; + if (lock) { _config->release(true); } + } + private: void setSnapInterval(float snapInt) { snapInterval = snapInt; diff --git a/radio/src/wfm_demod.h b/radio/src/wfm_demod.h index 514d2b25..9047a99f 100644 --- a/radio/src/wfm_demod.h +++ b/radio/src/wfm_demod.h @@ -246,6 +246,16 @@ public: } } + void saveParameters(bool lock = true) { + if (lock) { _config->acquire(); } + _config->conf[uiPrefix]["WFM"]["bandwidth"] = bw; + _config->conf[uiPrefix]["WFM"]["snapInterval"] = snapInterval; + _config->conf[uiPrefix]["WFM"]["deempMode"] = deempId; + _config->conf[uiPrefix]["WFM"]["squelchLevel"] = squelchLevel; + _config->conf[uiPrefix]["WFM"]["stereo"] = stereo; + if (lock) { _config->release(true); } + } + private: const float bwMax = 250000;