diff --git a/Firmware/config.h b/Firmware/config.h index 85687a4bb..ca1d32a11 100644 --- a/Firmware/config.h +++ b/Firmware/config.h @@ -27,9 +27,9 @@ #define W25X20CL_SPSR SPI_SPSR(W25X20CL_SPI_RATE) //LANG - Multi-language support -//#define LANG_MODE 0 // primary language only -#define LANG_MODE 1 // sec. language support -#define LANG_SIZE_RESERVED 0x2400 // reserved space for secondary language (~10kb) +//#define LANG_MODE 0 // primary language only +#define LANG_MODE 1 // sec. language support +#define LANG_SIZE_RESERVED 0x2400 // reserved space for secondary language (~12kb) //#define LANG_SIZE_RESERVED 0x1ef8 // reserved space for secondary language (~10kb) diff --git a/Firmware/language.c b/Firmware/language.c index b7fa5aa54..ca3b9e887 100644 --- a/Firmware/language.c +++ b/Firmware/language.c @@ -153,7 +153,6 @@ uint8_t lang_get_header(uint8_t lang, lang_table_header_t* header, uint32_t* off if (--lang == 0) return 1; addr += header->size; //calc address of next table } - return 0; #else //W25X20CL if (lang == LANG_ID_SEC) { @@ -163,6 +162,7 @@ uint8_t lang_get_header(uint8_t lang, lang_table_header_t* header, uint32_t* off return (header->magic == LANG_MAGIC)?1:0; //return 1 if magic valid } #endif //W25X20CL + return 0; } uint16_t lang_get_code(uint8_t lang) @@ -187,11 +187,13 @@ uint16_t lang_get_code(uint8_t lang) addr += header.size; //calc address of next table } #else //W25X20CL - if (lang == LANG_ID_SEC) + uint16_t table = _SEC_LANG_TABLE; + uint8_t count = 1; //count = 1 (primary) + while (pgm_read_dword((uint32_t*)table) == LANG_MAGIC) //magic valid { - uint16_t ui = _SEC_LANG_TABLE; //table pointer - if (pgm_read_dword(((uint32_t*)(ui + 0))) == LANG_MAGIC) //magic num is OK - return pgm_read_word(((uint16_t*)(ui + 10))); //read language code + if (count == lang) return pgm_read_word(((uint16_t*)(table + 10))); //read language code + table += pgm_read_word((uint16_t*)(table + 4)); + count++; } #endif //W25X20CL return LANG_CODE_XX; diff --git a/Firmware/language.h b/Firmware/language.h index 6bb1f7703..569d9f9e3 100644 --- a/Firmware/language.h +++ b/Firmware/language.h @@ -2,8 +2,6 @@ #ifndef LANGUAGE_H #define LANGUAGE_H -//#define W25X20CL - #include "config.h" #include