save and restore region and or manual frequency values (#2340)

This commit is contained in:
gullradriel 2024-11-05 14:56:38 +01:00 committed by GitHub
parent da5322765d
commit 110a543ed3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 40 additions and 15 deletions

View File

@ -94,21 +94,39 @@ APRSRxView::APRSRxView(NavigationView& nav, Rect parent_rect)
record_view.set_sampling_rate(24000); record_view.set_sampling_rate(24000);
options_region.on_change = [this](size_t, int32_t i) { options_region.on_change = [this](size_t, int32_t i) {
if (i == 0) { field_frequency.on_change = [this](rf::Frequency f) { (void)f; };
if (i == 0) { // MAN Manual setting
field_frequency.set_value(aprs_rx_freq);
} else if (i == 1) { // NA - North America - is also the default
field_frequency.set_value(144390000); field_frequency.set_value(144390000);
} else if (i == 1) { } else if (i == 2) { // EUR
field_frequency.set_value(144800000); field_frequency.set_value(144800000);
} else if (i == 2) { } else if (i == 3) { // AUS
field_frequency.set_value(145175000); field_frequency.set_value(145175000);
} else if (i == 3) { } else if (i == 4) { // NZ
field_frequency.set_value(144575000); field_frequency.set_value(144575000);
} else if (i == 4) { } else if (i == 5) { // ISS
field_frequency.set_value(145825000); field_frequency.set_value(145825000);
} }
options_region_id = i;
receiver_model.set_target_frequency(field_frequency.value()); // Retune
field_frequency.on_change = [this](rf::Frequency f) {
aprs_rx_freq = f;
options_region.set_selected_index(0, true);
};
}; };
field_frequency.set_step(100); field_frequency.set_step(100);
options_region.set_selected_index(0, true); field_frequency.on_edit = [this]() {
auto freq_view = nav_.push<FrequencyKeypadView>(field_frequency.value());
freq_view->on_changed = [this](rf::Frequency f) {
aprs_rx_freq = f;
field_frequency.set_value(f);
};
};
// Note: setting the region is also going to sef field_frequency.on_change
options_region.set_selected_index(options_region_id, true);
logger = std::make_unique<APRSLogger>(); logger = std::make_unique<APRSLogger>();
if (logger) if (logger)
@ -124,6 +142,8 @@ APRSRxView::APRSRxView(NavigationView& nav, Rect parent_rect)
void APRSRxView::on_freqchg(int64_t freq) { void APRSRxView::on_freqchg(int64_t freq) {
field_frequency.set_value(freq); field_frequency.set_value(freq);
aprs_rx_freq = freq;
options_region.set_selected_index(0, true);
} }
void APRSRxView::on_packet(const APRSPacketMessage* message) { void APRSRxView::on_packet(const APRSPacketMessage* message) {

View File

@ -190,6 +190,8 @@ class APRSRxView : public View {
private: private:
void on_data(uint32_t value, bool is_data); void on_data(uint32_t value, bool is_data);
bool reset_console = false; bool reset_console = false;
uint8_t options_region_id = 1; // default to North America
rf::Frequency aprs_rx_freq{144390000}; // default to North America frequency
NavigationView& nav_; NavigationView& nav_;
RxRadioState radio_state_{ RxRadioState radio_state_{
@ -198,7 +200,10 @@ class APRSRxView : public View {
3072000 /* sampling rate */ 3072000 /* sampling rate */
}; };
app_settings::SettingsManager settings_{ app_settings::SettingsManager settings_{
"rx_aprs", app_settings::Mode::RX}; "rx_aprs",
app_settings::Mode::RX,
{{"options_region_id"sv, &options_region_id},
{"aprs_rx_freq"sv, &aprs_rx_freq}}};
uint8_t console_color{0}; uint8_t console_color{0};
std::string str_log{""}; std::string str_log{""};
@ -220,15 +225,15 @@ class APRSRxView : public View {
OptionsField options_region{ OptionsField options_region{
{0 * 8, 0 * 8}, {0 * 8, 0 * 8},
3, 3,
{{"NA ", 0}, {{"MAN", 0},
{"EUR", 1}, {"NA ", 1},
{"AUS", 2}, {"EUR", 2},
{"NZ ", 3}, {"AUS", 3},
{"ISS", 4}}}; {"NZ ", 4},
{"ISS", 5}}};
RxFrequencyField field_frequency{ FrequencyField field_frequency{
{3 * 8, 0 * 16}, {3 * 8, 0 * 16}};
nav_};
// DEBUG // DEBUG
RecordView record_view{ RecordView record_view{