From c79abccffd5a0a4fc0e5b8ebbde1166d75b4bff0 Mon Sep 17 00:00:00 2001 From: Brumi-2021 <86470699+Brumi-2021@users.noreply.github.com> Date: Sun, 25 May 2025 20:04:08 +0200 Subject: [PATCH] wfm_filters_GUI_name_std (#2668) --- firmware/application/apps/ui_mictx.cpp | 4 +-- firmware/application/baseband_api.cpp | 4 +-- firmware/application/baseband_api.hpp | 2 +- .../application/external/gfxeq/ui_gfxeq.cpp | 2 +- firmware/application/freqman_db.cpp | 2 +- firmware/application/receiver_model.cpp | 2 +- firmware/common/dsp_fir_taps.hpp | 26 +++++++++---------- 7 files changed, 21 insertions(+), 21 deletions(-) diff --git a/firmware/application/apps/ui_mictx.cpp b/firmware/application/apps/ui_mictx.cpp index dfa80a65a..62455e63d 100644 --- a/firmware/application/apps/ui_mictx.cpp +++ b/firmware/application/apps/ui_mictx.cpp @@ -202,7 +202,7 @@ void MicTXView::rxaudio(bool enable) { receiver_model.set_modulation(ReceiverModel::Mode::NarrowbandFMAudio); // receiver_model.set_nbfm_configuration(n); is called above, depending user's selection (8k5, 11k, 16k). break; - case MIC_MOD_WFM: // WFM, BW 200Khz aprox, or the two new addional BW filters (180k, 40k) + case MIC_MOD_WFM: // WFM, BW 200Khz aprox, or the two new addional BW filters (180k, 80k) baseband::run_image(portapack::spi_flash::image_tag_wfm_audio); receiver_model.set_modulation(ReceiverModel::Mode::WidebandFMAudio); // receiver_model.set_wfm_configuration(n); is called above, depending user's selection (200k, 180k, 0k). @@ -300,7 +300,7 @@ void MicTXView::update_receiver_rxbw(void) { receiver_model.set_nbfm_configuration(rxbw_index); // we are in NFM/FM case, we need to select proper NFM/FM RX channel filter, NFM BW 8K5(0), NFM BW 11K(1), FM BW 16K (2) break; case MIC_MOD_WFM: - receiver_model.set_wfm_configuration(rxbw_index); // we are in WFM case, we need to select proper WFB RX BW filter, WFM BW 200K(0), WFM BW 180K(1), WFM BW 40K(2) + receiver_model.set_wfm_configuration(rxbw_index); // we are in WFM case, we need to select proper WFB RX BW filter, WFM BW 200K(0), WFM BW 180K(1), WFM BW 80K(2) break; case MIC_MOD_AM: receiver_model.set_am_configuration(rxbw_index); // we are in AM TX mode, we need to select proper AM full path config AM-9K filter. 0+0 =>AM-9K(0), 0+1=1 =>AM-6K(1), diff --git a/firmware/application/baseband_api.cpp b/firmware/application/baseband_api.cpp index f13adcf99..9130b06f3 100644 --- a/firmware/application/baseband_api.cpp +++ b/firmware/application/baseband_api.cpp @@ -93,8 +93,8 @@ void NBFMConfig::apply(const uint8_t squelch_level) const { void WFMConfig::apply() const { const WFMConfigureMessage message{ - decim_0, // Dynamic array 24 taps : taps_200k_decim_0 , taps_180k_wfm_decim_0, taps_40k_wfm_decim_0 - decim_1, // Dynamic array 16 taps : taps_200k_decim_1 or taps_180k_wfm_decim_1, taps_40k_wfm_decim_1 + decim_0, // Dynamic array 24 taps : taps_200k_decim_0 , taps_180k_wfm_decim_0, taps_80k_wfm_decim_0 + decim_1, // Dynamic array 16 taps : taps_200k_decim_1 or taps_180k_wfm_decim_1, taps_80k_wfm_decim_1 taps_64_lp_156_198, // Fixed channel audio filter 15khz 75000, audio_48k_hpf_30hz_config, diff --git a/firmware/application/baseband_api.hpp b/firmware/application/baseband_api.hpp index 2b4671306..571fd7c53 100644 --- a/firmware/application/baseband_api.hpp +++ b/firmware/application/baseband_api.hpp @@ -56,7 +56,7 @@ struct NBFMConfig { }; struct WFMConfig { - const fir_taps_real<24> decim_0; // To handle all 3 WFM filters , 200k, 180k and 40K- + const fir_taps_real<24> decim_0; // To handle all 3 WFM filters , 200k, 180k and 80K- const fir_taps_real<16> decim_1; void apply() const; diff --git a/firmware/application/external/gfxeq/ui_gfxeq.cpp b/firmware/application/external/gfxeq/ui_gfxeq.cpp index 9672c46f5..07637dc34 100644 --- a/firmware/application/external/gfxeq/ui_gfxeq.cpp +++ b/firmware/application/external/gfxeq/ui_gfxeq.cpp @@ -32,7 +32,7 @@ gfxEQView::gfxEQView(NavigationView& nav) baseband::run_image(portapack::spi_flash::image_tag_wfm_audio); receiver_model.set_modulation(ReceiverModel::Mode::WidebandFMAudio); - receiver_model.set_wfm_configuration(1); // 200k => 0 , 180k => 1 , 40k => 2. Set to 1 or 2 for better reception + receiver_model.set_wfm_configuration(1); // 200k => 0 , 180k => 1 , 80k => 2. Set to 1 or 2 for better reception receiver_model.set_sampling_rate(3072000); receiver_model.set_baseband_bandwidth(1750000); diff --git a/firmware/application/freqman_db.cpp b/firmware/application/freqman_db.cpp index 7fa600d21..27b327cfa 100644 --- a/firmware/application/freqman_db.cpp +++ b/firmware/application/freqman_db.cpp @@ -70,7 +70,7 @@ options_t freqman_bandwidths[6] = { }, { // WFM - {"40k", 2}, + {"80k", 2}, {"180k", 1}, {"200k", 0}, }, diff --git a/firmware/application/receiver_model.cpp b/firmware/application/receiver_model.cpp index a03d61965..0123fa434 100644 --- a/firmware/application/receiver_model.cpp +++ b/firmware/application/receiver_model.cpp @@ -66,7 +66,7 @@ static constexpr std::array nbfm_configs{{ static constexpr std::array wfm_configs{{ {taps_200k_wfm_decim_0, taps_200k_wfm_decim_1}, {taps_180k_wfm_decim_0, taps_180k_wfm_decim_1}, - {taps_40k_wfm_decim_0, taps_40k_wfm_decim_1}, + {taps_80k_wfm_decim_0, taps_80k_wfm_decim_1}, }}; static constexpr std::array wfmam_configs{{ diff --git a/firmware/common/dsp_fir_taps.hpp b/firmware/common/dsp_fir_taps.hpp index 09a35b351..ecde6ad66 100644 --- a/firmware/common/dsp_fir_taps.hpp +++ b/firmware/common/dsp_fir_taps.hpp @@ -1240,11 +1240,11 @@ constexpr fir_taps_real<24> taps_180k_wfm_decim_0 = { }}, }; -// IFIR prototype filter: fs=768000, pass=90000, stop=110000, decim=2, fout=384000 +// IFIR prototype filter: fs=768000, pass=90000, stop=170000, decim=2, fout=384000 constexpr fir_taps_real<16> taps_180k_wfm_decim_1 = { .low_frequency_normalized = -90000.0f / 768000.0f, .high_frequency_normalized = 90000.0f / 768000.0f, - .transition_normalized = 20000.0f / 768000.0f, + .transition_normalized = 80000.0f / 768000.0f, .taps = {{ 55, 19, @@ -1265,13 +1265,13 @@ constexpr fir_taps_real<16> taps_180k_wfm_decim_1 = { }}, }; -// WFM 40kHZ filter for NOAA APT reception in 137Mhz band with sharp transition ////////////////////////////////////////////// +// WFM 80kHZ filter with sharp transition ////////////////////////////////////////////// -// IFIR image-reject filter: fs=3072000, pass=20000, stop=97000, decim=4, fout=768000 -constexpr fir_taps_real<24> taps_40k_wfm_decim_0 = { - .low_frequency_normalized = -20000.0f / 3072000.0f, - .high_frequency_normalized = 20000.0f / 3072000.0f, - .transition_normalized = 67000.0f / 3072000.0f, +// IFIR image-reject filter: fs=3072000, pass=97000, stop=300000, decim=4, fout=768000 +constexpr fir_taps_real<24> taps_80k_wfm_decim_0 = { + .low_frequency_normalized = -97000.0f / 3072000.0f, + .high_frequency_normalized = 97000.0f / 3072000.0f, + .transition_normalized = 203000.0f / 3072000.0f, .taps = {{ 46, 112, @@ -1300,11 +1300,11 @@ constexpr fir_taps_real<24> taps_40k_wfm_decim_0 = { }}, }; -// IFIR prototype filter: fs=768000, pass=20000, stop=55000, decim=2, fout=384000 -constexpr fir_taps_real<16> taps_40k_wfm_decim_1 = { - .low_frequency_normalized = -20000.0f / 768000.0f, - .high_frequency_normalized = 20000.0f / 768000.0f, - .transition_normalized = 35000.0f / 768000.0f, +// IFIR prototype filter: fs=768000, pass=37500, stop=112500, decim=2, fout=384000 +constexpr fir_taps_real<16> taps_80k_wfm_decim_1 = { + .low_frequency_normalized = -37500.0f / 768000.0f, + .high_frequency_normalized = 37500.0f / 768000.0f, + .transition_normalized = 75000.0f / 768000.0f, .taps = {{ 83, 299,