From a83b5cdb7b39bb518fc4c03f1b7657aa4bb81c93 Mon Sep 17 00:00:00 2001 From: philmoz Date: Sun, 19 Jan 2025 13:57:41 +1100 Subject: [PATCH] feat(bw): move battery range settings to Radio / Hardware tab (#5803) --- radio/src/gui/128x64/radio_setup.cpp | 24 +------------- .../src/gui/common/stdlcd/radio_hardware.cpp | 31 +++++++++++++++++-- 2 files changed, 30 insertions(+), 25 deletions(-) diff --git a/radio/src/gui/128x64/radio_setup.cpp b/radio/src/gui/128x64/radio_setup.cpp index da7fea236..d3f74ca8f 100644 --- a/radio/src/gui/128x64/radio_setup.cpp +++ b/radio/src/gui/128x64/radio_setup.cpp @@ -40,12 +40,6 @@ int8_t slider_5pos(coord_t y, int8_t value, event_t event, uint8_t attr, const c return editChoice(RADIO_SETUP_2ND_COLUMN, y, title, nullptr, value, -2, +2, attr, event, INDENT_WIDTH); } -#if defined(BATTGRAPH) - #define CASE_BATTGRAPH(x) x, -#else - #define CASE_BATTGRAPH(x) -#endif - #if !defined(SURFACE_RADIO) #define CASE_TX_MODE(x) x, #else @@ -55,7 +49,6 @@ int8_t slider_5pos(coord_t y, int8_t value, event_t event, uint8_t attr, const c enum { CASE_RTCLOCK(ITEM_RADIO_SETUP_DATE) CASE_RTCLOCK(ITEM_RADIO_SETUP_TIME) - CASE_BATTGRAPH(ITEM_RADIO_SETUP_BATT_RANGE) ITEM_RADIO_SETUP_SOUND_LABEL, CASE_AUDIO(ITEM_RADIO_SETUP_BEEP_MODE) CASE_BUZZER(ITEM_RADIO_SETUP_BUZZER_MODE) @@ -180,7 +173,7 @@ void menuRadioSetup(event_t event) MENU(STR_RADIO_SETUP, menuTabGeneral, MENU_RADIO_SETUP, ITEM_RADIO_SETUP_MAX, { HEADER_LINE_COLUMNS - CASE_RTCLOCK(2) CASE_RTCLOCK(2) CASE_BATTGRAPH(1) + CASE_RTCLOCK(2) CASE_RTCLOCK(2) // Sound 0, CASE_AUDIO(SOUND_ROW(0)) @@ -342,21 +335,6 @@ void menuRadioSetup(event_t event) break; #endif -#if defined(BATTGRAPH) - case ITEM_RADIO_SETUP_BATT_RANGE: - lcdDrawTextAlignedLeft(y, STR_BATTERY_RANGE); - putsVolts(LCD_W-1, y, 120+g_eeGeneral.vBatMax, (menuHorizontalPosition>0 ? attr : 0)|RIGHT|NO_UNIT); - lcdDrawChar(lcdLastLeftPos - FW, y, '-'); - putsVolts(lcdLastLeftPos - FW, y, 90+g_eeGeneral.vBatMin, (menuHorizontalPosition==0 ? attr : 0)|RIGHT|NO_UNIT); - if (attr && s_editMode>0) { - if (menuHorizontalPosition==0) - CHECK_INCDEC_GENVAR(event, g_eeGeneral.vBatMin, -60, g_eeGeneral.vBatMax+29); // min=3.0V - else - CHECK_INCDEC_GENVAR(event, g_eeGeneral.vBatMax, g_eeGeneral.vBatMin-29, +40); // max=16.0V - } - break; -#endif - case ITEM_RADIO_SETUP_SOUND_LABEL: expandState.sound = expandableSection(y, STR_SOUND_LABEL, expandState.sound, attr, event); break; diff --git a/radio/src/gui/common/stdlcd/radio_hardware.cpp b/radio/src/gui/common/stdlcd/radio_hardware.cpp index d400e75c6..5920c7873 100644 --- a/radio/src/gui/common/stdlcd/radio_hardware.cpp +++ b/radio/src/gui/common/stdlcd/radio_hardware.cpp @@ -39,9 +39,17 @@ #if LCD_W >= 212 #define HW_SETTINGS_COLUMN1 12*FW #define HW_SETTINGS_COLUMN2 (20*FW - 3) + #define HW_SETTINGS_COLUMN3 HW_SETTINGS_COLUMN2 #else #define HW_SETTINGS_COLUMN1 30 #define HW_SETTINGS_COLUMN2 (HW_SETTINGS_COLUMN1 + 5*FW) + #define HW_SETTINGS_COLUMN3 HW_SETTINGS_COLUMN2 + FW +#endif + +#if defined(BATTGRAPH) + #define CASE_BATTGRAPH(x) x, +#else + #define CASE_BATTGRAPH(x) #endif enum { @@ -54,6 +62,7 @@ enum { ITEM_RADIO_HARDWARE_LABEL_SWITCHES, ITEM_RADIO_HARDWARE_SWITCH, ITEM_RADIO_HARDWARE_SWITCH_END = ITEM_RADIO_HARDWARE_SWITCH + MAX_SWITCHES - 1, + CASE_BATTGRAPH(ITEM_RADIO_HARDWARE_BATT_RANGE) ITEM_RADIO_HARDWARE_BATTERY_CALIB, ITEM_RADIO_HARDWARE_RTC_BATTERY, ITEM_RADIO_HARDWARE_RTC_CHECK, @@ -144,6 +153,9 @@ static void _init_menu_tab_array(uint8_t* tab, size_t len) tab[i] = switchIsFlex(idx) ? 2 : idx < max_switches ? 1 : HIDDEN_ROW; } +#if defined(BATTGRAPH) + tab[ITEM_RADIO_HARDWARE_BATT_RANGE] = 1; +#endif tab[ITEM_RADIO_HARDWARE_BATTERY_CALIB] = 0; tab[ITEM_RADIO_HARDWARE_RTC_BATTERY] = READONLY_ROW; tab[ITEM_RADIO_HARDWARE_RTC_CHECK] = 0; @@ -268,9 +280,24 @@ void menuRadioHardware(event_t event) lcdDrawTextAlignedLeft(y, STR_SWITCHES); break; +#if defined(BATTGRAPH) + case ITEM_RADIO_HARDWARE_BATT_RANGE: + lcdDrawTextAlignedLeft(y, STR_BATTERY_RANGE); + putsVolts(HW_SETTINGS_COLUMN3, y, 90+g_eeGeneral.vBatMin, (menuHorizontalPosition==0 ? attr : 0)|NO_UNIT); + lcdDrawChar(lcdNextPos, y, '-'); + putsVolts(lcdNextPos, y, 120+g_eeGeneral.vBatMax, (menuHorizontalPosition>0 ? attr : 0)|NO_UNIT); + if (attr && s_editMode>0) { + if (menuHorizontalPosition==0) + CHECK_INCDEC_GENVAR(event, g_eeGeneral.vBatMin, -60, g_eeGeneral.vBatMax+29); // min=3.0V + else + CHECK_INCDEC_GENVAR(event, g_eeGeneral.vBatMax, g_eeGeneral.vBatMin-29, +40); // max=16.0V + } + break; +#endif + case ITEM_RADIO_HARDWARE_BATTERY_CALIB: lcdDrawTextAlignedLeft(y, STR_BATT_CALIB); - putsVolts(HW_SETTINGS_COLUMN2, y, getBatteryVoltage(), attr|PREC2|LEFT); + putsVolts(HW_SETTINGS_COLUMN3, y, getBatteryVoltage(), attr|PREC2|LEFT); if (attr) { CHECK_INCDEC_GENVAR(event, g_eeGeneral.txVoltageCalibration, -127, 127); } @@ -278,7 +305,7 @@ void menuRadioHardware(event_t event) case ITEM_RADIO_HARDWARE_RTC_BATTERY: lcdDrawTextAlignedLeft(y, STR_RTC_BATT); - putsVolts(HW_SETTINGS_COLUMN2, y, getRTCBatteryVoltage(), PREC2|LEFT); + putsVolts(HW_SETTINGS_COLUMN3, y, getRTCBatteryVoltage(), PREC2|LEFT); break; case ITEM_RADIO_HARDWARE_RTC_CHECK: