diff --git a/generated/ui_320x240/screens.c b/generated/ui_320x240/screens.c index fc2b58ed..1900cabf 100644 --- a/generated/ui_320x240/screens.c +++ b/generated/ui_320x240/screens.c @@ -3576,7 +3576,7 @@ void create_screen_main_screen() { objects.settings_modem_preset_dropdown = obj; lv_obj_set_pos(obj, 0, 0); lv_obj_set_size(obj, 180, 30); - lv_dropdown_set_options(obj, _("LONG FAST\nLONG SLOW\n-- deprecated --\nMEDIUM SLOW\nMEDIUM FAST\nSHORT SLOW\nSHORT FAST\nLONG MODERATE\nSHORT TURBO")); + lv_dropdown_set_options(obj, _("LONG FAST\nLONG MODERATE\nLONG TURBO\nMEDIUM FAST\nMEDIUM SLOW\nSHORT FAST\nSHORT TURBO\nSHORT SLOW")); add_style_drop_down_style(obj); lv_obj_set_style_align(obj, LV_ALIGN_TOP_MID, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_border_color(obj, lv_color_hex(0xffe0e0e0), LV_PART_MAIN | LV_STATE_DEFAULT); diff --git a/include/graphics/view/TFT/TFTView_320x240.h b/include/graphics/view/TFT/TFTView_320x240.h index 92fcc020..ba6cb4bf 100644 --- a/include/graphics/view/TFT/TFTView_320x240.h +++ b/include/graphics/view/TFT/TFTView_320x240.h @@ -239,6 +239,8 @@ class TFTView_320x240 : public MeshtasticView void updateSignalStrength(int32_t rssi, float snr); int32_t signalStrength2Percent(int32_t rx_rssi, float rx_snr); + uint32_t preset2val(meshtastic_Config_LoRaConfig_ModemPreset preset); + meshtastic_Config_LoRaConfig_ModemPreset val2preset(uint32_t val); uint32_t role2val(meshtastic_Config_DeviceConfig_Role role); meshtastic_Config_DeviceConfig_Role val2role(uint32_t val); uint32_t language2val(meshtastic_Language lang); diff --git a/source/graphics/TFT/TFTView_320x240.cpp b/source/graphics/TFT/TFTView_320x240.cpp index 9fae9b76..e65e60bf 100644 --- a/source/graphics/TFT/TFTView_320x240.cpp +++ b/source/graphics/TFT/TFTView_320x240.cpp @@ -1739,7 +1739,7 @@ void TFTView_320x240::ui_event_preset_button(lv_event_t *e) lv_event_code_t event_code = lv_event_get_code(e); if (event_code == LV_EVENT_CLICKED && THIS->activeSettings == eNone && THIS->db.config.lora.use_preset) { THIS->activeSettings = eModemPreset; - lv_dropdown_set_selected(objects.settings_modem_preset_dropdown, THIS->db.config.lora.modem_preset); + lv_dropdown_set_selected(objects.settings_modem_preset_dropdown, THIS->preset2val(THIS->db.config.lora.modem_preset)); char buf[60]; sprintf(buf, _("FrequencySlot: %d (%g MHz)"), THIS->db.config.lora.channel_num, @@ -3335,6 +3335,37 @@ void TFTView_320x240::updateSignalStrength(int32_t rssi, float snr) } } +/** + * Translate proto modem preset enum value to numerical position in dropdown menu + */ +uint32_t TFTView_320x240::preset2val(meshtastic_Config_LoRaConfig_ModemPreset preset) +{ + int32_t val[] = {0, -1, -1, 4, 3, 7, 5, 1, 6, 2}; + + if (preset > (sizeof(val) / sizeof(val[0]) - 1) || val[preset] == -1) { + ILOG_WARN("unknown or deprecated preset value: %d", preset); + return 0; + } + return uint32_t(val[preset]); +} + +/** + * Translate value from dropdown menu to modem preset proto enum + */ +meshtastic_Config_LoRaConfig_ModemPreset TFTView_320x240::val2preset(uint32_t val) +{ + meshtastic_Config_LoRaConfig_ModemPreset preset[] = { + meshtastic_Config_LoRaConfig_ModemPreset_LONG_FAST, meshtastic_Config_LoRaConfig_ModemPreset_LONG_MODERATE, + meshtastic_Config_LoRaConfig_ModemPreset_LONG_TURBO, meshtastic_Config_LoRaConfig_ModemPreset_MEDIUM_FAST, + meshtastic_Config_LoRaConfig_ModemPreset_MEDIUM_SLOW, meshtastic_Config_LoRaConfig_ModemPreset_SHORT_FAST, + meshtastic_Config_LoRaConfig_ModemPreset_SHORT_TURBO, meshtastic_Config_LoRaConfig_ModemPreset_SHORT_SLOW}; + if (val > (sizeof(preset) / sizeof(preset[0]) - 1)) { + ILOG_ERROR("unknown preset value: %d", val); + return meshtastic_Config_LoRaConfig_ModemPreset_LONG_FAST; + } + return preset[val]; +} + /** * Translate proto role enum value to numerical position in dropdown menu */ @@ -3864,7 +3895,7 @@ void TFTView_320x240::ui_event_ok(lv_event_t *e) case eModemPreset: { meshtastic_Config_LoRaConfig &lora = THIS->db.config.lora; meshtastic_Config_LoRaConfig_ModemPreset preset = - (meshtastic_Config_LoRaConfig_ModemPreset)(lv_dropdown_get_selected(objects.settings_modem_preset_dropdown)); + THIS->val2preset(lv_dropdown_get_selected(objects.settings_modem_preset_dropdown)); uint16_t channelNum = lv_slider_get_value(objects.frequency_slot_slider); if (preset != lora.modem_preset || lora.channel_num != channelNum) { char buf1[16], buf2[32]; @@ -4308,10 +4339,9 @@ void TFTView_320x240::ui_event_frequency_slot_slider(lv_event_t *e) char buf[40]; uint32_t channel = (uint32_t)lv_slider_get_value(slider); sprintf(buf, _("FrequencySlot: %d (%g MHz)"), channel, - LoRaPresets::getRadioFreq( - THIS->db.config.lora.region, - (meshtastic_Config_LoRaConfig_ModemPreset)lv_dropdown_get_selected(objects.settings_modem_preset_dropdown), - channel)); + LoRaPresets::getRadioFreq(THIS->db.config.lora.region, + THIS->val2preset(lv_dropdown_get_selected(objects.settings_modem_preset_dropdown)), + channel)); lv_label_set_text(objects.frequency_slot_label, buf); } @@ -4321,8 +4351,8 @@ void TFTView_320x240::ui_event_modem_preset_dropdown(lv_event_t *e) meshtastic_Config_LoRaConfig_ModemPreset preset = (meshtastic_Config_LoRaConfig_ModemPreset)lv_dropdown_get_selected(dropdown); uint32_t numChannels = LoRaPresets::getNumChannels(THIS->db.config.lora.region, preset); - if (preset == meshtastic_Config_LoRaConfig_ModemPreset_VERY_LONG_SLOW || numChannels == 0) { - // preset deprecated or not possible for this region, revert + if (numChannels == 0) { + // preset not possible for this region, revert lv_dropdown_set_selected(dropdown, THIS->db.config.lora.modem_preset); numChannels = LoRaPresets::getNumChannels(THIS->db.config.lora.region, THIS->db.config.lora.modem_preset); return; @@ -5917,7 +5947,7 @@ void TFTView_320x240::updateLoRaConfig(const meshtastic_Config_LoRaConfig &cfg) THIS->db.channel[0].settings.name); } char buf1[20], buf2[32]; - lv_dropdown_set_selected(objects.settings_modem_preset_dropdown, cfg.modem_preset); + lv_dropdown_set_selected(objects.settings_modem_preset_dropdown, preset2val(cfg.modem_preset)); lv_dropdown_get_selected_str(objects.settings_modem_preset_dropdown, buf1, sizeof(buf1)); lv_snprintf(buf2, sizeof(buf2), _("Modem Preset: %s"), buf1); lv_label_set_text(objects.basic_settings_modem_preset_label, buf2); diff --git a/source/graphics/common/LoRaPresets.cpp b/source/graphics/common/LoRaPresets.cpp index 2468944c..ad750cb3 100644 --- a/source/graphics/common/LoRaPresets.cpp +++ b/source/graphics/common/LoRaPresets.cpp @@ -6,17 +6,17 @@ * Note: keep order the same as in meshtastic_Config_LoRaConfig_RegionCode and as in settings_region_dropdown */ LoRaPresets::RegionInfo LoRaPresets::regionInfo[] = { - {"UNSET", 902.0f, 928.0f}, {"US", 902.0f, 928.0f}, {"EU_433", 433.0f, 434.0f}, {"EU_868", 869.4f, 869.65f}, - {"CN", 470.0f, 510.0f}, {"JP", 920.8f, 927.8f}, {"ANZ", 915.0f, 928.0f}, {"KR", 920.0f, 923.0f}, - {"TW", 920.0f, 925.0f}, {"RU", 868.7f, 869.2f}, {"IN", 865.0f, 867.0f}, {"NZ_865", 864.0f, 868.0f}, - {"TH", 920.0f, 925.0f}, {"LORA_24", 2400.0f, 2483.5f}, {"UA_433", 433.0f, 434.7f}, {"UA_868", 868.0f, 868.6f}, - {"MY_433", 433.0f, 435.0f}, {"MY_919", 919.0f, 924.0f}, {"SG_923", 917.0f, 925.0f}, {"PH_433", 433.0f, 434.7f}, + {"UNSET", 902.0f, 928.0f}, {"US", 902.0f, 928.0f}, {"EU_433", 433.0f, 434.0f}, {"EU_868", 869.4f, 869.65f}, + {"CN", 470.0f, 510.0f}, {"JP", 920.8f, 927.8f}, {"ANZ", 915.0f, 928.0f}, {"KR", 920.0f, 923.0f}, + {"TW", 920.0f, 925.0f}, {"RU", 868.7f, 869.2f}, {"IN", 865.0f, 867.0f}, {"NZ_865", 864.0f, 868.0f}, + {"TH", 920.0f, 925.0f}, {"LORA_24", 2400.0f, 2483.5f}, {"UA_433", 433.0f, 434.7f}, {"UA_868", 868.0f, 868.6f}, + {"MY_433", 433.0f, 435.0f}, {"MY_919", 919.0f, 924.0f}, {"SG_923", 917.0f, 925.0f}, {"PH_433", 433.0f, 434.7f}, {"PH_868", 868.0f, 869.4f}, {"PH_915", 915.0f, 918.0f}, {"ANZ_433", 433.05f, 434.79f}}; LoRaPresets::ModemPreset LoRaPresets::modemPreset[] = { - {"LongFast", "250", .250f}, {"LongSlow", "125", .125f}, {"VLongSlow", "62.5", .0625f}, - {"MediumSlow", "250", .250f}, {"MediumFast", "250", .250f}, {"ShortSlow", "250", .250f}, - {"ShortFast", "250", .250f}, {"LongMod", "125", .125f}, {"ShortTurbo", "500", .500f}}; + {"LongFast", "250", .250f}, {"LongSlow", "125", .125f}, {"VLongSlow", "62.5", .0625f}, {"MediumSlow", "250", .250f}, + {"MediumFast", "250", .250f}, {"ShortSlow", "250", .250f}, {"ShortFast", "250", .250f}, {"LongMod", "125", .125f}, + {"ShortTurbo", "500", .500f}, {"LongTurbo", "500", .500f}}; const char *LoRaPresets::loRaRegionToString(meshtastic_Config_LoRaConfig_RegionCode region) { diff --git a/studio/320x240/TFT320x240.eez-project b/studio/320x240/TFT320x240.eez-project index 17ec3606..e0d67697 100644 --- a/studio/320x240/TFT320x240.eez-project +++ b/studio/320x240/TFT320x240.eez-project @@ -13003,7 +13003,7 @@ } }, "groupIndex": 0, - "options": "LONG FAST\nLONG SLOW\n-- deprecated --\nMEDIUM SLOW\nMEDIUM FAST\nSHORT SLOW\nSHORT FAST\nLONG MODERATE\nSHORT TURBO", + "options": "LONG FAST\nLONG MODERATE\nLONG TURBO\nMEDIUM FAST\nMEDIUM SLOW\nSHORT FAST\nSHORT TURBO\nSHORT SLOW", "optionsType": "translated-literal", "selected": 0, "selectedType": "literal",