From 59e65b7f473ead0baa1756595aa4adf42fd262f2 Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Fri, 8 Jun 2018 01:19:49 +0200 Subject: [PATCH] New ML support - language select menu +cond. translation for W25X20CL --- Firmware/language.c | 12 ++++++++++-- Firmware/ultralcd.cpp | 19 +++++++++++++++---- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/Firmware/language.c b/Firmware/language.c index 3927c8d0..85d5510a 100644 --- a/Firmware/language.c +++ b/Firmware/language.c @@ -57,6 +57,7 @@ uint8_t lang_select(uint8_t lang) lang_selected = 0; return 1; } +#ifdef W25X20CL if (lang == LANG_ID_SEC) //current secondary language { uint16_t ui = ((((uint16_t)&_SEC_LANG) + 0x00ff) & 0xff00); //table pointer @@ -65,6 +66,8 @@ uint8_t lang_select(uint8_t lang) lang_selected = 1; // set language id return 1; } +#else //W25X20CL +#endif //W25X20CL /* uint16_t ui = (uint16_t)&_SEC_LANG; //pointer to _SEC_LANG reserved space ui += 0x00ff; //add 1 page @@ -77,8 +80,8 @@ uint8_t lang_select(uint8_t lang) uint8_t lang_get_count() { -//#ifdef W25X20CL - uint8_t count = 1; //count = 1+n (primary + all in xflash) +#ifdef W25X20CL + uint8_t count = 2; //count = 1+n (primary + secondary + all in xflash) uint32_t addr = 0x00000; //start of xflash lang_table_header_t header; //table header structure while (1) @@ -89,10 +92,13 @@ uint8_t lang_get_count() count++; //inc counter } return count; +#else //W25X20CL +#endif //W25X20CL } uint16_t lang_get_code(uint8_t lang) { +#ifdef W25X20CL if (lang == LANG_ID_PRI) return LANG_CODE_EN; //primary lang = EN if (lang == LANG_ID_SEC) { @@ -110,6 +116,8 @@ uint16_t lang_get_code(uint8_t lang) if (--lang == 0) return header.code; addr += header.size; //calc address of next table } +#else //W25X20CL +#endif //W25X20CL // if (lang == LANG_ID_SEC) // { diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 14d2792a..76a5efc6 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3769,8 +3769,9 @@ static void lcd_language_menu() else if (langsel == LANGSEL_ACTIVE) MENU_ITEM(back, _T(MSG_WATCH), 0); MENU_ITEM(setlang, lang_get_name_by_code(lang_get_code(0)), 0); - for (int i = 1; i < lang_get_count(); i++) - MENU_ITEM(setlang, lang_get_name_by_code(lang_get_code(i+1)), i); +// MENU_ITEM(setlang, lang_get_name_by_code(lang_get_code(1)), 1); + for (int i = 2; i < lang_get_count(); i++) + MENU_ITEM(setlang, lang_get_name_by_code(lang_get_code(i)), i); END_MENU(); } #endif //(LANG_MODE != 0) @@ -7349,9 +7350,19 @@ static void menu_action_submenu(menuFunc_t data) { static void menu_action_gcode(const char* pgcode) { enquecommand_P(pgcode); } -static void menu_action_setlang(unsigned char lang) { - lcd_set_lang(lang); + +static void menu_action_setlang(unsigned char lang) +{ + if (lang <= LANG_ID_SEC) + { + lcd_set_lang(lang); + return; + } + uint16_t code = lang_get_code(lang); + if (code == lang_get_code(1)) lcd_set_lang(1); + lcd_set_lang(lang); } + static void menu_action_function(menuFunc_t data) { (*data)(); }