From a5c7eb2fbce615df40121c052823eb3edf0ad28e Mon Sep 17 00:00:00 2001 From: Mark Thompson <129641948+NotherNgineer@users.noreply.github.com> Date: Wed, 14 Jun 2023 09:54:19 -0500 Subject: [PATCH] Starting freq fixes when no App Settings, and support for App Settings in Scanner App (Mode/BW/Step only) (#1153) * Fix initial freq when no App Settings tpms * Default POCSAG freq when no App Settings * Enable Scanner App Settings for Modulation/BW/Step * Default SONDE freq when no App Settings --- firmware/application/apps/pocsag_app.cpp | 3 +++ firmware/application/apps/pocsag_app.hpp | 1 + firmware/application/apps/tpms_app.cpp | 2 +- firmware/application/apps/ui_scanner.cpp | 21 +++++++++------------ firmware/application/apps/ui_scanner.hpp | 3 +++ firmware/application/apps/ui_sonde.cpp | 3 +++ firmware/application/apps/ui_sonde.hpp | 2 ++ 7 files changed, 22 insertions(+), 13 deletions(-) diff --git a/firmware/application/apps/pocsag_app.cpp b/firmware/application/apps/pocsag_app.cpp index 4ddca8540..2371a406a 100644 --- a/firmware/application/apps/pocsag_app.cpp +++ b/firmware/application/apps/pocsag_app.cpp @@ -69,6 +69,9 @@ POCSAGAppView::POCSAGAppView(NavigationView& nav) { &sym_ignore, &console}); + if (!settings_.loaded()) + receiver_model.set_target_frequency(initial_target_frequency); + receiver_model.set_modulation(ReceiverModel::Mode::NarrowbandFMAudio); receiver_model.enable(); diff --git a/firmware/application/apps/pocsag_app.hpp b/firmware/application/apps/pocsag_app.hpp index 04b1f408d..826563738 100644 --- a/firmware/application/apps/pocsag_app.hpp +++ b/firmware/application/apps/pocsag_app.hpp @@ -57,6 +57,7 @@ class POCSAGAppView : public View { void focus() override; private: + static constexpr uint32_t initial_target_frequency = 466175000; bool logging() const { return check_log.value(); }; bool ignore() const { return check_ignore.value(); }; diff --git a/firmware/application/apps/tpms_app.cpp b/firmware/application/apps/tpms_app.cpp index f0fbe01e5..a9ce0e93a 100644 --- a/firmware/application/apps/tpms_app.cpp +++ b/firmware/application/apps/tpms_app.cpp @@ -158,7 +158,7 @@ TPMSAppView::TPMSAppView(NavigationView&) { &recent_entries_view}); if (!settings_.loaded()) - receiver_model.set_sampling_rate(initial_target_frequency); + receiver_model.set_target_frequency(initial_target_frequency); receiver_model.enable(); diff --git a/firmware/application/apps/ui_scanner.cpp b/firmware/application/apps/ui_scanner.cpp index d19f543c7..32ca75e04 100644 --- a/firmware/application/apps/ui_scanner.cpp +++ b/firmware/application/apps/ui_scanner.cpp @@ -299,10 +299,10 @@ ScannerView::ScannerView( freqman_set_modulation_option(field_mode); freqman_set_step_option(field_step); - // Default starting modulation (these may be overridden in SCANNER.TXT) - change_mode(AM_MODULATION); // Default modulation - field_mode.set_by_value(AM_MODULATION); // Reflect the mode into the manual selector - field_step.set_by_value(9000); // Default step interval (Hz) + // Default starting modulation (from saved App Settings if enabled, and may be overridden in SCANNER.TXT) + field_mode.set_by_value((OptionsField::value_t)receiver_model.modulation()); // Reflect the mode into the manual selector + field_step.set_by_value(receiver_model.frequency_step()); // Default step interval (Hz) + change_mode((freqman_index_t)field_mode.selected_index_value()); // FUTURE: perhaps additional settings should be stored in persistent memory vs using defaults rf::Frequency stored_freq = receiver_model.target_frequency(); @@ -457,7 +457,7 @@ ScannerView::ScannerView( // Step field was changed (Hz) -- only affects manual Search mode field_step.on_change = [this](size_t, OptionsField::value_t v) { - (void)v; // prevent compiler Unused warning + receiver_model.set_frequency_step(v); if (manual_search && scan_thread) { // Restart scan thread with new step value @@ -758,24 +758,21 @@ void ScannerView::change_mode(freqman_index_t new_mod) { // Before this, do a s freqman_set_bandwidth_option(new_mod, field_bw); baseband::run_image(portapack::spi_flash::image_tag_am_audio); receiver_model.set_modulation(ReceiverModel::Mode::AMAudio); - field_bw.set_by_value(0); - receiver_model.set_am_configuration(field_bw.selected_index_value()); + field_bw.set_by_value(receiver_model.am_configuration()); field_bw.on_change = [this](size_t, OptionsField::value_t n) { receiver_model.set_am_configuration(n); }; break; - case NFM_MODULATION: // bw 16k (2) default + case NFM_MODULATION: freqman_set_bandwidth_option(new_mod, field_bw); baseband::run_image(portapack::spi_flash::image_tag_nfm_audio); receiver_model.set_modulation(ReceiverModel::Mode::NarrowbandFMAudio); - field_bw.set_by_value(2); - receiver_model.set_nbfm_configuration(field_bw.selected_index_value()); + field_bw.set_by_value(receiver_model.nbfm_configuration()); field_bw.on_change = [this](size_t, OptionsField::value_t n) { receiver_model.set_nbfm_configuration(n); }; break; case WFM_MODULATION: freqman_set_bandwidth_option(new_mod, field_bw); baseband::run_image(portapack::spi_flash::image_tag_wfm_audio); receiver_model.set_modulation(ReceiverModel::Mode::WidebandFMAudio); - field_bw.set_by_value(0); - receiver_model.set_wfm_configuration(field_bw.selected_index_value()); + field_bw.set_by_value(receiver_model.wfm_configuration()); field_bw.on_change = [this](size_t, OptionsField::value_t n) { receiver_model.set_wfm_configuration(n); }; break; default: diff --git a/firmware/application/apps/ui_scanner.hpp b/firmware/application/apps/ui_scanner.hpp index 0cec3c1fd..b4c6003be 100644 --- a/firmware/application/apps/ui_scanner.hpp +++ b/firmware/application/apps/ui_scanner.hpp @@ -95,6 +95,9 @@ class ScannerView : public View { // void set_parent_rect(const Rect new_parent_rect) override; private: + app_settings::SettingsManager settings_{ + "scanner", app_settings::Mode::RX}; + NavigationView& nav_; RxRadioState radio_state_{}; diff --git a/firmware/application/apps/ui_sonde.cpp b/firmware/application/apps/ui_sonde.cpp index da3653a3f..ca19e2ac1 100644 --- a/firmware/application/apps/ui_sonde.cpp +++ b/firmware/application/apps/ui_sonde.cpp @@ -65,6 +65,9 @@ SondeView::SondeView(NavigationView& nav) { &button_see_qr, &button_see_map}); + if (!settings_.loaded()) + receiver_model.set_target_frequency(initial_target_frequency); + field_frequency.set_value(receiver_model.target_frequency()); field_frequency.set_step(500); // euquiq: was 10000, but we are using this for fine-tunning field_frequency.on_change = [this](rf::Frequency f) { diff --git a/firmware/application/apps/ui_sonde.hpp b/firmware/application/apps/ui_sonde.hpp index 71de7680b..2c4fada49 100644 --- a/firmware/application/apps/ui_sonde.hpp +++ b/firmware/application/apps/ui_sonde.hpp @@ -55,6 +55,8 @@ namespace ui { class SondeView : public View { public: + static constexpr uint32_t initial_target_frequency = 402700000; + SondeView(NavigationView& nav); ~SondeView();