diff --git a/radio/src/gui/128x64/lcd.h b/radio/src/gui/128x64/lcd.h index 783478e6f..e6aadc74a 100644 --- a/radio/src/gui/128x64/lcd.h +++ b/radio/src/gui/128x64/lcd.h @@ -28,8 +28,6 @@ #define scoord_t int8_t #define CENTER #define CENTER_OFS 0 -#define CONTRAST_MIN 10 -#define CONTRAST_MAX 45 #if defined(CPUARM) typedef int32_t lcdint_t; diff --git a/radio/src/gui/128x64/model_special_functions.cpp b/radio/src/gui/128x64/model_special_functions.cpp index 6e09beb54..7164d2dde 100644 --- a/radio/src/gui/128x64/model_special_functions.cpp +++ b/radio/src/gui/128x64/model_special_functions.cpp @@ -20,9 +20,9 @@ #include "opentx.h" -#define MODEL_SPECIAL_FUNC_1ST_COLUMN (3) -#define MODEL_SPECIAL_FUNC_2ND_COLUMN (5*FW-2) -#define MODEL_SPECIAL_FUNC_3RD_COLUMN (15*FW+2) +#define MODEL_SPECIAL_FUNC_1ST_COLUMN (0) +#define MODEL_SPECIAL_FUNC_2ND_COLUMN (4*FW-1) +#define MODEL_SPECIAL_FUNC_3RD_COLUMN (14*FW-3) #define MODEL_SPECIAL_FUNC_4TH_COLUMN (20*FW) #if defined(GRAPHICS) #define MODEL_SPECIAL_FUNC_4TH_COLUMN_ONOFF (20*FW) @@ -31,9 +31,9 @@ #endif #if defined(CPUARM) && defined(SDCARD) -void onCustomFunctionsFileSelectionMenu(const char *result) +void onCustomFunctionsFileSelectionMenu(const char * result) { - int sub = menuVerticalPosition - 1; + int sub = menuVerticalPosition - HEADER_LINE; CustomFunctionData * cfn; uint8_t eeFlags; @@ -132,9 +132,9 @@ void menuSpecialFunctions(event_t event, CustomFunctionData * functions, CustomF if (func == FUNC_TRAINER) { maxParam = 4; #if defined(CPUARM) - drawSource(lcdNextPos, y, CFN_CH_INDEX(cfn)==0 ? 0 : MIXSRC_Rud+CFN_CH_INDEX(cfn)-1, attr); + drawSource(MODEL_SPECIAL_FUNC_3RD_COLUMN, y, CFN_CH_INDEX(cfn)==0 ? 0 : MIXSRC_Rud+CFN_CH_INDEX(cfn)-1, attr); #else - drawSource(lcdNextPos, y, MIXSRC_Rud+CFN_CH_INDEX(cfn)-1, attr); + drawSource(MODEL_SPECIAL_FUNC_3RD_COLUMN, y, MIXSRC_Rud+CFN_CH_INDEX(cfn)-1, attr); #endif } #if defined(GVARS) @@ -214,11 +214,10 @@ void menuSpecialFunctions(event_t event, CustomFunctionData * functions, CustomF #endif #if defined(CPUARM) && defined(SDCARD) else if (func == FUNC_PLAY_TRACK || func == FUNC_BACKGND_MUSIC || func == FUNC_PLAY_SCRIPT) { - coord_t x = (func == FUNC_PLAY_TRACK ? MODEL_SPECIAL_FUNC_2ND_COLUMN + FW + FW*strlen(TR_PLAY_TRACK) : MODEL_SPECIAL_FUNC_3RD_COLUMN); if (ZEXIST(cfn->play.name)) - lcdDrawSizedText(x, y, cfn->play.name, sizeof(cfn->play.name), attr); + lcdDrawSizedText(MODEL_SPECIAL_FUNC_3RD_COLUMN, y, cfn->play.name, sizeof(cfn->play.name), attr); else - lcdDrawTextAtIndex(x, y, STR_VCSWFUNC, 0, attr); + lcdDrawTextAtIndex(MODEL_SPECIAL_FUNC_3RD_COLUMN, y, STR_VCSWFUNC, 0, attr); if (active && event==EVT_KEY_BREAK(KEY_ENTER)) { s_editMode = 0; char directory[256]; @@ -354,11 +353,11 @@ void menuSpecialFunctions(event_t event, CustomFunctionData * functions, CustomF } #if defined(CPUARM) else if (CFN_PLAY_REPEAT(cfn) == CFN_PLAY_REPEAT_NOSTART) { - lcdDrawText(MODEL_SPECIAL_FUNC_4TH_COLUMN_ONOFF, y, "!-", attr); + lcdDrawText(MODEL_SPECIAL_FUNC_4TH_COLUMN_ONOFF+1, y, "!-", attr); } #endif else { - lcdDrawNumber(MODEL_SPECIAL_FUNC_4TH_COLUMN+2+FW, y, CFN_PLAY_REPEAT(cfn)*CFN_PLAY_REPEAT_MUL, attr); + lcdDrawNumber(MODEL_SPECIAL_FUNC_4TH_COLUMN+2+FW, y, CFN_PLAY_REPEAT(cfn)*CFN_PLAY_REPEAT_MUL, RIGHT | attr); } #if defined(CPUARM) if (active) CFN_PLAY_REPEAT(cfn) = checkIncDec(event, CFN_PLAY_REPEAT(cfn)==CFN_PLAY_REPEAT_NOSTART?-1:CFN_PLAY_REPEAT(cfn), -1, 60/CFN_PLAY_REPEAT_MUL, eeFlags); diff --git a/radio/src/gui/128x64/popups.cpp b/radio/src/gui/128x64/popups.cpp index 24e55f122..5ff5d6455 100644 --- a/radio/src/gui/128x64/popups.cpp +++ b/radio/src/gui/128x64/popups.cpp @@ -122,107 +122,3 @@ void runPopupWarning(event_t event) #endif } } - -#if defined(CPUARM) -void (*popupFunc)(event_t event) = NULL; -#endif - -#if defined(NAVIGATION_MENUS) -const char *popupMenuItems[POPUP_MENU_MAX_LINES]; -uint8_t s_menu_item = 0; -uint16_t popupMenuNoItems = 0; -uint8_t popupMenuFlags = 0; -uint16_t popupMenuOffset = 0; -void (*popupMenuHandler)(const char * result); - -#if defined(CPUARM) -uint8_t popupMenuOffsetType = MENU_OFFSET_INTERNAL; -#endif - -const char * runPopupMenu(event_t event) -{ - const char * result = NULL; - - uint8_t display_count = min(popupMenuNoItems, POPUP_MENU_MAX_LINES); - uint8_t y = (display_count >= 5 ? MENU_Y - FH - 1 : MENU_Y); - lcdDrawFilledRect(MENU_X, y, MENU_W, display_count * (FH+1) + 2, SOLID, ERASE); - lcdDrawRect(MENU_X, y, MENU_W, display_count * (FH+1) + 2); - - for (uint8_t i=0; i display_count) { - drawVerticalScrollbar(MENU_X+MENU_W-1, y+1, POPUP_MENU_MAX_LINES * (FH+1), popupMenuOffset, popupMenuNoItems, POPUP_MENU_MAX_LINES); - } - - switch (event) { -#if defined(ROTARY_ENCODER_NAVIGATION) - CASE_EVT_ROTARY_LEFT -#endif - case EVT_KEY_FIRST(KEY_UP): - case EVT_KEY_REPT(KEY_UP): - if (s_menu_item > 0) { - s_menu_item--; - } -#if defined(SDCARD) - else if (popupMenuOffset > 0) { - popupMenuOffset--; - result = STR_UPDATE_LIST; - } -#endif - else { - s_menu_item = display_count - 1; -#if defined(SDCARD) - if (popupMenuNoItems > POPUP_MENU_MAX_LINES) { - popupMenuOffset = popupMenuNoItems - display_count; - result = STR_UPDATE_LIST; - } -#endif - } - break; - -#if defined(ROTARY_ENCODER_NAVIGATION) - CASE_EVT_ROTARY_RIGHT -#endif - case EVT_KEY_FIRST(KEY_DOWN): - case EVT_KEY_REPT(KEY_DOWN): - if (s_menu_item < display_count - 1 && popupMenuOffset + s_menu_item + 1 < popupMenuNoItems) { - s_menu_item++; - } -#if defined(SDCARD) - else if (popupMenuNoItems > popupMenuOffset + display_count) { - popupMenuOffset++; - result = STR_UPDATE_LIST; - } -#endif - else { - s_menu_item = 0; -#if defined(SDCARD) - if (popupMenuOffset) { - popupMenuOffset = 0; - result = STR_UPDATE_LIST; - } -#endif - } - break; - CASE_EVT_ROTARY_BREAK - case EVT_KEY_BREAK(KEY_ENTER): - result = popupMenuItems[s_menu_item]; - // no break -#if defined(ROTARY_ENCODER_NAVIGATION) - CASE_EVT_ROTARY_LONG - killEvents(event); -#endif - case EVT_KEY_BREAK(KEY_EXIT): - popupMenuNoItems = 0; - s_menu_item = 0; - popupMenuFlags = 0; - popupMenuOffset = 0; - break; - } - - return result; -} -#endif diff --git a/radio/src/gui/128x64/popups.h b/radio/src/gui/128x64/popups.h index 038a5bc1c..3966ee58b 100644 --- a/radio/src/gui/128x64/popups.h +++ b/radio/src/gui/128x64/popups.h @@ -70,13 +70,12 @@ extern uint8_t warningInfoFlags; #define POPUP_MENU_ADD_SD_ITEM(s) #endif -#define MENU_MAX_DISPLAY_LINES 6 - #if defined(CPUARM) #define NAVIGATION_MENUS - #define POPUP_MENU_ADD_ITEM(s) do { if (popupMenuNoItems < POPUP_MENU_MAX_LINES) popupMenuItems[popupMenuNoItems++] = s; } while (0) + #define POPUP_MENU_ADD_ITEM(s) do { popupMenuOffsetType = MENU_OFFSET_INTERNAL; if (popupMenuNoItems < POPUP_MENU_MAX_LINES) popupMenuItems[popupMenuNoItems++] = s; } while (0) #define POPUP_MENU_START(func) do { popupMenuHandler = (func); AUDIO_KEY_PRESS(); } while (0) #define POPUP_MENU_MAX_LINES 12 + #define MENU_MAX_DISPLAY_LINES 6 #define MENU_LINE_LENGTH (LEN_MODEL_NAME+1) #define POPUP_MENU_SET_BSS_FLAG() #define POPUP_MENU_UNSET_BSS_FLAG() @@ -89,7 +88,8 @@ extern uint8_t warningInfoFlags; #define NAVIGATION_MENUS #define POPUP_MENU_ADD_ITEM(s) do { if (popupMenuNoItems < POPUP_MENU_MAX_LINES) popupMenuItems[popupMenuNoItems++] = s; } while (0) #define POPUP_MENU_START(func) do { popupMenuHandler = (func); AUDIO_KEY_PRESS(); } while (0) - #define POPUP_MENU_MAX_LINES MENU_MAX_DISPLAY_LINES + #define POPUP_MENU_MAX_LINES 6 + #define MENU_MAX_DISPLAY_LINES 6 #define MENU_LINE_LENGTH (LEN_MODEL_NAME+1) #define POPUP_MENU_SET_BSS_FLAG() (popupMenuFlags = BSS) #define POPUP_MENU_UNSET_BSS_FLAG() (popupMenuFlags = 0) diff --git a/radio/src/gui/128x64/radio_diaganas.cpp b/radio/src/gui/128x64/radio_diaganas.cpp index 1bb5eb401..3f7b61d79 100644 --- a/radio/src/gui/128x64/radio_diaganas.cpp +++ b/radio/src/gui/128x64/radio_diaganas.cpp @@ -63,8 +63,8 @@ void menuRadioDiagAnalogs(event_t event) #endif #if defined(PCBX7D) - lcdDrawTextAlignedLeft(MENU_HEADER_HEIGHT + 1 + (NUM_STICKS+NUM_POTS+NUM_SLIDERS+1)/2 * FH, STR_BATT_CALIB); - putsVolts(LEN_CALIB_FIELDS*FW+4*FW, MENU_HEADER_HEIGHT + 1 + (NUM_STICKS+NUM_POTS+NUM_SLIDERS+1)/2 * FH + 2, getBatteryVoltage(), (menuVerticalPosition==HEADER_LINE ? INVERS | (s_editMode > 0 ? BLINK : 0) : 0) | PREC2 | LEFT); + lcdDrawTextAlignedLeft(MENU_HEADER_HEIGHT + 1 + (NUM_STICKS+NUM_POTS+NUM_SLIDERS+1)/2 * FH + 2, STR_BATT_CALIB); + putsVolts(LEN_CALIB_FIELDS*FW+FW, MENU_HEADER_HEIGHT + 1 + (NUM_STICKS+NUM_POTS+NUM_SLIDERS+1)/2 * FH + 2, getBatteryVoltage(), (menuVerticalPosition==HEADER_LINE ? INVERS | (s_editMode > 0 ? BLINK : 0) : 0) | PREC2 | LEFT); #elif defined(PCBSKY9X) lcdDrawTextAlignedLeft(MENU_HEADER_HEIGHT+1+4*FH, STR_BATT_CALIB); static int32_t adcBatt; diff --git a/radio/src/gui/128x64/radio_setup.cpp b/radio/src/gui/128x64/radio_setup.cpp index eb66cd18c..493e5630d 100644 --- a/radio/src/gui/128x64/radio_setup.cpp +++ b/radio/src/gui/128x64/radio_setup.cpp @@ -357,7 +357,7 @@ void menuRadioSetup(event_t event) lcdDrawTextAlignedLeft(y, STR_CONTRAST); lcdDrawNumber(RADIO_SETUP_2ND_COLUMN, y, g_eeGeneral.contrast, attr|LEFT); if (attr) { - CHECK_INCDEC_GENVAR(event, g_eeGeneral.contrast, CONTRAST_MIN, CONTRAST_MAX); + CHECK_INCDEC_GENVAR(event, g_eeGeneral.contrast, LCD_CONTRAST_MIN, LCD_CONTRAST_MAX); lcdSetContrast(); } break; diff --git a/radio/src/gui/212x64/lcd.h b/radio/src/gui/212x64/lcd.h index 9c8cec360..1dd5df89a 100644 --- a/radio/src/gui/212x64/lcd.h +++ b/radio/src/gui/212x64/lcd.h @@ -27,8 +27,6 @@ #define scoord_t int #define CENTER "\015" #define CENTER_OFS (7*FW-FW/2) -#define CONTRAST_MIN 0 -#define CONTRAST_MAX 45 #define lcdint_t int32_t diff --git a/radio/src/gui/212x64/popups.cpp b/radio/src/gui/212x64/popups.cpp index 4573a5db4..a6c83bfe4 100644 --- a/radio/src/gui/212x64/popups.cpp +++ b/radio/src/gui/212x64/popups.cpp @@ -29,13 +29,6 @@ uint8_t warningInfoFlags = ZCHAR; int16_t warningInputValue; int16_t warningInputValueMin; int16_t warningInputValueMax; -void (*popupFunc)(event_t event) = NULL; -const char * popupMenuItems[POPUP_MENU_MAX_LINES]; -uint8_t s_menu_item = 0; -uint16_t popupMenuNoItems = 0; -uint16_t popupMenuOffset = 0; -uint8_t popupMenuOffsetType = MENU_OFFSET_INTERNAL; -void (*popupMenuHandler)(const char * result); void drawMessageBox(const char * title) { @@ -119,74 +112,3 @@ void runPopupWarning(event_t event) break; } } - -const char * runPopupMenu(event_t event) -{ - const char * result = NULL; - - uint8_t display_count = min(popupMenuNoItems, MENU_MAX_DISPLAY_LINES); - uint8_t y = (display_count >= 5 ? MENU_Y - FH - 1 : MENU_Y); - lcdDrawFilledRect(MENU_X, y, MENU_W, display_count * (FH+1) + 2, SOLID, ERASE); - lcdDrawRect(MENU_X, y, MENU_W, display_count * (FH+1) + 2); - - for (uint8_t i=0; i display_count) { - drawVerticalScrollbar(MENU_X+MENU_W-1, y+1, MENU_MAX_DISPLAY_LINES * (FH+1), popupMenuOffset, popupMenuNoItems, display_count); - } - - switch (event) { - CASE_EVT_ROTARY_LEFT - case EVT_KEY_FIRST(KEY_UP): - case EVT_KEY_REPT(KEY_UP): - if (s_menu_item > 0) { - s_menu_item--; - } - else if (popupMenuOffset > 0) { - popupMenuOffset--; - result = STR_UPDATE_LIST; - } - else { - s_menu_item = min(display_count, MENU_MAX_DISPLAY_LINES) - 1; - if (popupMenuNoItems > MENU_MAX_DISPLAY_LINES) { - popupMenuOffset = popupMenuNoItems - MENU_MAX_DISPLAY_LINES; - result = STR_UPDATE_LIST; - } - } - break; - - CASE_EVT_ROTARY_RIGHT - case EVT_KEY_FIRST(KEY_DOWN): - case EVT_KEY_REPT(KEY_DOWN): - if (s_menu_item < display_count - 1 && popupMenuOffset + s_menu_item + 1 < popupMenuNoItems) { - s_menu_item++; - } - else if (popupMenuNoItems > popupMenuOffset + display_count) { - popupMenuOffset++; - result = STR_UPDATE_LIST; - } - else { - s_menu_item = 0; - if (popupMenuOffset) { - popupMenuOffset = 0; - result = STR_UPDATE_LIST; - } - } - break; - - case EVT_KEY_BREAK(KEY_ENTER): - result = popupMenuItems[s_menu_item + (popupMenuOffsetType == MENU_OFFSET_INTERNAL ? popupMenuOffset : 0)]; - // no break - - case EVT_KEY_BREAK(KEY_EXIT): - popupMenuNoItems = 0; - s_menu_item = 0; - popupMenuOffset = 0; - break; - } - - return result; -} diff --git a/radio/src/gui/212x64/radio_setup.cpp b/radio/src/gui/212x64/radio_setup.cpp index cdf781db7..61a9609be 100644 --- a/radio/src/gui/212x64/radio_setup.cpp +++ b/radio/src/gui/212x64/radio_setup.cpp @@ -314,7 +314,7 @@ void menuRadioSetup(event_t event) lcdDrawTextAlignedLeft(y, STR_CONTRAST); lcdDrawNumber(RADIO_SETUP_2ND_COLUMN, y, g_eeGeneral.contrast, attr|LEFT); if (attr) { - CHECK_INCDEC_GENVAR(event, g_eeGeneral.contrast, CONTRAST_MIN, CONTRAST_MAX); + CHECK_INCDEC_GENVAR(event, g_eeGeneral.contrast, LCD_CONTRAST_MIN, LCD_CONTRAST_MAX); lcdSetContrast(); } break; diff --git a/radio/src/gui/480x272/radio_setup.cpp b/radio/src/gui/480x272/radio_setup.cpp index 5d3d258ed..c723d3cfc 100644 --- a/radio/src/gui/480x272/radio_setup.cpp +++ b/radio/src/gui/480x272/radio_setup.cpp @@ -317,7 +317,7 @@ bool menuRadioSetup(event_t event) lcdDrawText(MENUS_MARGIN_LEFT, y, STR_CONTRAST); lcdDrawNumber(RADIO_SETUP_2ND_COLUMN, y, g_eeGeneral.contrast, attr|LEFT); if (attr) { - CHECK_INCDEC_GENVAR(event, g_eeGeneral.contrast, CONTRAST_MIN, CONTRAST_MAX); + CHECK_INCDEC_GENVAR(event, g_eeGeneral.contrast, LCD_CONTRAST_MIN, LCD_CONTRAST_MAX); lcdSetContrast(); } break; diff --git a/radio/src/gui/common/stdlcd/CMakeLists.txt b/radio/src/gui/common/stdlcd/CMakeLists.txt index 9643dbcc2..5ff8d43ed 100644 --- a/radio/src/gui/common/stdlcd/CMakeLists.txt +++ b/radio/src/gui/common/stdlcd/CMakeLists.txt @@ -1,6 +1,7 @@ set(GUI_SRC ${GUI_SRC} ../common/stdlcd/widgets.cpp + ../common/stdlcd/popups.cpp ) if(HELI) diff --git a/radio/src/gui/common/stdlcd/popups.cpp b/radio/src/gui/common/stdlcd/popups.cpp new file mode 100644 index 000000000..fce0793fa --- /dev/null +++ b/radio/src/gui/common/stdlcd/popups.cpp @@ -0,0 +1,140 @@ +/* + * Copyright (C) OpenTX + * + * Based on code named + * th9x - http://code.google.com/p/th9x + * er9x - http://code.google.com/p/er9x + * gruvin9x - http://code.google.com/p/gruvin9x + * + * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include "opentx.h" + +#if defined(CPUARM) +uint8_t popupMenuOffsetType = MENU_OFFSET_INTERNAL; +void (*popupFunc)(event_t event) = NULL; +#endif + +#if defined(NAVIGATION_MENUS) +const char * popupMenuItems[POPUP_MENU_MAX_LINES]; +uint8_t s_menu_item = 0; +uint16_t popupMenuNoItems = 0; +uint8_t popupMenuFlags = 0; +uint16_t popupMenuOffset = 0; +void (*popupMenuHandler)(const char * result); + +const char * runPopupMenu(event_t event) +{ + const char * result = NULL; + + uint8_t display_count = min(popupMenuNoItems, MENU_MAX_DISPLAY_LINES); + uint8_t y = (display_count >= 5 ? MENU_Y - FH - 1 : MENU_Y); + lcdDrawFilledRect(MENU_X, y, MENU_W, display_count * (FH+1) + 2, SOLID, ERASE); + lcdDrawRect(MENU_X, y, MENU_W, display_count * (FH+1) + 2); + + for (uint8_t i=0; i display_count) { + drawVerticalScrollbar(MENU_X+MENU_W-1, y+1, MENU_MAX_DISPLAY_LINES * (FH+1), popupMenuOffset, popupMenuNoItems, display_count); + } + + switch (event) { +#if defined(ROTARY_ENCODER_NAVIGATION) + CASE_EVT_ROTARY_LEFT +#endif + case EVT_KEY_FIRST(KEY_UP): + case EVT_KEY_REPT(KEY_UP): + if (s_menu_item > 0) { + s_menu_item--; + } +#if defined(SDCARD) + else if (popupMenuOffset > 0) { + popupMenuOffset--; + result = STR_UPDATE_LIST; + } +#endif + else { +#if defined(CPUARM) + s_menu_item = min(display_count, MENU_MAX_DISPLAY_LINES) - 1; +#else + s_menu_item = display_count - 1; +#endif +#if defined(SDCARD) + if (popupMenuNoItems > MENU_MAX_DISPLAY_LINES) { + popupMenuOffset = popupMenuNoItems - display_count; + result = STR_UPDATE_LIST; + } +#endif + } + break; + +#if defined(ROTARY_ENCODER_NAVIGATION) + CASE_EVT_ROTARY_RIGHT +#endif + case EVT_KEY_FIRST(KEY_DOWN): + case EVT_KEY_REPT(KEY_DOWN): + if (s_menu_item < display_count - 1 && popupMenuOffset + s_menu_item + 1 < popupMenuNoItems) { + s_menu_item++; + } +#if defined(SDCARD) + else if (popupMenuNoItems > popupMenuOffset + display_count) { + popupMenuOffset++; + result = STR_UPDATE_LIST; + } +#endif + else { + s_menu_item = 0; +#if defined(SDCARD) + if (popupMenuOffset) { + popupMenuOffset = 0; + result = STR_UPDATE_LIST; + } +#endif + } + break; + +#if defined(ROTARY_ENCODER_NAVIGATION) + CASE_EVT_ROTARY_BREAK +#endif + case EVT_KEY_BREAK(KEY_ENTER): +#if defined(CPUARM) + result = popupMenuItems[s_menu_item + (popupMenuOffsetType == MENU_OFFSET_INTERNAL ? popupMenuOffset : 0)]; +#else + result = popupMenuItems[s_menu_item]; +#endif + // no break + +#if defined(ROTARY_ENCODER_NAVIGATION) + CASE_EVT_ROTARY_LONG + killEvents(event); + // no break +#endif + + case EVT_KEY_BREAK(KEY_EXIT): + popupMenuNoItems = 0; + s_menu_item = 0; + popupMenuFlags = 0; + popupMenuOffset = 0; + break; + } + + return result; +} +#endif diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index 52fb46fca..d7ac00528 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -231,7 +231,7 @@ void generalDefault() g_eeGeneral.variant = EEPROM_VARIANT; #if !defined(PCBHORUS) - g_eeGeneral.contrast = 25; + g_eeGeneral.contrast = LCD_CONTRAST_DEFAULT; #endif #if defined(PCBFLAMENCO) @@ -2545,7 +2545,7 @@ int main() MCUCSR = 0x80 ; // Must be done twice #endif #if defined(PCBTARANIS) - g_eeGeneral.contrast = 30; + g_eeGeneral.contrast = LCD_CONTRAST_DEFAULT; #endif wdt_disable(); diff --git a/radio/src/sdcard.cpp b/radio/src/sdcard.cpp index 416a98f2f..a39b09460 100644 --- a/radio/src/sdcard.cpp +++ b/radio/src/sdcard.cpp @@ -124,7 +124,7 @@ bool sdListFiles(const char * path, const char * extension, const uint8_t maxlen FILINFO fno; DIR dir; -#if defined(PCBTARANIS) || defined(PCBHORUS) +#if defined(CPUARM) popupMenuOffsetType = MENU_OFFSET_EXTERNAL; #endif diff --git a/radio/src/targets/common/avr/board_avr.h b/radio/src/targets/common/avr/board_avr.h index 29d6d7535..fb50df11f 100644 --- a/radio/src/targets/common/avr/board_avr.h +++ b/radio/src/targets/common/avr/board_avr.h @@ -102,6 +102,9 @@ uint8_t switchState(uint8_t index); #define LCD_W 128 #define LCD_H 64 #define LCD_DEPTH 1 +#define LCD_CONTRAST_MIN 10 +#define LCD_CONTRAST_MAX 45 +#define LCD_CONTRAST_DEFAULT 25 void lcdRefresh(void); #define lcdRefreshWait() void lcdSetRefVolt(unsigned char val); diff --git a/radio/src/targets/sky9x/board.h b/radio/src/targets/sky9x/board.h index 04df46c7a..0ca3f68f5 100644 --- a/radio/src/targets/sky9x/board.h +++ b/radio/src/targets/sky9x/board.h @@ -173,6 +173,9 @@ enum EnumSwitches #define LCD_W 128 #define LCD_H 64 #define LCD_DEPTH 1 +#define LCD_CONTRAST_MIN 10 +#define LCD_CONTRAST_MAX 45 +#define LCD_CONTRAST_DEFAULT 25 void lcdInit(void); void lcdRefresh(void); #define lcdRefreshWait() diff --git a/radio/src/targets/taranis/board.h b/radio/src/targets/taranis/board.h index 72b821e00..9fba385ea 100644 --- a/radio/src/targets/taranis/board.h +++ b/radio/src/targets/taranis/board.h @@ -519,11 +519,17 @@ void ledBlue(void); #define LCD_H 64 #define LCD_DEPTH 1 #define IS_LCD_RESET_NEEDED() true +#define LCD_CONTRAST_MIN 10 +#define LCD_CONTRAST_MAX 30 +#define LCD_CONTRAST_DEFAULT 20 #else #define LCD_W 212 #define LCD_H 64 #define LCD_DEPTH 4 #define IS_LCD_RESET_NEEDED() (!WAS_RESET_BY_WATCHDOG_OR_SOFTWARE()) +#define LCD_CONTRAST_MIN 0 +#define LCD_CONTRAST_MAX 45 +#define LCD_CONTRAST_DEFAULT 25 #endif void lcdInit(void); void lcdInitFinish(void); diff --git a/radio/src/targets/taranis/lcd_driver_spi.cpp b/radio/src/targets/taranis/lcd_driver_spi.cpp index d3d54a857..5338cd210 100644 --- a/radio/src/targets/taranis/lcd_driver_spi.cpp +++ b/radio/src/targets/taranis/lcd_driver_spi.cpp @@ -20,7 +20,7 @@ #include "opentx.h" -#define CONTRAST_OFS 160 +#define LCD_CONTRAST_OFFSET 160 #define RESET_WAIT_DELAY_MS 300 // Wait time after LCD reset before first command #define WAIT_FOR_DMA_END() do { } while (lcd_busy) @@ -124,9 +124,9 @@ void lcdStart() lcdWriteCommand(0xE9); // Set bias=1/10 lcdWriteCommand(0x81); // Set Vop #if defined(BOOT) - lcdWriteCommand(CONTRAST_OFS+25); + lcdWriteCommand(LCD_CONTRAST_OFFSET+LCD_CONTRAST_DEFAULT); #else - lcdWriteCommand(CONTRAST_OFS+g_eeGeneral.contrast); + lcdWriteCommand(LCD_CONTRAST_OFFSET+g_eeGeneral.contrast); #endif lcdWriteCommand(0xA2); // Set line rate: 28KLPS lcdWriteCommand(0x28); // Set panel loading @@ -330,8 +330,8 @@ void lcdSetRefVolt(uint8_t val) #if !defined(PCBX7D) WAIT_FOR_DMA_END(); +#endif lcdWriteCommand(0x81); // Set Vop - lcdWriteCommand(val+CONTRAST_OFS); // 0-255 -#endif + lcdWriteCommand(val+LCD_CONTRAST_OFFSET); // 0-255 } diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 2ffa59f57..bfaed2708 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -477,7 +477,11 @@ #endif #define LEN_VRENCODERS "\003" +#if defined(ROTARY_ENCODERS) #define TR_VRENCODERS "REa""REb" +#else +#define TR_VRENCODERS "RE\0" +#endif #define LEN_VSWITCHES "\003" #define LEN_VSRCRAW "\004"