diff --git a/radio/src/CMakeLists.txt b/radio/src/CMakeLists.txt index dd8d56d7d..e7bcf42c9 100644 --- a/radio/src/CMakeLists.txt +++ b/radio/src/CMakeLists.txt @@ -556,8 +556,8 @@ endif() # Bootloader if(BOOTLOADER) - add_subdirectory(targets/common/arm/stm32/bootloader) - include_directories(${CMAKE_CURRENT_BINARY_DIR}/targets/common/arm/stm32/bootloader) + add_subdirectory(bootloader) + include_directories(${CMAKE_CURRENT_BINARY_DIR}/bootloader) set(RADIO_DEPENDENCIES ${RADIO_DEPENDENCIES} bootloader) endif() diff --git a/radio/src/targets/common/arm/stm32/bootloader/CMakeLists.txt b/radio/src/bootloader/CMakeLists.txt similarity index 100% rename from radio/src/targets/common/arm/stm32/bootloader/CMakeLists.txt rename to radio/src/bootloader/CMakeLists.txt diff --git a/radio/src/targets/common/arm/stm32/bootloader/bin_fw_files.cpp b/radio/src/bootloader/bin_fw_files.cpp similarity index 96% rename from radio/src/targets/common/arm/stm32/bootloader/bin_fw_files.cpp rename to radio/src/bootloader/bin_fw_files.cpp index 1e01ca583..7580bcab7 100644 --- a/radio/src/targets/common/arm/stm32/bootloader/bin_fw_files.cpp +++ b/radio/src/bootloader/bin_fw_files.cpp @@ -171,18 +171,13 @@ unsigned int fetchFirmwareFiles(unsigned int index) return 0; // skip 'index' .bin files - for (unsigned int i = 0; i <= index; i++) { - - if (findNextBinFile(&file_info) != FR_OK /*|| file_info.fname[0] == 0*/) + for (unsigned int i = 0; i < index; i++) { + if (findNextBinFile(&file_info) != FR_OK || file_info.fname[0] == 0) return 0; } - strAppend(fwFiles[0].name, file_info.fname); - fwFiles[0].size = file_info.fsize; - - unsigned int i = 1; + unsigned int i = 0; for (; i < MAX_NAMES_ON_SCREEN+1; i++) { - if (findNextBinFile(&file_info) != FR_OK || file_info.fname[0] == 0) return i; diff --git a/radio/src/targets/common/arm/stm32/bootloader/boot.cpp b/radio/src/bootloader/boot.cpp similarity index 100% rename from radio/src/targets/common/arm/stm32/bootloader/boot.cpp rename to radio/src/bootloader/boot.cpp diff --git a/radio/src/targets/common/arm/stm32/bootloader/boot.h b/radio/src/bootloader/boot.h similarity index 100% rename from radio/src/targets/common/arm/stm32/bootloader/boot.h rename to radio/src/bootloader/boot.h diff --git a/radio/src/bootloader/boot_dfu.cpp b/radio/src/bootloader/boot_dfu.cpp new file mode 100644 index 000000000..0a4b53c0c --- /dev/null +++ b/radio/src/bootloader/boot_dfu.cpp @@ -0,0 +1,52 @@ +/* + * Copyright (C) EdgeTX + * + * Based on code named + * opentx - https://github.com/opentx/opentx + * 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 "stm32_hal.h" + +#include "boot.h" +#include "hal/usb_driver.h" +#include "os/time.h" + +#include "lcd.h" + +#define FRAME_INTERVAL_MS 20 + +void bootloaderDFU() +{ + usbPlugged(); + usbStart(); + + bootloaderDrawDFUScreen(); + + uint32_t next_frame = time_get_ms(); + for (;;) { + if (time_get_ms() - next_frame >= FRAME_INTERVAL_MS) { + next_frame += FRAME_INTERVAL_MS; + + if (!usbPlugged()) break; + bootloaderDrawDFUScreen(); + lcdRefresh(); + } + } + + blExit(); + NVIC_SystemReset(); +} diff --git a/radio/src/targets/common/arm/stm32/bootloader/boot_menu.cpp b/radio/src/bootloader/boot_menu.cpp similarity index 87% rename from radio/src/targets/common/arm/stm32/bootloader/boot_menu.cpp rename to radio/src/bootloader/boot_menu.cpp index c0c62ddf3..1d067df23 100644 --- a/radio/src/targets/common/arm/stm32/bootloader/boot_menu.cpp +++ b/radio/src/bootloader/boot_menu.cpp @@ -1,3 +1,24 @@ +/* + * Copyright (C) EdgeTX + * + * Based on code named + * opentx - https://github.com/opentx/opentx + * 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 "boot.h" #include "firmware_files.h" @@ -127,6 +148,7 @@ void bootloaderMenu() #if defined(SPI_FLASH) case 1: state = ST_CLEAR_FLASH_CHECK; + vpos = 0; break; #endif default: @@ -145,15 +167,16 @@ void bootloaderMenu() } } else if (state == ST_DIR_CHECK) { + nameCount = 0; fr = openFirmwareDir(); + if (fr == FR_OK) + nameCount = fetchFirmwareFiles(index); - if (fr == FR_OK) { + if (nameCount > 0) { index = vpos = 0; state = ST_FILE_LIST; - nameCount = fetchFirmwareFiles(index); continue; - } - else { + } else { bootloaderDrawScreen(state, fr); if (event == EVT_KEY_BREAK(KEY_EXIT) || event == EVT_KEY_BREAK(KEY_ENTER)) { @@ -229,19 +252,10 @@ void bootloaderMenu() #if defined(SPI_FLASH) } else if (state == ST_CLEAR_FLASH_CHECK) { bootloaderDrawScreen(state, vpos); - if (IS_NEXT_EVENT(event)) { - if (vpos < SEL_CLEAR_FLASH_STORAGE_MENU_LEN - 1) { vpos++; } - continue; - } - if (IS_PREVIOUS_EVENT(event)) { - if (vpos > 0) { vpos--; } - continue; - } - if (event == EVT_KEY_LONG(KEY_ENTER) && vpos == 0) + if (event == EVT_KEY_LONG(KEY_ENTER)) { state = ST_CLEAR_FLASH; - } else if (event == EVT_KEY_BREAK(KEY_EXIT) || - (event == EVT_KEY_BREAK(KEY_ENTER) && vpos == 1) ) { + } else if (event == EVT_KEY_BREAK(KEY_EXIT)) { vpos = 0; state = ST_START; continue; diff --git a/radio/src/targets/common/arm/stm32/bootloader/boot_uf2.cpp b/radio/src/bootloader/boot_uf2.cpp similarity index 65% rename from radio/src/targets/common/arm/stm32/bootloader/boot_uf2.cpp rename to radio/src/bootloader/boot_uf2.cpp index 0d8ba7451..0d56b675f 100644 --- a/radio/src/targets/common/arm/stm32/bootloader/boot_uf2.cpp +++ b/radio/src/bootloader/boot_uf2.cpp @@ -1,3 +1,24 @@ +/* + * Copyright (C) EdgeTX + * + * Based on code named + * opentx - https://github.com/opentx/opentx + * 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 "boot.h" #include "hal/usb_driver.h" @@ -30,6 +51,24 @@ void bootloaderUF2() if (time_get_ms() - next_frame >= FRAME_INTERVAL_MS) { next_frame += FRAME_INTERVAL_MS; + keysPollingCycle(); + event_t event = getEvent(); + + if (state != ST_FLASHING && event == EVT_KEY_LONG(KEY_EXIT)) { + // Start the main application + state = ST_REBOOT; + } + + if (state == ST_REBOOT) { + storageDeInit(); +#if !defined(SIMU) + blExit(); + NVIC_SystemReset(); +#else + exit(1); +#endif + } + if (state != ST_USB && state != ST_FLASHING && state != ST_FLASH_DONE) { if (usbPlugged()) { state = ST_USB; @@ -77,15 +116,5 @@ void bootloaderUF2() lcdRefresh(); } - - if (state == ST_REBOOT) { - storageDeInit(); -#if !defined(SIMU) - blExit(); - NVIC_SystemReset(); -#else - exit(1); -#endif - } } } diff --git a/radio/src/targets/common/arm/stm32/bootloader/firmware_files.h b/radio/src/bootloader/firmware_files.h similarity index 88% rename from radio/src/targets/common/arm/stm32/bootloader/firmware_files.h rename to radio/src/bootloader/firmware_files.h index 0b212e90c..4475b13d3 100644 --- a/radio/src/targets/common/arm/stm32/bootloader/firmware_files.h +++ b/radio/src/bootloader/firmware_files.h @@ -23,22 +23,20 @@ #include #include "sdcard.h" -#if defined(COLORLCD) -#include "bitmaps.h" -#endif #include "boards/FirmwareVersionTag.h" #define getFirmwarePath() (FIRMWARES_PATH) -#if LCD_H == 480 -#define MAX_NAMES_ON_SCREEN 13 -#else -#define MAX_NAMES_ON_SCREEN 6 +#if LCD_W < 300 // B&W + constexpr int MAX_NAMES_ON_SCREEN = 6; +#elif LCD_W < LCD_H // Portrait + constexpr int MAX_NAMES_ON_SCREEN = (LCD_H - 143) / 25; +#else // Landscape + constexpr int MAX_NAMES_ON_SCREEN = (LCD_H - 119) / 25; #endif #define MAX_FW_FILES (MAX_NAMES_ON_SCREEN+1) - // Open directory for firmware files FRESULT openFirmwareDir(); @@ -53,8 +51,6 @@ const char* getFirmwareFileNameByIndex(unsigned int index); // Bootloader is skipped in firmware files FRESULT openFirmwareFile(unsigned int index); - - // Can be called right after openBinFile() to extract the version information // from a firmware file void getFileFirmwareVersion(VersionTag* tag); diff --git a/radio/src/targets/common/arm/loadboot.cpp b/radio/src/bootloader/loadboot.cpp similarity index 100% rename from radio/src/targets/common/arm/loadboot.cpp rename to radio/src/bootloader/loadboot.cpp diff --git a/radio/src/fonts/Roboto/Roboto-Regular-BL.ttf b/radio/src/fonts/Roboto/Roboto-Regular-BL.ttf new file mode 100644 index 000000000..7d9a6c4c3 Binary files /dev/null and b/radio/src/fonts/Roboto/Roboto-Regular-BL.ttf differ diff --git a/radio/src/fonts/lvgl/lrg/lv_font_bl.c b/radio/src/fonts/lvgl/lrg/lv_font_bl.c index a4764d3d6..b44650540 100644 --- a/radio/src/fonts/lvgl/lrg/lv_font_bl.c +++ b/radio/src/fonts/lvgl/lrg/lv_font_bl.c @@ -1,7 +1,7 @@ /******************************************************************************* * Size: 24 px * Bpp: 1 - * Opts: --no-prefilter --bpp 1 --size 24 --no-compress --font ../Roboto/Roboto-Regular.ttf -r 0x20-0x7F --font ../../thirdparty/lvgl/scripts/built_in_font/FontAwesome5-Solid+Brands+Regular.woff -r 61671,63650,63426,61453,61787,61452,61931,62087 --format lvgl -o lrg/lv_font_bl.c --force-fast-kern-format --no-compress + * Opts: --no-prefilter --bpp 1 --size 24 --no-compress --font ../Roboto/Roboto-Regular-BL.ttf -r 0x20-0x7F --font ../../thirdparty/lvgl/scripts/built_in_font/FontAwesome5-Solid+Brands+Regular.woff -r 61671,63650,63426,61453,61787,61452,61931,62087 --format lvgl -o lrg/lv_font_bl.c --force-fast-kern-format --no-compress ******************************************************************************/ #ifdef LV_LVGL_H_INCLUDE_SIMPLE @@ -26,51 +26,50 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { 0x0, /* U+0021 "!" */ - 0xff, 0xff, 0xff, 0x3, 0xc0, + 0xff, 0xff, 0xfc, 0x3, 0xc0, /* U+0022 "\"" */ - 0xde, 0xf7, 0xbd, 0xec, + 0xcf, 0x3c, 0xf3, 0xce, 0x20, /* U+0023 "#" */ 0x6, 0x20, 0x31, 0x1, 0x18, 0x8, 0xc0, 0xc6, - 0x3f, 0xfd, 0xff, 0xe1, 0x18, 0x8, 0xc0, 0xc6, + 0x3f, 0xfd, 0xff, 0xe1, 0x98, 0x8, 0xc0, 0xc6, 0x3f, 0xfd, 0xff, 0xe1, 0x18, 0x8, 0xc0, 0xc6, 0x6, 0x30, 0x31, 0x0, /* U+0024 "$" */ 0x6, 0x0, 0xc0, 0x3c, 0x1f, 0xe3, 0xc, 0xc0, - 0xd8, 0x1b, 0x3, 0x70, 0x7, 0x0, 0x7c, 0x7, + 0xd8, 0x1b, 0x0, 0x70, 0x7, 0x0, 0x7c, 0x7, 0xc0, 0x1c, 0x1, 0xc0, 0x1e, 0x3, 0xc0, 0x6c, - 0x1c, 0xff, 0x7, 0x80, 0x60, 0xc, 0x0, + 0x18, 0xff, 0x7, 0x80, 0x60, 0xc, 0x0, /* U+0025 "%" */ 0x38, 0x0, 0xf8, 0x3, 0x18, 0x6, 0x31, 0x8c, - 0x62, 0x18, 0xc8, 0x1f, 0x30, 0x1c, 0xc0, 0x1, - 0x0, 0x6, 0x70, 0x19, 0xf0, 0x26, 0x30, 0xcc, - 0x63, 0x18, 0xc4, 0x31, 0x80, 0x3e, 0x0, 0x38, + 0x62, 0x18, 0xc8, 0x1f, 0x30, 0x1c, 0x40, 0x1, + 0x0, 0x6, 0x70, 0x19, 0xf0, 0x36, 0x30, 0xcc, + 0x63, 0x18, 0xc6, 0x31, 0x80, 0x3e, 0x0, 0x38, /* U+0026 "&" */ - 0x1f, 0x0, 0xfe, 0x7, 0x1c, 0x18, 0x30, 0x60, - 0xc1, 0xc6, 0x3, 0x70, 0x7, 0x80, 0x3e, 0x1, - 0xdc, 0x6e, 0x39, 0xb0, 0x76, 0xc0, 0xf3, 0x1, - 0xc6, 0xf, 0x1f, 0xfe, 0x1f, 0x1c, + 0xf, 0x0, 0xfc, 0xe, 0x70, 0x61, 0x83, 0xc, + 0x18, 0xc0, 0x7c, 0x3, 0xc0, 0x3e, 0x3, 0xb8, + 0xf8, 0xe7, 0x83, 0x3c, 0xf, 0x60, 0x39, 0x83, + 0xcf, 0xfe, 0x1f, 0x18, /* U+0027 "'" */ - 0xff, 0xc0, + 0xff, 0xa0, /* U+0028 "(" */ - 0xc, 0x61, 0x8c, 0x21, 0x86, 0x10, 0xc3, 0xc, + 0xc, 0x71, 0x8c, 0x21, 0x86, 0x30, 0xc3, 0xc, 0x30, 0xc3, 0xc, 0x30, 0xc1, 0x86, 0x18, 0x30, - 0x41, 0x83, 0x4, + 0x61, 0x83, /* U+0029 ")" */ 0xc1, 0x86, 0xc, 0x30, 0x61, 0x86, 0xc, 0x30, 0xc3, 0xc, 0x30, 0xc3, 0xc, 0x61, 0x86, 0x30, - 0x86, 0x30, 0x80, + 0x86, 0x30, /* U+002A "*" */ - 0xc, 0x3, 0x0, 0xc3, 0xb3, 0xff, 0xc7, 0x81, - 0xe0, 0xdc, 0x73, 0x8, 0x40, + 0x18, 0x18, 0xdb, 0xff, 0x3c, 0x3c, 0x6e, 0x66, /* U+002B "+" */ 0x6, 0x0, 0x60, 0x6, 0x0, 0x60, 0x6, 0xf, @@ -78,78 +77,77 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { 0x0, 0x60, /* U+002C "," */ - 0x6d, 0xbd, 0x80, + 0x6d, 0xac, /* U+002D "-" */ - 0xff, 0xf0, + 0xff, 0xfc, /* U+002E "." */ 0xf0, /* U+002F "/" */ - 0x1, 0x80, 0xc0, 0xc0, 0x60, 0x20, 0x30, 0x18, - 0x18, 0xc, 0x6, 0x6, 0x3, 0x1, 0x1, 0x80, - 0xc0, 0xc0, 0x60, 0x20, 0x30, 0x0, + 0x1, 0x80, 0xc0, 0xc0, 0x60, 0x30, 0x30, 0x18, + 0x18, 0xc, 0x6, 0x6, 0x3, 0x3, 0x1, 0x80, + 0xc0, 0xc0, 0x60, 0x30, 0x30, 0x0, /* U+0030 "0" */ 0x1f, 0x7, 0xf1, 0xc7, 0x70, 0x7c, 0x7, 0x80, 0xf0, 0x1e, 0x3, 0xc0, 0x78, 0xf, 0x1, 0xe0, - 0x3c, 0x7, 0xc1, 0x9c, 0x71, 0xfc, 0x1f, 0x0, + 0x3c, 0x7, 0xc1, 0xdc, 0x71, 0xfc, 0x1f, 0x0, /* U+0031 "1" */ - 0x6, 0x3f, 0xff, 0x30, 0x60, 0xc1, 0x83, 0x6, - 0xc, 0x18, 0x30, 0x60, 0xc1, 0x83, 0x6, + 0xff, 0xf0, 0xc3, 0xc, 0x30, 0xc3, 0xc, 0x30, + 0xc3, 0xc, 0x30, 0xc3, 0xc, /* U+0032 "2" */ - 0x1f, 0x7, 0xf9, 0xc3, 0xe0, 0x3c, 0x6, 0x0, - 0xc0, 0x10, 0x6, 0x1, 0x80, 0x60, 0x18, 0x6, - 0x1, 0x80, 0x60, 0x18, 0x7, 0xff, 0xff, 0xe0, + 0x1f, 0xf, 0xf1, 0x87, 0x60, 0x6c, 0xc, 0x1, + 0x80, 0x70, 0xc, 0x3, 0x0, 0xc0, 0x38, 0xe, + 0x3, 0x80, 0x60, 0x18, 0x7, 0xff, 0xff, 0xe0, /* U+0033 "3" */ - 0x1f, 0xf, 0xf3, 0x87, 0x60, 0x60, 0xc, 0x1, - 0x80, 0x60, 0xf8, 0x1f, 0x80, 0x38, 0x1, 0x80, + 0x1f, 0xf, 0xf3, 0x87, 0x60, 0x6c, 0xc, 0x1, + 0x80, 0x60, 0xfc, 0x1f, 0x80, 0x18, 0x1, 0x80, 0x3c, 0x7, 0x80, 0xd8, 0x33, 0xfe, 0x1f, 0x0, /* U+0034 "4" */ - 0x0, 0xc0, 0x1c, 0x3, 0xc0, 0x7c, 0x6, 0xc0, - 0xcc, 0x1c, 0xc1, 0x8c, 0x30, 0xc7, 0xc, 0x60, - 0xcf, 0xff, 0xff, 0xf0, 0xc, 0x0, 0xc0, 0xc, - 0x0, 0xc0, + 0x1, 0x80, 0x38, 0x7, 0x80, 0x78, 0xd, 0x80, + 0xd8, 0x19, 0x83, 0x18, 0x31, 0x86, 0x18, 0x61, + 0x8f, 0xff, 0xff, 0xf0, 0x18, 0x1, 0x80, 0x18, + 0x1, 0x80, /* U+0035 "5" */ - 0x3f, 0xe7, 0xfc, 0xc0, 0x18, 0x7, 0x0, 0xc0, - 0x1b, 0xc3, 0xfe, 0x71, 0xc0, 0x1c, 0x1, 0x80, - 0x3e, 0x6, 0xc0, 0xdc, 0x31, 0xfe, 0x1f, 0x0, + 0x7f, 0x9f, 0xe6, 0x1, 0x80, 0x60, 0x18, 0xf, + 0xe3, 0xfe, 0xe1, 0x90, 0x30, 0xc, 0x3, 0xc0, + 0xf0, 0x3e, 0x19, 0xfe, 0x3e, 0x0, /* U+0036 "6" */ - 0x7, 0x83, 0xf0, 0xe0, 0x38, 0x6, 0x1, 0x9e, - 0x3f, 0xe7, 0x8e, 0xe0, 0xf8, 0xf, 0x1, 0xe0, - 0x3c, 0x6, 0xc1, 0xdc, 0x71, 0xfc, 0x1f, 0x0, + 0xf, 0x87, 0xf9, 0xc0, 0x30, 0xc, 0x1, 0x80, + 0x33, 0xc7, 0xfe, 0xe1, 0xd8, 0xf, 0x1, 0xe0, + 0x3c, 0x7, 0xc1, 0xdc, 0x31, 0xfe, 0x1f, 0x0, /* U+0037 "7" */ - 0xff, 0xff, 0xff, 0x0, 0x60, 0x6, 0x0, 0xe0, - 0xc, 0x1, 0xc0, 0x18, 0x3, 0x80, 0x30, 0x7, - 0x0, 0x60, 0xe, 0x0, 0xc0, 0x1c, 0x1, 0x80, - 0x18, 0x0, + 0xff, 0xff, 0xfc, 0x1, 0x80, 0x60, 0x18, 0x3, + 0x0, 0xc0, 0x18, 0x6, 0x0, 0xc0, 0x10, 0x6, + 0x0, 0xc0, 0x18, 0x3, 0x0, 0x60, 0xc, 0x0, /* U+0038 "8" */ - 0x3e, 0xf, 0xf3, 0x87, 0x60, 0x6c, 0xd, 0x81, - 0x98, 0x61, 0xf8, 0x3f, 0x8c, 0x3b, 0x1, 0xe0, + 0x1f, 0x7, 0xf1, 0xc7, 0x30, 0x66, 0xc, 0xc1, + 0x8c, 0x60, 0xf8, 0x3f, 0x8e, 0x1b, 0x1, 0xe0, 0x3c, 0x7, 0x80, 0xd8, 0x33, 0xfe, 0x1f, 0x0, /* U+0039 "9" */ - 0x1f, 0xf, 0xf1, 0xc7, 0x70, 0x6c, 0x7, 0x80, - 0xf0, 0x1f, 0x3, 0x71, 0xef, 0xfc, 0x79, 0x80, - 0x30, 0xc, 0x3, 0x80, 0xe1, 0xf8, 0x3c, 0x0, + 0x1f, 0x7, 0xf1, 0xc7, 0x70, 0x7c, 0x7, 0x80, + 0xf0, 0x1e, 0x3, 0x60, 0xef, 0xfc, 0x7d, 0x80, + 0x30, 0x6, 0x1, 0xd0, 0x73, 0xfc, 0x3e, 0x0, /* U+003A ":" */ 0xf0, 0x0, 0x3, 0xc0, /* U+003B ";" */ - 0x6c, 0x0, 0x0, 0xd, 0xb6, 0xf0, + 0x6c, 0x0, 0x0, 0x1, 0xb6, 0xb0, /* U+003C "<" */ - 0x0, 0x40, 0xf0, 0xf8, 0xf8, 0xf0, 0x30, 0x7, + 0x0, 0x40, 0xf0, 0xf8, 0xf8, 0xf8, 0x30, 0xf, 0x80, 0x78, 0x7, 0xc0, 0x70, 0x4, /* U+003D "=" */ @@ -157,45 +155,46 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { 0xfc, /* U+003E ">" */ - 0x80, 0x38, 0x7, 0xc0, 0x7c, 0x3, 0xc0, 0x70, - 0x78, 0xf8, 0xf8, 0x38, 0x0, 0x0, + 0x0, 0x38, 0xf, 0x80, 0xf8, 0x7, 0x80, 0x30, + 0x7c, 0x7c, 0xfc, 0x38, 0x8, 0x0, /* U+003F "?" */ - 0x3e, 0x3f, 0xb8, 0xf8, 0x30, 0x18, 0xc, 0xe, - 0x6, 0x6, 0x6, 0x6, 0x3, 0x1, 0x80, 0x0, - 0x0, 0x30, 0x18, 0x0, + 0x3f, 0x1f, 0xee, 0x1f, 0x3, 0x0, 0xc0, 0x30, + 0x1c, 0x6, 0x3, 0x1, 0x80, 0xc0, 0x30, 0xc, + 0x0, 0x0, 0x0, 0x30, 0xc, 0x0, /* U+0040 "@" */ - 0x1, 0xf8, 0x0, 0xff, 0xc0, 0x78, 0x1c, 0x1c, + 0x1, 0xf8, 0x1, 0xff, 0xc0, 0x78, 0x1c, 0x1c, 0x1, 0xc3, 0x0, 0x1c, 0xc1, 0xe1, 0x98, 0x7e, 0x37, 0x1c, 0xc3, 0xc3, 0x18, 0x78, 0xc3, 0xf, 0x18, 0x61, 0xe3, 0xc, 0x3c, 0x61, 0x87, 0x8c, - 0x31, 0xf1, 0x8e, 0x33, 0x3f, 0xfe, 0x63, 0xcf, + 0x31, 0xf1, 0x8e, 0x73, 0x3f, 0xfc, 0x63, 0xcf, 0xe, 0x0, 0x0, 0xe0, 0x0, 0xe, 0x4, 0x0, - 0xff, 0x80, 0x7, 0xe0, 0x0, + 0xff, 0x80, 0x7, 0xc0, 0x0, /* U+0041 "A" */ - 0x1, 0x80, 0x7, 0x0, 0xf, 0x0, 0x3e, 0x0, - 0x6e, 0x0, 0xcc, 0x3, 0x98, 0x6, 0x38, 0xc, - 0x30, 0x30, 0x60, 0x60, 0x61, 0xff, 0xc3, 0xff, - 0xc6, 0x1, 0x9c, 0x3, 0x30, 0x7, 0x60, 0x6, + 0x3, 0x80, 0x7, 0x0, 0xf, 0x0, 0x3e, 0x0, + 0x6c, 0x0, 0xdc, 0x3, 0x98, 0x6, 0x30, 0xc, + 0x70, 0x38, 0x60, 0x60, 0xc1, 0xff, 0xc3, 0xff, + 0x86, 0x3, 0x1c, 0x7, 0x30, 0x6, 0x60, 0xc, /* U+0042 "B" */ - 0xff, 0x9f, 0xfb, 0x3, 0xe0, 0x3c, 0x7, 0x80, - 0xf0, 0x37, 0xfc, 0xff, 0xd8, 0x1b, 0x1, 0xe0, - 0x3c, 0x7, 0x80, 0xf0, 0x37, 0xfe, 0xff, 0x0, + 0xff, 0xf, 0xfc, 0xc0, 0xec, 0x6, 0xc0, 0x6c, + 0x6, 0xc0, 0xcf, 0xf8, 0xff, 0xec, 0x6, 0xc0, + 0x3c, 0x3, 0xc0, 0x3c, 0x3, 0xc0, 0x6f, 0xfe, + 0xff, 0x80, /* U+0043 "C" */ - 0xf, 0x81, 0xff, 0x1c, 0x1c, 0xc0, 0x6e, 0x3, + 0xf, 0xc1, 0xff, 0x1c, 0x1c, 0xc0, 0x7e, 0x1, 0xe0, 0xf, 0x0, 0x18, 0x0, 0xc0, 0x6, 0x0, - 0x30, 0x1, 0x80, 0x3e, 0x3, 0xb0, 0x19, 0xc1, + 0x30, 0x1, 0x80, 0x3e, 0x1, 0xb0, 0x1d, 0xc1, 0xc7, 0xfc, 0xf, 0x80, /* U+0044 "D" */ - 0xff, 0xf, 0xf8, 0xc1, 0xcc, 0x6, 0xc0, 0x6c, - 0x3, 0xc0, 0x3c, 0x3, 0xc0, 0x3c, 0x3, 0xc0, - 0x3c, 0x3, 0xc0, 0x6c, 0xe, 0xc1, 0xcf, 0xf8, - 0xfe, 0x0, + 0xff, 0x87, 0xfe, 0x30, 0x39, 0x80, 0xec, 0x3, + 0xe0, 0xf, 0x0, 0x78, 0x3, 0xc0, 0x1e, 0x0, + 0xf0, 0x7, 0x80, 0x3c, 0x3, 0xe0, 0x3b, 0x3, + 0x9f, 0xf8, 0xff, 0x80, /* U+0045 "E" */ 0xff, 0xff, 0xff, 0x0, 0x60, 0xc, 0x1, 0x80, @@ -208,14 +207,14 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { 0xc, 0x1, 0x80, 0x30, 0x6, 0x0, 0xc0, 0x0, /* U+0047 "G" */ - 0xf, 0xc1, 0xff, 0x1c, 0x1c, 0xc0, 0x7e, 0x1, + 0xf, 0xc1, 0xff, 0x1e, 0x1c, 0xc0, 0x7e, 0x1, 0xe0, 0x3, 0x0, 0x18, 0x0, 0xc1, 0xfe, 0xf, - 0xf0, 0x7, 0x80, 0x36, 0x1, 0xb0, 0xc, 0xe0, - 0xe3, 0xfe, 0xf, 0xc0, + 0xf0, 0x7, 0x80, 0x3e, 0x1, 0xb0, 0xd, 0xe0, + 0xe7, 0xfe, 0xf, 0xc0, /* U+0048 "H" */ 0xc0, 0x1e, 0x0, 0xf0, 0x7, 0x80, 0x3c, 0x1, - 0xe0, 0xf, 0x0, 0x7f, 0xff, 0xff, 0xfe, 0x0, + 0xe0, 0xf, 0x0, 0x78, 0x3, 0xff, 0xff, 0xff, 0xf0, 0x7, 0x80, 0x3c, 0x1, 0xe0, 0xf, 0x0, 0x78, 0x3, 0xc0, 0x18, @@ -223,15 +222,15 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { 0xff, 0xff, 0xff, 0xff, 0xc0, /* U+004A "J" */ - 0x0, 0x60, 0xc, 0x1, 0x80, 0x30, 0x6, 0x0, - 0xc0, 0x18, 0x3, 0x0, 0x60, 0xc, 0x1, 0x80, - 0x3c, 0x7, 0x80, 0xd8, 0x33, 0xfe, 0x1f, 0x0, + 0x0, 0xc0, 0x30, 0xc, 0x3, 0x0, 0xc0, 0x30, + 0xc, 0x3, 0x0, 0xc0, 0x30, 0xc, 0x3, 0xc0, + 0xf0, 0x3e, 0x19, 0xfe, 0x1e, 0x0, /* U+004B "K" */ 0xc0, 0x76, 0x7, 0x30, 0x71, 0x87, 0xc, 0x30, - 0x63, 0x3, 0x30, 0x1b, 0x80, 0xfc, 0x7, 0xf0, - 0x39, 0xc1, 0x87, 0xc, 0x18, 0x60, 0xe3, 0x3, - 0x98, 0xe, 0xc0, 0x30, + 0x63, 0x3, 0x30, 0x1f, 0x0, 0xfc, 0x6, 0x70, + 0x31, 0xc1, 0x8e, 0xc, 0x38, 0x60, 0xe3, 0x3, + 0x98, 0xe, 0xc0, 0x70, /* U+004C "L" */ 0xc0, 0x18, 0x3, 0x0, 0x60, 0xc, 0x1, 0x80, @@ -240,47 +239,47 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { /* U+004D "M" */ 0xe0, 0x3, 0xf0, 0x1, 0xfc, 0x1, 0xfe, 0x0, - 0xff, 0x80, 0xde, 0xc0, 0x6f, 0x60, 0x37, 0x98, - 0x33, 0xcc, 0x19, 0xe3, 0x18, 0xf1, 0x8c, 0x78, - 0xee, 0x3c, 0x36, 0x1e, 0x1b, 0xf, 0x7, 0x7, + 0xff, 0x80, 0x7e, 0xc0, 0x6f, 0x60, 0x37, 0x98, + 0x3b, 0xcc, 0x19, 0xe7, 0x1c, 0xf1, 0x8c, 0x78, + 0xc6, 0x3c, 0x36, 0x1e, 0x1b, 0xf, 0x7, 0x87, 0x83, 0x83, 0xc1, 0xc1, 0x80, /* U+004E "N" */ 0xc0, 0x1f, 0x0, 0xfc, 0x7, 0xe0, 0x3f, 0x81, - 0xee, 0xf, 0x30, 0x79, 0xc3, 0xc7, 0x1e, 0x1c, + 0xee, 0xf, 0x38, 0x79, 0xc3, 0xc7, 0x1e, 0x1c, 0xf0, 0x67, 0x83, 0xbc, 0xf, 0xe0, 0x3f, 0x1, 0xf8, 0x7, 0xc0, 0x18, /* U+004F "O" */ - 0xf, 0xc0, 0x7f, 0x83, 0x87, 0x18, 0x6, 0x60, - 0x1b, 0x0, 0x3c, 0x0, 0xf0, 0x3, 0xc0, 0xf, - 0x0, 0x3c, 0x0, 0xf0, 0x3, 0x60, 0x19, 0x80, - 0x63, 0x87, 0x7, 0xf8, 0xf, 0xc0, + 0xf, 0xc0, 0xff, 0x87, 0x87, 0x18, 0x6, 0xe0, + 0x1f, 0x0, 0x3c, 0x0, 0xf0, 0x3, 0xc0, 0xf, + 0x0, 0x3c, 0x0, 0xf0, 0x3, 0xe0, 0x1d, 0x80, + 0x67, 0x87, 0xf, 0xf8, 0xf, 0xc0, /* U+0050 "P" */ - 0xff, 0x8f, 0xfe, 0xc0, 0xec, 0x3, 0xc0, 0x3c, + 0xff, 0x8f, 0xfe, 0xc0, 0x6c, 0x3, 0xc0, 0x3c, 0x3, 0xc0, 0x3c, 0x6, 0xff, 0xef, 0xf8, 0xc0, 0xc, 0x0, 0xc0, 0xc, 0x0, 0xc0, 0xc, 0x0, 0xc0, 0x0, /* U+0051 "Q" */ - 0xf, 0xc0, 0x7f, 0x83, 0x87, 0x18, 0x6, 0x60, - 0x1b, 0x0, 0x3c, 0x0, 0xf0, 0x3, 0xc0, 0xf, - 0x0, 0x3c, 0x0, 0xf0, 0x3, 0x60, 0x19, 0x80, - 0x63, 0x87, 0x7, 0xfc, 0xf, 0xf0, 0x0, 0xe0, - 0x1, 0xc0, 0x2, + 0xf, 0xc0, 0x7f, 0xc1, 0xe1, 0xc3, 0x0, 0xce, + 0x1, 0xd8, 0x1, 0xb0, 0x3, 0x60, 0x6, 0xc0, + 0xd, 0x80, 0x1b, 0x0, 0x36, 0x0, 0x6e, 0x1, + 0xcc, 0x3, 0x1e, 0x1e, 0x1f, 0xfe, 0xf, 0xce, + 0x0, 0x8, /* U+0052 "R" */ - 0xff, 0x87, 0xff, 0x30, 0x39, 0x80, 0x6c, 0x3, - 0x60, 0x1b, 0x0, 0xd8, 0x1c, 0xff, 0xc7, 0xfc, - 0x30, 0x61, 0x83, 0x8c, 0xc, 0x60, 0x33, 0x1, - 0x98, 0x6, 0xc0, 0x30, + 0xff, 0xf, 0xfc, 0xc0, 0xcc, 0x6, 0xc0, 0x6c, + 0x6, 0xc0, 0x6c, 0xc, 0xff, 0x8f, 0xfc, 0xc0, + 0xec, 0x6, 0xc0, 0x6c, 0x6, 0xc0, 0x6c, 0x6, + 0xc0, 0x70, /* U+0053 "S" */ - 0xf, 0x83, 0xfc, 0x70, 0x66, 0x3, 0x60, 0x36, + 0xf, 0x83, 0xfc, 0x70, 0xe6, 0x3, 0x60, 0x36, 0x0, 0x30, 0x3, 0xc0, 0xf, 0x80, 0x1e, 0x0, - 0x60, 0x3, 0xc0, 0x3c, 0x3, 0x70, 0x73, 0xfe, - 0x1f, 0x80, + 0x60, 0x3, 0xc0, 0x3e, 0x3, 0x70, 0x73, 0xfe, + 0xf, 0x80, /* U+0054 "T" */ 0xff, 0xff, 0xff, 0xc0, 0xc0, 0x6, 0x0, 0x30, @@ -289,39 +288,39 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { 0x0, 0x60, 0x3, 0x0, /* U+0055 "U" */ - 0xc0, 0x3c, 0x3, 0xc0, 0x3c, 0x3, 0xc0, 0x3c, - 0x3, 0xc0, 0x3c, 0x3, 0xc0, 0x3c, 0x3, 0xc0, - 0x3c, 0x3, 0xc0, 0x3e, 0x7, 0x70, 0xe3, 0xfc, - 0x1f, 0x80, + 0xc0, 0x1e, 0x0, 0xf0, 0x7, 0x80, 0x3c, 0x1, + 0xe0, 0xf, 0x0, 0x78, 0x3, 0xc0, 0x1e, 0x0, + 0xf0, 0x7, 0x80, 0x3c, 0x1, 0xf0, 0x1d, 0xc1, + 0xc7, 0xfc, 0x1f, 0x80, /* U+0056 "V" */ - 0x60, 0xe, 0xc0, 0x19, 0xc0, 0x31, 0x80, 0xe3, - 0x1, 0x87, 0x3, 0x6, 0xe, 0xc, 0x18, 0x1c, - 0x30, 0x18, 0xc0, 0x31, 0x80, 0x33, 0x0, 0x6c, + 0xe0, 0xe, 0xc0, 0x19, 0xc0, 0x31, 0x80, 0xe3, + 0x1, 0x87, 0x7, 0x6, 0xe, 0xc, 0x18, 0x1c, + 0x70, 0x18, 0xc0, 0x31, 0x80, 0x37, 0x0, 0x6c, 0x0, 0xd8, 0x0, 0xf0, 0x1, 0xc0, 0x3, 0x80, /* U+0057 "W" */ - 0xc0, 0x60, 0x7c, 0xe, 0x6, 0xe0, 0xe0, 0x66, - 0xf, 0x6, 0x60, 0xf0, 0xe6, 0x1b, 0xc, 0x61, - 0x98, 0xc3, 0x19, 0x8c, 0x33, 0x18, 0xc3, 0x31, - 0x98, 0x33, 0xd, 0x81, 0xb0, 0xd8, 0x1e, 0xd, - 0x81, 0xe0, 0x58, 0x1e, 0x7, 0x1, 0xc0, 0x70, - 0xc, 0x7, 0x0, + 0x60, 0x70, 0x36, 0x7, 0x7, 0x60, 0x70, 0x77, + 0xf, 0x6, 0x30, 0xd8, 0x63, 0xd, 0x86, 0x31, + 0xd8, 0xe3, 0x99, 0xcc, 0x39, 0x8c, 0xc1, 0x98, + 0xcc, 0x1b, 0x8d, 0xc1, 0xb0, 0xf8, 0x1f, 0x7, + 0x80, 0xf0, 0x78, 0xe, 0x7, 0x80, 0xe0, 0x30, + 0xe, 0x3, 0x0, /* U+0058 "X" */ - 0xe0, 0x3b, 0x1, 0x9c, 0x1c, 0x71, 0xc1, 0x8c, - 0xe, 0xe0, 0x36, 0x0, 0xf0, 0x7, 0x0, 0x3c, - 0x3, 0x60, 0x3b, 0x81, 0x8e, 0x1c, 0x31, 0xc1, - 0xcc, 0x6, 0xe0, 0x38, + 0xe0, 0x39, 0xc0, 0xc7, 0x7, 0xe, 0x18, 0x18, + 0xe0, 0x77, 0x0, 0xf8, 0x1, 0xe0, 0x7, 0x0, + 0x1e, 0x0, 0xf8, 0x7, 0x70, 0x18, 0xe0, 0xe1, + 0x87, 0x7, 0x18, 0xe, 0xe0, 0x38, /* U+0059 "Y" */ 0xe0, 0x1d, 0x80, 0x67, 0x3, 0x8c, 0xc, 0x18, - 0x60, 0x61, 0x80, 0xcc, 0x3, 0x30, 0x7, 0x80, + 0x70, 0x61, 0x80, 0xcc, 0x3, 0x30, 0x7, 0x80, 0x1e, 0x0, 0x30, 0x0, 0xc0, 0x3, 0x0, 0xc, 0x0, 0x30, 0x0, 0xc0, 0x3, 0x0, /* U+005A "Z" */ - 0xff, 0xff, 0xff, 0x0, 0x60, 0xe, 0x0, 0xc0, + 0xff, 0xff, 0xff, 0x0, 0x70, 0xe, 0x0, 0xc0, 0x18, 0x3, 0x80, 0x70, 0x6, 0x0, 0xe0, 0x1c, 0x1, 0x80, 0x30, 0x7, 0x0, 0xe0, 0xf, 0xff, 0xff, 0xf0, @@ -331,13 +330,13 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { 0x63, 0x18, 0xc6, 0x31, 0x8c, 0x7f, 0xe0, /* U+005C "\\" */ - 0x60, 0x18, 0x6, 0x0, 0xc0, 0x30, 0x6, 0x1, - 0x80, 0x60, 0xc, 0x3, 0x0, 0x60, 0x18, 0x6, - 0x0, 0xc0, 0x30, 0xc, 0x1, 0x80, 0x60, 0xc, + 0x60, 0x18, 0x7, 0x0, 0xc0, 0x30, 0x6, 0x1, + 0x80, 0x70, 0xc, 0x3, 0x0, 0xe0, 0x18, 0x6, + 0x0, 0xc0, 0x30, 0xe, 0x1, 0x80, 0x60, 0xc, /* U+005D "]" */ - 0xff, 0xc6, 0x31, 0x8c, 0x63, 0x18, 0xc6, 0x31, - 0x8c, 0x63, 0x18, 0xc6, 0x31, 0xff, 0xe0, + 0xff, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, + 0x33, 0x33, 0x3f, 0xf0, /* U+005E "^" */ 0x18, 0x18, 0x3c, 0x3c, 0x3c, 0x66, 0x66, 0xc3, @@ -347,23 +346,23 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { 0xff, 0xff, 0xfc, /* U+0060 "`" */ - 0xc3, 0x1c, 0x60, + 0xe3, 0x8c, /* U+0061 "a" */ - 0x1f, 0x1f, 0xee, 0x1f, 0x3, 0x0, 0xc7, 0xf7, - 0xff, 0x83, 0xc0, 0xf0, 0x3e, 0x1d, 0xff, 0x3c, + 0x1f, 0x1f, 0xe6, 0x1d, 0x83, 0x0, 0xc7, 0xf7, + 0xff, 0x83, 0xc0, 0xf0, 0x3e, 0x3d, 0xfb, 0x3c, 0xc0, /* U+0062 "b" */ 0xc0, 0x18, 0x3, 0x0, 0x60, 0xc, 0x1, 0x9e, - 0x3f, 0xe7, 0xe, 0xc0, 0xf8, 0xf, 0x1, 0xe0, - 0x3c, 0x7, 0x80, 0xf0, 0x3f, 0xe, 0xff, 0x9b, + 0x3f, 0xe7, 0xe, 0xc0, 0xd8, 0xf, 0x1, 0xe0, + 0x3c, 0x7, 0x80, 0xf0, 0x3f, 0xe, 0xff, 0x99, 0xe0, /* U+0063 "c" */ - 0x1f, 0x7, 0xf1, 0xc7, 0x70, 0x6c, 0xd, 0x80, - 0x30, 0x6, 0x0, 0xc0, 0x1c, 0x19, 0xc7, 0x1f, - 0xc1, 0xf0, + 0x1f, 0xf, 0xe7, 0x1f, 0x83, 0xc0, 0xf0, 0xc, + 0x3, 0x0, 0xc0, 0x38, 0x37, 0x1c, 0xfe, 0x1e, + 0x0, /* U+0064 "d" */ 0x0, 0x60, 0xc, 0x1, 0x80, 0x30, 0x6, 0x3e, @@ -372,9 +371,9 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { 0xec, /* U+0065 "e" */ - 0x1f, 0x7, 0xf9, 0xc3, 0x30, 0x3c, 0x7, 0xff, - 0xff, 0xfe, 0x0, 0xc0, 0x1c, 0x1, 0xc3, 0x9f, - 0xe1, 0xf0, + 0x1e, 0xf, 0xe6, 0x1b, 0x83, 0xc0, 0xff, 0xff, + 0xff, 0x0, 0xc0, 0x38, 0x7, 0x8, 0xff, 0x1f, + 0x0, /* U+0066 "f" */ 0xf, 0x1f, 0x38, 0x30, 0x30, 0xfe, 0xfe, 0x30, @@ -384,7 +383,7 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { /* U+0067 "g" */ 0x1f, 0x67, 0xfd, 0xc3, 0xf0, 0x3c, 0x7, 0x80, 0xf0, 0x1e, 0x3, 0xc0, 0x7c, 0xd, 0xc3, 0x9f, - 0xf1, 0xf6, 0x0, 0xd0, 0x3b, 0xe, 0x7f, 0xc3, + 0xf1, 0xf6, 0x0, 0xc0, 0x1a, 0x6, 0x7f, 0xc7, 0xe0, /* U+0068 "h" */ @@ -393,16 +392,16 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { 0xf0, 0x3c, 0xf, 0x3, 0xc0, 0xf0, 0x30, /* U+0069 "i" */ - 0xf0, 0xff, 0xff, 0xff, 0xc0, + 0xf0, 0x3f, 0xff, 0xff, 0xf0, /* U+006A "j" */ - 0x18, 0xc0, 0x1, 0x8c, 0x63, 0x18, 0xc6, 0x31, - 0x8c, 0x63, 0x18, 0xc6, 0x3f, 0xf8, + 0x18, 0xc0, 0x0, 0xc, 0x63, 0x18, 0xc6, 0x31, + 0x8c, 0x63, 0x18, 0xc6, 0x31, 0xfb, 0x80, /* U+006B "k" */ 0xc0, 0x30, 0xc, 0x3, 0x0, 0xc0, 0x30, 0x6c, - 0x33, 0x18, 0xce, 0x37, 0xf, 0x83, 0xf0, 0xec, - 0x33, 0x8c, 0x73, 0xc, 0xc1, 0xb0, 0x70, + 0x3b, 0x1c, 0xce, 0x33, 0xf, 0x83, 0xf0, 0xcc, + 0x33, 0x8c, 0x73, 0xc, 0xc3, 0xb0, 0x70, /* U+006C "l" */ 0xff, 0xff, 0xff, 0xff, 0xf0, @@ -419,21 +418,20 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { 0xc0, /* U+006F "o" */ - 0x1f, 0x7, 0xf1, 0xc7, 0x70, 0x6c, 0x7, 0x80, - 0xf0, 0x1e, 0x3, 0xc0, 0x7c, 0x19, 0xc7, 0x1f, + 0x1f, 0x7, 0xf1, 0xc7, 0x70, 0x7c, 0x7, 0x80, + 0xf0, 0x1e, 0x3, 0xc0, 0x7c, 0x1d, 0xc7, 0x1f, 0xc1, 0xf0, /* U+0070 "p" */ - 0xdf, 0x1f, 0xf3, 0x87, 0x60, 0x7c, 0x7, 0x80, + 0xdf, 0x1f, 0xf3, 0x87, 0x60, 0x6c, 0x7, 0x80, 0xf0, 0x1e, 0x3, 0xc0, 0x78, 0x1f, 0x87, 0x7f, 0xcd, 0xf1, 0x80, 0x30, 0x6, 0x0, 0xc0, 0x18, 0x0, /* U+0071 "q" */ - 0x1f, 0x67, 0xfd, 0xc3, 0xf0, 0x3c, 0x7, 0x80, - 0xf0, 0x1e, 0x3, 0xc0, 0x7c, 0xd, 0xc3, 0x9f, - 0xf1, 0xf6, 0x0, 0xc0, 0x18, 0x3, 0x0, 0x60, - 0xc, + 0x1e, 0xcf, 0xf7, 0x1f, 0x83, 0xc0, 0xf0, 0x3c, + 0xf, 0x3, 0xc0, 0xf8, 0x36, 0x1d, 0xff, 0x1e, + 0xc0, 0x30, 0xc, 0x3, 0x0, 0xc0, 0x30, /* U+0072 "r" */ 0xdf, 0xfe, 0x30, 0xc3, 0xc, 0x30, 0xc3, 0xc, @@ -441,7 +439,7 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { /* U+0073 "s" */ 0x1f, 0xf, 0xe7, 0x1d, 0x83, 0x60, 0xe, 0x1, - 0xf0, 0x6, 0x0, 0xf0, 0x3e, 0x1d, 0xfe, 0x1f, + 0xf0, 0xe, 0x0, 0xf0, 0x3e, 0x1d, 0xfe, 0x1f, 0x0, /* U+0074 "t" */ @@ -454,30 +452,30 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { 0xc0, /* U+0076 "v" */ - 0x60, 0x6c, 0x1d, 0x83, 0x18, 0x63, 0xc, 0x63, - 0x6, 0x60, 0xcc, 0x1b, 0x1, 0xe0, 0x3c, 0x7, - 0x0, 0x60, + 0xc0, 0xf8, 0x1b, 0x87, 0x30, 0xc6, 0x18, 0x63, + 0xc, 0xc1, 0x98, 0x1b, 0x3, 0xc0, 0x78, 0x7, + 0x0, 0xc0, /* U+0077 "w" */ - 0x60, 0xc1, 0xb0, 0x60, 0xd8, 0x78, 0x6e, 0x3c, - 0x63, 0x1e, 0x31, 0x99, 0x98, 0xcc, 0xcc, 0x36, - 0x6c, 0x1a, 0x16, 0xf, 0xf, 0x7, 0x87, 0x81, - 0x81, 0x80, 0xc0, 0xc0, + 0xc1, 0x83, 0x60, 0xc1, 0xb8, 0xf0, 0xcc, 0x78, + 0xe6, 0x3c, 0x63, 0x33, 0x31, 0xd9, 0x98, 0x6c, + 0xd8, 0x34, 0x3c, 0x1e, 0x1e, 0xf, 0xf, 0x3, + 0x83, 0x1, 0x81, 0x80, /* U+0078 "x" */ - 0x60, 0xe6, 0x18, 0xe7, 0xc, 0xc0, 0xf0, 0x1e, - 0x1, 0x80, 0x78, 0x1f, 0x3, 0x30, 0xe7, 0x38, - 0x66, 0x6, + 0xe1, 0xd8, 0x67, 0x38, 0xcc, 0x1e, 0x7, 0x80, + 0xc0, 0x78, 0x3f, 0xc, 0xc7, 0x39, 0x87, 0xe0, + 0xc0, /* U+0079 "y" */ - 0xe0, 0x6c, 0x1d, 0x83, 0x18, 0x63, 0x1c, 0x63, - 0x6, 0x60, 0xdc, 0x1b, 0x1, 0xe0, 0x38, 0x7, - 0x0, 0x60, 0x18, 0x3, 0x0, 0xe0, 0x78, 0xe, - 0x0, + 0x60, 0x76, 0x6, 0x70, 0xe3, 0xc, 0x30, 0xc3, + 0x9c, 0x19, 0x81, 0x98, 0xf, 0x80, 0xf0, 0xf, + 0x0, 0x70, 0x6, 0x0, 0x60, 0xe, 0x0, 0xc0, + 0x78, 0x7, 0x0, /* U+007A "z" */ 0xff, 0xff, 0xf0, 0x18, 0xe, 0x7, 0x3, 0x80, - 0xc0, 0x60, 0x38, 0x1c, 0x6, 0x3, 0xff, 0xff, + 0xc0, 0x70, 0x38, 0x1c, 0x6, 0x3, 0xff, 0xff, 0xc0, /* U+007B "{" */ @@ -494,7 +492,7 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { 0xc1, 0x83, 0xc, 0x30, 0x40, /* U+007E "~" */ - 0x38, 0x1b, 0xf0, 0xf9, 0xcf, 0x87, 0xec, 0xe, + 0x38, 0x3, 0xf0, 0xf9, 0xcf, 0x87, 0xe0, 0xe, 0x0, /* U+F00C "" */ @@ -580,108 +578,108 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { {.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */, {.bitmap_index = 0, .adv_w = 95, .box_w = 1, .box_h = 1, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1, .adv_w = 99, .box_w = 2, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 6, .adv_w = 123, .box_w = 5, .box_h = 6, .ofs_x = 2, .ofs_y = 12}, - {.bitmap_index = 10, .adv_w = 236, .box_w = 13, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 38, .adv_w = 216, .box_w = 11, .box_h = 22, .ofs_x = 1, .ofs_y = -2}, - {.bitmap_index = 69, .adv_w = 281, .box_w = 15, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 101, .adv_w = 239, .box_w = 14, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 131, .adv_w = 67, .box_w = 2, .box_h = 5, .ofs_x = 1, .ofs_y = 13}, - {.bitmap_index = 133, .adv_w = 131, .box_w = 6, .box_h = 25, .ofs_x = 2, .ofs_y = -6}, - {.bitmap_index = 152, .adv_w = 134, .box_w = 6, .box_h = 25, .ofs_x = 0, .ofs_y = -6}, - {.bitmap_index = 171, .adv_w = 165, .box_w = 10, .box_h = 10, .ofs_x = 0, .ofs_y = 7}, - {.bitmap_index = 184, .adv_w = 218, .box_w = 12, .box_h = 12, .ofs_x = 1, .ofs_y = 2}, - {.bitmap_index = 202, .adv_w = 75, .box_w = 3, .box_h = 6, .ofs_x = 0, .ofs_y = -3}, - {.bitmap_index = 205, .adv_w = 106, .box_w = 6, .box_h = 2, .ofs_x = 1, .ofs_y = 6}, - {.bitmap_index = 207, .adv_w = 101, .box_w = 2, .box_h = 2, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 208, .adv_w = 158, .box_w = 9, .box_h = 19, .ofs_x = 0, .ofs_y = -2}, - {.bitmap_index = 230, .adv_w = 216, .box_w = 11, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 254, .adv_w = 216, .box_w = 7, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 269, .adv_w = 216, .box_w = 11, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 293, .adv_w = 216, .box_w = 11, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 317, .adv_w = 216, .box_w = 12, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 343, .adv_w = 216, .box_w = 11, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 367, .adv_w = 216, .box_w = 11, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 391, .adv_w = 216, .box_w = 12, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 417, .adv_w = 216, .box_w = 11, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 441, .adv_w = 216, .box_w = 11, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 465, .adv_w = 93, .box_w = 2, .box_h = 13, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 469, .adv_w = 81, .box_w = 3, .box_h = 16, .ofs_x = 0, .ofs_y = -3}, - {.bitmap_index = 475, .adv_w = 195, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 2}, - {.bitmap_index = 489, .adv_w = 211, .box_w = 10, .box_h = 7, .ofs_x = 2, .ofs_y = 5}, - {.bitmap_index = 498, .adv_w = 201, .box_w = 10, .box_h = 11, .ofs_x = 2, .ofs_y = 2}, - {.bitmap_index = 512, .adv_w = 181, .box_w = 9, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 532, .adv_w = 345, .box_w = 19, .box_h = 22, .ofs_x = 1, .ofs_y = -5}, - {.bitmap_index = 585, .adv_w = 251, .box_w = 15, .box_h = 17, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 617, .adv_w = 239, .box_w = 11, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 641, .adv_w = 250, .box_w = 13, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 669, .adv_w = 252, .box_w = 12, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 695, .adv_w = 218, .box_w = 11, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 719, .adv_w = 212, .box_w = 11, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 743, .adv_w = 262, .box_w = 13, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 771, .adv_w = 274, .box_w = 13, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 799, .adv_w = 104, .box_w = 2, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 804, .adv_w = 212, .box_w = 11, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 828, .adv_w = 241, .box_w = 13, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 856, .adv_w = 207, .box_w = 11, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 880, .adv_w = 335, .box_w = 17, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 917, .adv_w = 274, .box_w = 13, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 945, .adv_w = 264, .box_w = 14, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 975, .adv_w = 242, .box_w = 12, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 1001, .adv_w = 264, .box_w = 14, .box_h = 20, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 1036, .adv_w = 236, .box_w = 13, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 1064, .adv_w = 228, .box_w = 12, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1090, .adv_w = 229, .box_w = 13, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1118, .adv_w = 249, .box_w = 12, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 1144, .adv_w = 244, .box_w = 15, .box_h = 17, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1176, .adv_w = 341, .box_w = 20, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1219, .adv_w = 241, .box_w = 13, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1247, .adv_w = 231, .box_w = 14, .box_h = 17, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1277, .adv_w = 230, .box_w = 12, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1303, .adv_w = 102, .box_w = 5, .box_h = 23, .ofs_x = 2, .ofs_y = -4}, - {.bitmap_index = 1318, .adv_w = 158, .box_w = 10, .box_h = 19, .ofs_x = 0, .ofs_y = -2}, - {.bitmap_index = 1342, .adv_w = 102, .box_w = 5, .box_h = 23, .ofs_x = 0, .ofs_y = -4}, - {.bitmap_index = 1357, .adv_w = 161, .box_w = 8, .box_h = 9, .ofs_x = 1, .ofs_y = 9}, - {.bitmap_index = 1366, .adv_w = 173, .box_w = 11, .box_h = 2, .ofs_x = 1, .ofs_y = -2}, - {.bitmap_index = 1369, .adv_w = 119, .box_w = 5, .box_h = 4, .ofs_x = 1, .ofs_y = 15}, - {.bitmap_index = 1372, .adv_w = 209, .box_w = 10, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1389, .adv_w = 215, .box_w = 11, .box_h = 18, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 1414, .adv_w = 201, .box_w = 11, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1432, .adv_w = 217, .box_w = 11, .box_h = 18, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1457, .adv_w = 203, .box_w = 11, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1475, .adv_w = 133, .box_w = 8, .box_h = 18, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1493, .adv_w = 215, .box_w = 11, .box_h = 18, .ofs_x = 1, .ofs_y = -5}, - {.bitmap_index = 1518, .adv_w = 212, .box_w = 10, .box_h = 18, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 1541, .adv_w = 93, .box_w = 2, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 1546, .adv_w = 92, .box_w = 5, .box_h = 22, .ofs_x = -1, .ofs_y = -5}, - {.bitmap_index = 1560, .adv_w = 195, .box_w = 10, .box_h = 18, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 1583, .adv_w = 93, .box_w = 2, .box_h = 18, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 1588, .adv_w = 337, .box_w = 18, .box_h = 13, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 1618, .adv_w = 212, .box_w = 10, .box_h = 13, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 1635, .adv_w = 219, .box_w = 11, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1653, .adv_w = 215, .box_w = 11, .box_h = 18, .ofs_x = 2, .ofs_y = -5}, - {.bitmap_index = 1678, .adv_w = 218, .box_w = 11, .box_h = 18, .ofs_x = 1, .ofs_y = -5}, - {.bitmap_index = 1703, .adv_w = 130, .box_w = 6, .box_h = 13, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 1713, .adv_w = 198, .box_w = 10, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1730, .adv_w = 125, .box_w = 7, .box_h = 16, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1744, .adv_w = 212, .box_w = 10, .box_h = 13, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 1761, .adv_w = 186, .box_w = 11, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1779, .adv_w = 289, .box_w = 17, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1807, .adv_w = 190, .box_w = 11, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1825, .adv_w = 182, .box_w = 11, .box_h = 18, .ofs_x = 0, .ofs_y = -5}, - {.bitmap_index = 1850, .adv_w = 190, .box_w = 10, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1867, .adv_w = 130, .box_w = 7, .box_h = 24, .ofs_x = 0, .ofs_y = -5}, - {.bitmap_index = 1888, .adv_w = 94, .box_w = 2, .box_h = 21, .ofs_x = 2, .ofs_y = -4}, - {.bitmap_index = 1894, .adv_w = 130, .box_w = 7, .box_h = 24, .ofs_x = 1, .ofs_y = -5}, - {.bitmap_index = 1915, .adv_w = 261, .box_w = 13, .box_h = 5, .ofs_x = 2, .ofs_y = 5}, - {.bitmap_index = 1924, .adv_w = 384, .box_w = 24, .box_h = 18, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1978, .adv_w = 264, .box_w = 17, .box_h = 16, .ofs_x = 0, .ofs_y = 1}, - {.bitmap_index = 2012, .adv_w = 240, .box_w = 15, .box_h = 24, .ofs_x = 0, .ofs_y = -3}, - {.bitmap_index = 2057, .adv_w = 288, .box_w = 18, .box_h = 24, .ofs_x = 0, .ofs_y = -3}, - {.bitmap_index = 2111, .adv_w = 480, .box_w = 30, .box_h = 22, .ofs_x = 0, .ofs_y = -2}, - {.bitmap_index = 2194, .adv_w = 480, .box_w = 30, .box_h = 18, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 2262, .adv_w = 288, .box_w = 18, .box_h = 24, .ofs_x = 0, .ofs_y = -3}, - {.bitmap_index = 2316, .adv_w = 386, .box_w = 24, .box_h = 15, .ofs_x = 0, .ofs_y = 1} + {.bitmap_index = 1, .adv_w = 101, .box_w = 2, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 6, .adv_w = 137, .box_w = 6, .box_h = 6, .ofs_x = 1, .ofs_y = 11}, + {.bitmap_index = 11, .adv_w = 239, .box_w = 13, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 39, .adv_w = 224, .box_w = 11, .box_h = 22, .ofs_x = 2, .ofs_y = -2}, + {.bitmap_index = 70, .adv_w = 281, .box_w = 15, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 102, .adv_w = 239, .box_w = 13, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 130, .adv_w = 83, .box_w = 2, .box_h = 6, .ofs_x = 1, .ofs_y = 11}, + {.bitmap_index = 132, .adv_w = 127, .box_w = 6, .box_h = 24, .ofs_x = 2, .ofs_y = -5}, + {.bitmap_index = 150, .adv_w = 129, .box_w = 6, .box_h = 24, .ofs_x = 0, .ofs_y = -5}, + {.bitmap_index = 168, .adv_w = 166, .box_w = 8, .box_h = 8, .ofs_x = 1, .ofs_y = 5}, + {.bitmap_index = 176, .adv_w = 218, .box_w = 12, .box_h = 12, .ofs_x = 1, .ofs_y = 2}, + {.bitmap_index = 194, .adv_w = 76, .box_w = 3, .box_h = 5, .ofs_x = 0, .ofs_y = -3}, + {.bitmap_index = 196, .adv_w = 173, .box_w = 7, .box_h = 2, .ofs_x = 2, .ofs_y = 6}, + {.bitmap_index = 198, .adv_w = 103, .box_w = 2, .box_h = 2, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 199, .adv_w = 159, .box_w = 9, .box_h = 19, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 221, .adv_w = 216, .box_w = 11, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 245, .adv_w = 216, .box_w = 6, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 258, .adv_w = 216, .box_w = 11, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 282, .adv_w = 216, .box_w = 11, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 306, .adv_w = 216, .box_w = 12, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 332, .adv_w = 216, .box_w = 10, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 354, .adv_w = 216, .box_w = 11, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 378, .adv_w = 216, .box_w = 11, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 402, .adv_w = 216, .box_w = 11, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 426, .adv_w = 216, .box_w = 11, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 450, .adv_w = 97, .box_w = 2, .box_h = 13, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 454, .adv_w = 98, .box_w = 3, .box_h = 15, .ofs_x = 1, .ofs_y = -2}, + {.bitmap_index = 460, .adv_w = 195, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 474, .adv_w = 216, .box_w = 10, .box_h = 7, .ofs_x = 2, .ofs_y = 5}, + {.bitmap_index = 483, .adv_w = 201, .box_w = 10, .box_h = 11, .ofs_x = 2, .ofs_y = 1}, + {.bitmap_index = 497, .adv_w = 183, .box_w = 10, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 519, .adv_w = 344, .box_w = 19, .box_h = 22, .ofs_x = 1, .ofs_y = -5}, + {.bitmap_index = 572, .adv_w = 243, .box_w = 15, .box_h = 17, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 604, .adv_w = 244, .box_w = 12, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 630, .adv_w = 243, .box_w = 13, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 658, .adv_w = 260, .box_w = 13, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 686, .adv_w = 212, .box_w = 11, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 710, .adv_w = 212, .box_w = 11, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 734, .adv_w = 260, .box_w = 13, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 762, .adv_w = 270, .box_w = 13, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 790, .adv_w = 109, .box_w = 2, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 795, .adv_w = 211, .box_w = 10, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 817, .adv_w = 244, .box_w = 13, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 845, .adv_w = 211, .box_w = 11, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 869, .adv_w = 334, .box_w = 17, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 906, .adv_w = 270, .box_w = 13, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 934, .adv_w = 262, .box_w = 14, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 964, .adv_w = 244, .box_w = 12, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 990, .adv_w = 268, .box_w = 15, .box_h = 18, .ofs_x = 1, .ofs_y = -1}, + {.bitmap_index = 1024, .adv_w = 244, .box_w = 12, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 1050, .adv_w = 235, .box_w = 12, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1076, .adv_w = 230, .box_w = 13, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1104, .adv_w = 260, .box_w = 13, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 1132, .adv_w = 243, .box_w = 15, .box_h = 17, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1164, .adv_w = 331, .box_w = 20, .box_h = 17, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1207, .adv_w = 243, .box_w = 14, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1237, .adv_w = 243, .box_w = 14, .box_h = 17, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1267, .adv_w = 230, .box_w = 12, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1293, .adv_w = 104, .box_w = 5, .box_h = 23, .ofs_x = 2, .ofs_y = -4}, + {.bitmap_index = 1308, .adv_w = 159, .box_w = 10, .box_h = 19, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 1332, .adv_w = 104, .box_w = 4, .box_h = 23, .ofs_x = 1, .ofs_y = -4}, + {.bitmap_index = 1344, .adv_w = 161, .box_w = 8, .box_h = 9, .ofs_x = 1, .ofs_y = 9}, + {.bitmap_index = 1353, .adv_w = 175, .box_w = 11, .box_h = 2, .ofs_x = 1, .ofs_y = -2}, + {.bitmap_index = 1356, .adv_w = 120, .box_w = 5, .box_h = 3, .ofs_x = 1, .ofs_y = 15}, + {.bitmap_index = 1358, .adv_w = 211, .box_w = 10, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1375, .adv_w = 218, .box_w = 11, .box_h = 18, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 1400, .adv_w = 201, .box_w = 10, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1417, .adv_w = 218, .box_w = 11, .box_h = 18, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1442, .adv_w = 201, .box_w = 10, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1459, .adv_w = 126, .box_w = 8, .box_h = 18, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1477, .adv_w = 218, .box_w = 11, .box_h = 18, .ofs_x = 1, .ofs_y = -5}, + {.bitmap_index = 1502, .adv_w = 218, .box_w = 10, .box_h = 18, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 1525, .adv_w = 97, .box_w = 2, .box_h = 18, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 1530, .adv_w = 99, .box_w = 5, .box_h = 23, .ofs_x = -1, .ofs_y = -5}, + {.bitmap_index = 1545, .adv_w = 197, .box_w = 10, .box_h = 18, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 1568, .adv_w = 97, .box_w = 2, .box_h = 18, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 1573, .adv_w = 336, .box_w = 18, .box_h = 13, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 1603, .adv_w = 218, .box_w = 10, .box_h = 13, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 1620, .adv_w = 218, .box_w = 11, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1638, .adv_w = 218, .box_w = 11, .box_h = 18, .ofs_x = 2, .ofs_y = -5}, + {.bitmap_index = 1663, .adv_w = 218, .box_w = 10, .box_h = 18, .ofs_x = 1, .ofs_y = -5}, + {.bitmap_index = 1686, .adv_w = 134, .box_w = 6, .box_h = 13, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 1696, .adv_w = 201, .box_w = 10, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1713, .adv_w = 129, .box_w = 7, .box_h = 16, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1727, .adv_w = 218, .box_w = 10, .box_h = 13, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 1744, .adv_w = 193, .box_w = 11, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1762, .adv_w = 291, .box_w = 17, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1790, .adv_w = 193, .box_w = 10, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1807, .adv_w = 193, .box_w = 12, .box_h = 18, .ofs_x = 0, .ofs_y = -5}, + {.bitmap_index = 1834, .adv_w = 193, .box_w = 10, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1851, .adv_w = 131, .box_w = 7, .box_h = 24, .ofs_x = 0, .ofs_y = -5}, + {.bitmap_index = 1872, .adv_w = 95, .box_w = 2, .box_h = 21, .ofs_x = 2, .ofs_y = -4}, + {.bitmap_index = 1878, .adv_w = 131, .box_w = 7, .box_h = 24, .ofs_x = 1, .ofs_y = -5}, + {.bitmap_index = 1899, .adv_w = 261, .box_w = 13, .box_h = 5, .ofs_x = 1, .ofs_y = 5}, + {.bitmap_index = 1908, .adv_w = 384, .box_w = 24, .box_h = 18, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1962, .adv_w = 264, .box_w = 17, .box_h = 16, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 1996, .adv_w = 240, .box_w = 15, .box_h = 24, .ofs_x = 0, .ofs_y = -3}, + {.bitmap_index = 2041, .adv_w = 288, .box_w = 18, .box_h = 24, .ofs_x = 0, .ofs_y = -3}, + {.bitmap_index = 2095, .adv_w = 480, .box_w = 30, .box_h = 22, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 2178, .adv_w = 480, .box_w = 30, .box_h = 18, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2246, .adv_w = 288, .box_w = 18, .box_h = 24, .ofs_x = 0, .ofs_y = -3}, + {.bitmap_index = 2300, .adv_w = 386, .box_w = 24, .box_h = 15, .ofs_x = 0, .ofs_y = 1} }; /*--------------------- @@ -713,201 +711,175 @@ static const lv_font_fmt_txt_cmap_t cmaps[] = /*Map glyph_ids to kern left classes*/ static const uint8_t kern_left_class_mapping[] = { - 0, 1, 0, 2, 0, 0, 0, 0, - 2, 3, 0, 0, 0, 4, 0, 4, - 5, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, + 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 6, 7, 8, 9, 10, 11, - 0, 12, 12, 13, 14, 15, 12, 12, - 9, 16, 17, 18, 0, 19, 13, 20, - 21, 22, 23, 24, 25, 0, 0, 0, - 0, 0, 26, 27, 28, 0, 29, 30, - 0, 31, 0, 0, 32, 0, 31, 31, - 33, 27, 0, 34, 0, 35, 0, 36, - 37, 38, 36, 39, 40, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 4, 5, 6, 7, 8, + 0, 9, 9, 10, 11, 12, 9, 9, + 6, 13, 14, 15, 0, 16, 10, 17, + 18, 19, 20, 21, 22, 0, 0, 0, + 0, 0, 23, 24, 25, 0, 26, 27, + 0, 28, 0, 0, 29, 0, 28, 28, + 30, 24, 0, 31, 0, 0, 0, 32, + 33, 34, 32, 35, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; /*Map glyph_ids to kern right classes*/ static const uint8_t kern_right_class_mapping[] = { - 0, 1, 0, 2, 0, 0, 0, 3, - 2, 0, 4, 5, 0, 6, 7, 6, - 8, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 2, + 1, 0, 3, 4, 0, 5, 6, 5, 0, 0, 0, 0, 0, 0, 0, 0, - 9, 0, 10, 0, 11, 0, 0, 0, - 11, 0, 0, 12, 0, 0, 0, 0, - 11, 0, 11, 0, 13, 14, 15, 16, - 17, 18, 19, 20, 0, 0, 21, 0, - 0, 0, 22, 0, 23, 23, 23, 24, - 23, 0, 0, 0, 0, 0, 25, 25, - 26, 25, 23, 27, 28, 29, 30, 31, - 32, 33, 31, 34, 0, 0, 35, 0, + 0, 0, 0, 5, 0, 0, 0, 0, + 7, 0, 8, 0, 9, 0, 0, 0, + 9, 0, 0, 10, 0, 0, 0, 0, + 9, 0, 9, 0, 11, 12, 13, 14, + 15, 16, 17, 18, 0, 0, 19, 0, + 0, 0, 20, 0, 21, 21, 21, 22, + 21, 0, 0, 0, 0, 0, 23, 23, + 24, 23, 21, 25, 26, 27, 28, 29, + 30, 31, 29, 32, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; /*Kern values between classes*/ static const int8_t kern_class_values[] = { + -20, 0, 0, 0, 0, 0, 0, -20, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -7, 0, 0, + 0, 0, 0, -9, -11, 0, -4, -11, + 0, -8, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 3, + 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -20, 0, 0, 0, - 0, 0, 0, 0, -22, 0, 0, 0, + 0, 0, -15, 0, 0, 0, 0, 0, + -11, 0, -2, 0, 0, -24, -3, -16, + -13, 0, -18, 0, 0, 0, 0, 0, + 0, -2, 0, 0, -3, -2, -9, -6, + 0, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -5, 0, + -4, 0, 0, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -9, -11, 0, -4, -11, 0, -15, 0, - 0, 0, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4, 3, 0, - 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -32, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -42, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - -22, 0, 0, 0, 0, 0, 0, -11, - 0, -2, 0, 0, -24, -3, -16, -13, - 0, -18, 0, 0, 0, 0, 0, 0, - -2, 0, 0, -3, -2, -9, -6, 0, - 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, -5, - 0, -4, 0, 0, -10, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -3, 0, 0, 0, + 0, -19, 0, 0, -4, 0, 0, 0, + -5, 0, -4, 0, -4, -8, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -4, -3, 0, -4, 0, 0, + 0, -3, -5, -4, 0, 0, 0, 0, + 0, 0, 0, -44, 0, 0, -11, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -6, -4, 0, 0, -4, -5, + 0, 0, -4, -4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, + 0, 0, 0, -5, 0, 0, 0, 3, -5, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -5, 0, 0, 0, 0, 0, - 0, -2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -3, - 0, 0, 0, 0, 0, -19, 0, 0, - 0, -4, 0, 0, 0, -5, 0, -4, - 0, -4, -8, -4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + -4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -12, + 0, 0, -6, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -5, 0, + -4, -5, 0, 0, 0, -4, -7, -12, + 0, 0, 0, -26, 0, 0, 0, 0, + 0, 0, 4, -12, 0, 0, -52, -10, + -33, -27, 0, -45, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -8, -25, + -17, 0, 0, 0, 0, 0, 0, 0, + -61, 0, 0, -26, 0, 0, 0, 0, + 0, 0, 0, -6, 0, -5, 0, -2, + -2, 0, 0, -2, 0, 0, 3, 0, + 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + -8, 0, -5, -4, 0, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, - 0, -4, -3, 0, -4, 0, 0, 0, - -3, -5, -4, 0, 0, 0, 0, 0, - 0, 0, 0, -44, 0, 0, 0, -32, - 0, -49, 0, 4, 0, 0, 0, 0, - 0, 0, 0, -6, -4, 0, 0, -4, - -5, 0, 0, -4, -4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3, 0, 0, 0, -5, 0, - 0, 0, 3, -5, 0, 0, 0, 0, + 0, -15, 0, -4, 0, 0, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -41, -43, 0, -15, -5, + 0, -3, 3, 0, 3, 3, 0, 3, + 0, 0, -21, -19, 0, -20, -19, -14, + -22, 0, -18, -13, -11, -14, -11, 0, + 0, 0, 4, 0, -42, -7, 0, -14, + -2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, -9, -8, 0, 0, -9, + -6, 0, 0, -5, -2, 0, 0, 0, + 4, 0, 0, 3, 0, -23, -11, 0, + -8, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 2, -6, -6, 0, 0, + -6, -4, 0, 0, -4, 0, 0, 0, + 0, 3, 0, 0, 0, 0, 0, -9, + 0, 0, -5, 0, 0, 0, 0, 3, + 0, 0, 0, 0, 0, 0, -5, 0, + 0, -4, 0, 0, 0, -4, -6, 0, + 0, 0, 0, 0, -6, 4, -9, -40, + -10, 0, -15, -5, -18, -3, 3, -18, + 3, 3, 2, 3, 0, 3, -14, -12, + -4, -7, -12, -7, -11, -4, -7, -4, + 0, -4, -6, 4, 0, 0, 0, 0, + 0, 0, 0, 2, -5, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + -4, 0, 0, -4, 0, 0, 0, -4, + -5, -5, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -3, 0, + 0, -3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -13, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -3, 0, 0, 0, 0, -5, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -2, 0, -3, -3, 0, + -2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, -3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -2, 0, 0, + 0, 0, 3, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, -4, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4, -3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -12, 0, 0, - 0, -6, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -5, 0, -4, - -5, 0, 0, 0, -4, -7, -12, 0, - 0, 0, 0, -63, 0, 0, 0, 0, - 0, 0, 0, 4, -12, 0, 0, -52, - -10, -33, -27, 0, -45, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -8, - -25, -17, 0, 0, 0, 0, 0, 0, - 0, 0, -61, 0, 0, 0, -26, 0, - -37, 0, 0, 0, 0, 0, -6, 0, - -5, 0, -2, -2, 0, 0, -2, 0, - 0, 3, 0, 3, 0, 0, 0, 0, + 0, -3, 0, -4, -3, 0, 3, 0, + 0, 0, -23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -8, 0, -5, - -4, 0, -7, 0, 0, 0, 0, 0, + 0, 0, -4, 3, 0, -4, 0, 0, + 3, 0, 3, 3, 0, 0, 0, 3, + 0, 0, 0, -20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -3, -2, 2, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - -15, 0, -4, 0, 0, -9, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -7, 0, - 0, 0, 0, -41, -43, 0, 0, -15, - -5, -45, -3, 3, 0, 3, 3, 0, - 3, 0, 0, -21, -19, 0, -20, -19, - -14, -22, 0, -18, -13, -11, -14, -11, - 0, 0, 0, 0, 4, 0, -42, -7, - 0, 0, -14, -2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3, -9, -8, - 0, 0, -9, -6, 0, 0, -5, -2, - 0, 0, 0, 4, 0, 0, 0, 3, - 0, -23, -11, 0, 0, -8, 0, 0, - 0, 3, 0, 0, 0, 0, 0, 0, - 2, -6, -6, 0, 0, -6, -4, 0, - 0, -4, 0, 0, 0, 0, 3, 0, - 0, 0, 0, 0, 0, -9, 0, 0, - 0, -5, 0, 0, 0, 0, 3, 0, - 0, 0, 0, 0, 0, -5, 0, 0, - -4, 0, 0, 0, -4, -6, 0, 0, - 0, 0, 0, 0, -6, 4, -9, -40, - -10, 0, 0, -18, -5, -18, -3, 3, - -18, 3, 3, 2, 3, 0, 3, -14, - -12, -4, -7, -12, -7, -11, -4, -7, - -4, 0, -4, -6, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2, -5, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -4, 0, 0, -4, 0, - 0, 0, -4, -5, -5, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -3, 0, 0, -3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -13, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, -3, 0, 0, 0, 0, 0, -5, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -2, 0, -3, -3, - 0, 0, -2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -2, 0, 0, 0, 0, 0, - 3, 0, 4, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3, 0, -4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4, 0, -19, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, -25, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -3, 0, - -4, -3, 0, 0, 3, 0, 0, 0, - -23, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - -7, -4, 3, 0, -4, 0, 0, 9, - 0, 3, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -4, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3, 0, 0, 0, -20, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -3, -2, - 2, 0, -3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, -23, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -917,13 +889,13 @@ static const int8_t kern_class_values[] = -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -3, 0, + 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -3, 0, 0, -3, 0, 0, 0, 0, + 0, 0, 0, 0, -4, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -4, 0, 0, -4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0 + 0, 0, 0, 0 }; @@ -933,8 +905,8 @@ static const lv_font_fmt_txt_kern_classes_t kern_classes = .class_pair_values = kern_class_values, .left_class_mapping = kern_left_class_mapping, .right_class_mapping = kern_right_class_mapping, - .left_class_cnt = 40, - .right_class_cnt = 35, + .left_class_cnt = 36, + .right_class_cnt = 33, }; /*-------------------- @@ -979,8 +951,8 @@ lv_font_t lv_font_bl = { #endif .get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/ .get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/ - .line_height = 27, /*The maximum line height required by the font*/ - .base_line = 6, /*Baseline measured from the bottom of the line*/ + .line_height = 26, /*The maximum line height required by the font*/ + .base_line = 5, /*Baseline measured from the bottom of the line*/ #if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0) .subpx = LV_FONT_SUBPX_NONE, #endif diff --git a/radio/src/fonts/lvgl/make_fonts.sh b/radio/src/fonts/lvgl/make_fonts.sh index 3678ca859..156af4bce 100755 --- a/radio/src/fonts/lvgl/make_fonts.sh +++ b/radio/src/fonts/lvgl/make_fonts.sh @@ -170,9 +170,9 @@ function make_font_set() { } # Bootloader font -make_bootloader_font "bl" ${LATIN_FONT} 16 "std" # 480x272, 480x320, 320x480 -make_bootloader_font "bl" ${LATIN_FONT} 14 "sml" # 320x240 -make_bootloader_font "bl" ${LATIN_FONT} 24 "lrg" # 800x480 +make_bootloader_font "bl" "Roboto/Roboto-Regular-BL.ttf" 16 "std" # 480x272, 480x320, 320x480 +make_bootloader_font "bl" "Roboto/Roboto-Regular-BL.ttf" 14 "sml" # 320x240 +make_bootloader_font "bl" "Roboto/Roboto-Regular-BL.ttf" 24 "lrg" # 800x480 # XXL fonts (no translation chars) make_font_no_sym_no_trans "en_bold" ${LATIN_FONT_BOLD} 64 "XXL" "std" diff --git a/radio/src/fonts/lvgl/sml/lv_font_bl.c b/radio/src/fonts/lvgl/sml/lv_font_bl.c index 85ca1f2b1..c98000130 100644 --- a/radio/src/fonts/lvgl/sml/lv_font_bl.c +++ b/radio/src/fonts/lvgl/sml/lv_font_bl.c @@ -1,7 +1,7 @@ /******************************************************************************* * Size: 14 px * Bpp: 1 - * Opts: --no-prefilter --bpp 1 --size 14 --no-compress --font ../Roboto/Roboto-Regular.ttf -r 0x20-0x7F --font ../../thirdparty/lvgl/scripts/built_in_font/FontAwesome5-Solid+Brands+Regular.woff -r 61671,63650,63426,61453,61787,61452,61931,62087 --format lvgl -o sml/lv_font_bl.c --force-fast-kern-format --no-compress + * Opts: --no-prefilter --bpp 1 --size 14 --no-compress --font ../Roboto/Roboto-Regular-BL.ttf -r 0x20-0x7F --font ../../thirdparty/lvgl/scripts/built_in_font/FontAwesome5-Solid+Brands+Regular.woff -r 61671,63650,63426,61453,61787,61452,61931,62087 --format lvgl -o sml/lv_font_bl.c --force-fast-kern-format --no-compress ******************************************************************************/ #ifdef LV_LVGL_H_INCLUDE_SIMPLE @@ -29,80 +29,80 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { 0xfe, 0x20, /* U+0022 "\"" */ - 0xb6, 0x80, + 0xb6, 0xd0, /* U+0023 "#" */ - 0x12, 0x12, 0x12, 0x7f, 0x14, 0x24, 0x24, 0xff, - 0x24, 0x24, 0x28, + 0x12, 0x12, 0x14, 0x7f, 0x24, 0x24, 0x24, 0xfe, + 0x28, 0x28, 0x28, /* U+0024 "$" */ - 0x10, 0xe4, 0xd1, 0x41, 0x83, 0x83, 0x6, 0x1c, - 0xde, 0x10, + 0x10, 0x43, 0x93, 0x45, 0x6, 0xe, 0xc, 0x18, + 0x73, 0x78, 0x40, /* U+0025 "%" */ - 0x60, 0x49, 0x24, 0x92, 0x86, 0x40, 0x40, 0x4c, + 0x60, 0x48, 0x24, 0x92, 0x86, 0x40, 0x40, 0x4c, 0x29, 0x24, 0x92, 0x40, 0xc0, /* U+0026 "&" */ - 0x38, 0x44, 0x44, 0x4c, 0x78, 0x70, 0xda, 0x8e, - 0x86, 0xc6, 0x7a, + 0x38, 0x44, 0x44, 0x4c, 0x78, 0x70, 0xd9, 0x8d, + 0x87, 0xc6, 0x7f, /* U+0027 "'" */ 0xe0, /* U+0028 "(" */ - 0x5, 0x29, 0x24, 0x92, 0x24, 0x88, + 0x5, 0x29, 0x24, 0x92, 0x44, 0x88, /* U+0029 ")" */ 0x11, 0x22, 0x49, 0x24, 0xa4, 0xa0, /* U+002A "*" */ - 0x21, 0x3e, 0x45, 0x6c, + 0x25, 0x5c, 0xe5, 0x0, /* U+002B "+" */ 0x10, 0x20, 0x47, 0xf1, 0x2, 0x4, 0x0, /* U+002C "," */ - 0x54, + 0xe0, /* U+002D "-" */ - 0xe0, + 0xf0, /* U+002E "." */ 0x80, /* U+002F "/" */ - 0x8, 0x44, 0x21, 0x10, 0x84, 0x42, 0x31, 0x0, + 0x8, 0x46, 0x21, 0x10, 0x84, 0x42, 0x31, 0x0, /* U+0030 "0" */ 0x79, 0x28, 0x61, 0x86, 0x18, 0x61, 0x85, 0x27, 0x80, /* U+0031 "1" */ - 0x1f, 0x91, 0x11, 0x11, 0x11, 0x10, + 0xe4, 0x92, 0x49, 0x24, /* U+0032 "2" */ - 0x79, 0x9a, 0x10, 0x20, 0x41, 0x4, 0x18, 0x60, - 0x83, 0xf8, + 0x7b, 0x38, 0x41, 0xc, 0x21, 0xc, 0x61, 0xf, + 0xc0, /* U+0033 "3" */ - 0x7b, 0x38, 0x41, 0xc, 0xe0, 0xc1, 0x87, 0x37, + 0x7b, 0x38, 0x41, 0x4, 0xe0, 0xc1, 0x87, 0x37, 0x80, /* U+0034 "4" */ - 0x4, 0x18, 0x70, 0xa2, 0x4c, 0x91, 0x7f, 0x4, - 0x8, 0x10, + 0x8, 0x30, 0x61, 0x46, 0x89, 0x32, 0x7f, 0x8, + 0x10, 0x20, /* U+0035 "5" */ - 0x7d, 0x4, 0x10, 0xf9, 0x30, 0x41, 0x87, 0x37, + 0x7f, 0xc, 0x20, 0xfa, 0x30, 0x41, 0x87, 0x37, 0x80, /* U+0036 "6" */ - 0x39, 0x84, 0x20, 0xfb, 0x38, 0x61, 0x85, 0x37, + 0x39, 0x8, 0x20, 0xfb, 0x38, 0x61, 0x85, 0x33, 0x80, /* U+0037 "7" */ - 0xfe, 0xc, 0x10, 0x20, 0x81, 0x6, 0x8, 0x30, + 0xfe, 0xc, 0x30, 0x41, 0x2, 0x8, 0x10, 0x20, 0x40, 0x80, /* U+0038 "8" */ @@ -110,47 +110,47 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { 0x80, /* U+0039 "9" */ - 0x73, 0x28, 0x61, 0x87, 0x37, 0x41, 0x8, 0x67, + 0x7b, 0x28, 0x61, 0x87, 0x37, 0xc1, 0x4, 0x27, 0x0, /* U+003A ":" */ 0x81, /* U+003B ";" */ - 0x87, 0x80, + 0x83, 0x80, /* U+003C "<" */ - 0x4, 0x66, 0x30, 0x70, 0x70, 0x40, + 0xc, 0xec, 0x38, 0x38, 0x30, /* U+003D "=" */ 0xfc, 0x0, 0x3f, /* U+003E ">" */ - 0x83, 0x81, 0x83, 0x3b, 0x0, 0x0, + 0xc1, 0xc1, 0xc7, 0x73, 0x0, /* U+003F "?" */ 0x74, 0x62, 0x11, 0x88, 0x84, 0x0, 0x8, /* U+0040 "@" */ - 0x1f, 0x6, 0x11, 0x1, 0x23, 0x28, 0x93, 0x22, - 0x64, 0x4c, 0x91, 0x92, 0x32, 0x6b, 0x77, 0x20, + 0x1f, 0x6, 0x11, 0x1, 0x20, 0x28, 0xe3, 0x32, + 0x64, 0x4c, 0x99, 0x92, 0x32, 0x4b, 0x77, 0x20, 0x2, 0x0, 0x3c, 0x0, /* U+0041 "A" */ - 0x8, 0xe, 0x5, 0x2, 0x83, 0x61, 0x10, 0x88, - 0xfe, 0x41, 0x20, 0xb0, 0x60, + 0x8, 0xe, 0x5, 0x2, 0x83, 0x41, 0x30, 0x88, + 0xfc, 0x43, 0x20, 0xb0, 0x40, /* U+0042 "B" */ - 0xf9, 0xa, 0x14, 0x28, 0xdf, 0x21, 0xc1, 0x83, + 0xf9, 0x1a, 0x14, 0x28, 0xdf, 0x21, 0xc1, 0x83, 0xf, 0xf0, /* U+0043 "C" */ - 0x3c, 0x8e, 0xc, 0x18, 0x10, 0x20, 0x40, 0x82, - 0x8c, 0xf0, + 0x38, 0x8a, 0xc, 0x8, 0x10, 0x20, 0x41, 0x82, + 0x88, 0xe0, /* U+0044 "D" */ - 0xf9, 0x1a, 0x14, 0x18, 0x30, 0x60, 0xc1, 0x87, - 0x1b, 0xe0, + 0xf9, 0xa, 0x1c, 0x18, 0x30, 0x60, 0xc1, 0x87, + 0xb, 0xe0, /* U+0045 "E" */ 0xfe, 0x8, 0x20, 0x83, 0xe8, 0x20, 0x82, 0xf, @@ -161,8 +161,8 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { 0x0, /* U+0047 "G" */ - 0x3c, 0x42, 0xc1, 0x80, 0x80, 0x80, 0x8f, 0x81, - 0xc1, 0x61, 0x3e, + 0x38, 0x8a, 0xc, 0x18, 0x10, 0x23, 0xc1, 0x82, + 0x84, 0xf0, /* U+0048 "H" */ 0x83, 0x6, 0xc, 0x18, 0x3f, 0xe0, 0xc1, 0x83, @@ -176,39 +176,39 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { 0x80, /* U+004B "K" */ - 0x87, 0x1a, 0x64, 0x8a, 0x1e, 0x34, 0x4c, 0x8d, - 0xa, 0x18, + 0x87, 0x1a, 0x24, 0x8b, 0x1c, 0x2c, 0x4c, 0x89, + 0x1a, 0x18, /* U+004C "L" */ 0x82, 0x8, 0x20, 0x82, 0x8, 0x20, 0x82, 0xf, 0xc0, /* U+004D "M" */ - 0xc0, 0xf0, 0x3c, 0xe, 0x85, 0xa1, 0x6c, 0xd9, - 0x26, 0x49, 0x9e, 0x63, 0x18, 0xc4, + 0xc0, 0xf0, 0x3c, 0xf, 0x87, 0xa1, 0x6c, 0xd9, + 0x26, 0x79, 0x9e, 0x63, 0x18, 0xc4, /* U+004E "N" */ - 0x81, 0xc1, 0xe1, 0xa1, 0xb1, 0x99, 0x8d, 0x85, - 0x87, 0x83, 0x81, + 0x83, 0x87, 0xd, 0x1b, 0x32, 0x66, 0xc5, 0x87, + 0xe, 0x8, /* U+004F "O" */ - 0x3c, 0x42, 0xc3, 0x81, 0x81, 0x81, 0x81, 0x81, - 0xc3, 0x42, 0x3c, + 0x3c, 0x42, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, + 0x81, 0x42, 0x3c, /* U+0050 "P" */ - 0xfd, 0xa, 0xc, 0x18, 0x30, 0xff, 0x40, 0x81, + 0xfd, 0xe, 0xc, 0x18, 0x30, 0xbe, 0x40, 0x81, 0x2, 0x0, /* U+0051 "Q" */ - 0x3c, 0x42, 0xc3, 0x81, 0x81, 0x81, 0x81, 0x81, - 0xc3, 0x42, 0x3e, 0x3, 0x0, + 0x3c, 0x21, 0x20, 0x50, 0x28, 0x14, 0xa, 0x5, + 0x2, 0x81, 0x21, 0xf, 0xc0, 0x20, /* U+0052 "R" */ - 0xfd, 0xe, 0xc, 0x18, 0x30, 0xff, 0x46, 0x85, - 0xe, 0x8, + 0xfd, 0xe, 0xc, 0x18, 0x7f, 0xa1, 0xc1, 0x83, + 0x6, 0x8, /* U+0053 "S" */ - 0x79, 0x8a, 0xc, 0xe, 0x7, 0x3, 0x81, 0x83, + 0x79, 0x8e, 0xc, 0xe, 0x7, 0x1, 0x81, 0x83, 0x8c, 0xf0, /* U+0054 "T" */ @@ -217,24 +217,24 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { /* U+0055 "U" */ 0x83, 0x6, 0xc, 0x18, 0x30, 0x60, 0xc1, 0x82, - 0x88, 0xf0, + 0x88, 0xe0, /* U+0056 "V" */ 0xc1, 0xa0, 0x90, 0xcc, 0x62, 0x21, 0x30, 0xd8, 0x28, 0x14, 0xe, 0x2, 0x0, /* U+0057 "W" */ - 0x42, 0x14, 0x63, 0x46, 0x34, 0x52, 0x65, 0x22, - 0x92, 0x29, 0x62, 0x8c, 0x28, 0xc3, 0xc, 0x10, + 0xc6, 0x34, 0x62, 0x46, 0x24, 0xf2, 0x6f, 0x66, + 0x96, 0x29, 0x42, 0x9c, 0x38, 0xc3, 0xc, 0x10, 0xc0, /* U+0058 "X" */ - 0x43, 0x62, 0x26, 0x34, 0x1c, 0x8, 0x1c, 0x34, + 0x43, 0x63, 0x36, 0x14, 0x1c, 0x8, 0x1c, 0x34, 0x26, 0x63, 0x41, /* U+0059 "Y" */ - 0x83, 0x8d, 0x13, 0x62, 0x87, 0x4, 0x8, 0x10, - 0x20, 0x40, + 0x82, 0xc6, 0x44, 0x6c, 0x28, 0x38, 0x10, 0x10, + 0x10, 0x10, 0x10, /* U+005A "Z" */ 0xfe, 0xc, 0x30, 0x41, 0x82, 0xc, 0x30, 0x41, @@ -244,33 +244,33 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { 0xea, 0xaa, 0xaa, 0xb0, /* U+005C "\\" */ - 0xc1, 0x4, 0x8, 0x20, 0x81, 0x4, 0x18, 0x20, + 0xc1, 0x4, 0x8, 0x20, 0xc1, 0x4, 0x18, 0x20, 0x83, /* U+005D "]" */ 0xd5, 0x55, 0x55, 0x70, /* U+005E "^" */ - 0x21, 0x8c, 0xe4, 0xa4, + 0x21, 0x8c, 0xf4, 0xa4, /* U+005F "_" */ 0xfc, /* U+0060 "`" */ - 0x44, + 0x90, /* U+0061 "a" */ - 0x7b, 0x10, 0x5f, 0xc6, 0x18, 0xdf, + 0x7b, 0x10, 0x5f, 0xc6, 0x18, 0xdd, /* U+0062 "b" */ - 0x82, 0x8, 0x3e, 0xca, 0x18, 0x61, 0x87, 0x2f, + 0x82, 0x8, 0x3e, 0xca, 0x18, 0x61, 0x87, 0x3f, 0x80, /* U+0063 "c" */ - 0x79, 0x38, 0x60, 0x82, 0x14, 0xde, + 0x79, 0x38, 0x60, 0x82, 0x14, 0x5e, /* U+0064 "d" */ - 0x4, 0x10, 0x5f, 0x4e, 0x18, 0x61, 0x85, 0x37, + 0x4, 0x10, 0x5f, 0x4e, 0x18, 0x61, 0x87, 0x37, 0xc0, /* U+0065 "e" */ @@ -280,7 +280,7 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { 0x3a, 0x11, 0xe4, 0x21, 0x8, 0x42, 0x10, /* U+0067 "g" */ - 0x7d, 0x38, 0x61, 0x86, 0x14, 0xdf, 0x6, 0x37, + 0x7d, 0x38, 0x61, 0x86, 0x1c, 0xdf, 0x4, 0x17, 0x80, /* U+0068 "h" */ @@ -291,58 +291,58 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { 0x9f, 0xe0, /* U+006A "j" */ - 0x41, 0x55, 0x55, 0x70, + 0x20, 0x12, 0x49, 0x24, 0x93, 0x80, /* U+006B "k" */ - 0x82, 0x8, 0x22, 0x92, 0x8e, 0x38, 0x92, 0x68, - 0xc0, + 0x82, 0x8, 0x22, 0x92, 0xce, 0x28, 0x92, 0x68, + 0x80, /* U+006C "l" */ 0xff, 0xe0, /* U+006D "m" */ - 0xfb, 0xd8, 0xc6, 0x10, 0xc2, 0x18, 0x43, 0x8, + 0xb9, 0xd9, 0xce, 0x10, 0xc2, 0x18, 0x43, 0x8, 0x61, 0xc, 0x21, /* U+006E "n" */ 0xbb, 0x18, 0x61, 0x86, 0x18, 0x61, /* U+006F "o" */ - 0x38, 0x8a, 0xc, 0x18, 0x30, 0x51, 0x1c, + 0x79, 0x28, 0x61, 0x86, 0x14, 0x9e, /* U+0070 "p" */ - 0xfb, 0x28, 0x61, 0x86, 0x18, 0xbe, 0x82, 0x8, + 0xfa, 0x28, 0x61, 0x86, 0x18, 0xfe, 0x82, 0x8, 0x0, /* U+0071 "q" */ - 0x7f, 0x18, 0x61, 0x86, 0x14, 0xdf, 0x4, 0x10, + 0x7d, 0x18, 0x61, 0x86, 0x1c, 0x5f, 0x4, 0x10, 0x40, /* U+0072 "r" */ 0xf2, 0x49, 0x24, /* U+0073 "s" */ - 0x7a, 0x38, 0x1c, 0x1c, 0x1c, 0x5e, + 0x74, 0x61, 0xc3, 0x86, 0x2e, /* U+0074 "t" */ 0x44, 0xf4, 0x44, 0x44, 0x43, /* U+0075 "u" */ - 0x86, 0x18, 0x61, 0x86, 0x18, 0xdf, + 0x86, 0x18, 0x61, 0x86, 0x18, 0xdd, /* U+0076 "v" */ - 0xc4, 0x89, 0x33, 0x42, 0x85, 0xc, 0x8, + 0xc6, 0x89, 0x11, 0x62, 0x85, 0x6, 0x8, /* U+0077 "w" */ - 0xc4, 0x53, 0x14, 0xcd, 0x2a, 0x7a, 0x8c, 0xa3, - 0x10, 0xc4, + 0xc4, 0x53, 0x14, 0xed, 0xaa, 0x3a, 0x8c, 0xa3, + 0x18, 0xc4, /* U+0078 "x" */ - 0x44, 0xd8, 0xa1, 0x83, 0x5, 0x1b, 0x22, + 0x44, 0xd8, 0xa1, 0xc3, 0x85, 0x1b, 0x22, /* U+0079 "y" */ - 0x8e, 0x2c, 0x96, 0x51, 0xc3, 0x8, 0x20, 0x8c, - 0x0, + 0xc6, 0x89, 0x13, 0x62, 0x85, 0xe, 0x8, 0x10, + 0x61, 0x80, /* U+007A "z" */ 0xfc, 0x31, 0x8c, 0x21, 0x8c, 0x3f, @@ -406,109 +406,109 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { {.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */, - {.bitmap_index = 0, .adv_w = 55, .box_w = 1, .box_h = 1, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1, .adv_w = 58, .box_w = 1, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 3, .adv_w = 72, .box_w = 3, .box_h = 3, .ofs_x = 1, .ofs_y = 8}, - {.bitmap_index = 5, .adv_w = 138, .box_w = 8, .box_h = 11, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 16, .adv_w = 126, .box_w = 6, .box_h = 13, .ofs_x = 1, .ofs_y = -2}, - {.bitmap_index = 26, .adv_w = 164, .box_w = 9, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 39, .adv_w = 139, .box_w = 8, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 50, .adv_w = 39, .box_w = 1, .box_h = 3, .ofs_x = 1, .ofs_y = 8}, - {.bitmap_index = 51, .adv_w = 77, .box_w = 3, .box_h = 15, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 57, .adv_w = 78, .box_w = 3, .box_h = 15, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 63, .adv_w = 96, .box_w = 5, .box_h = 6, .ofs_x = 1, .ofs_y = 5}, - {.bitmap_index = 67, .adv_w = 127, .box_w = 7, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, - {.bitmap_index = 74, .adv_w = 44, .box_w = 2, .box_h = 4, .ofs_x = 0, .ofs_y = -2}, - {.bitmap_index = 75, .adv_w = 62, .box_w = 3, .box_h = 1, .ofs_x = 1, .ofs_y = 4}, - {.bitmap_index = 76, .adv_w = 59, .box_w = 1, .box_h = 1, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 77, .adv_w = 92, .box_w = 5, .box_h = 12, .ofs_x = 0, .ofs_y = -1}, - {.bitmap_index = 85, .adv_w = 126, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 94, .adv_w = 126, .box_w = 4, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 100, .adv_w = 126, .box_w = 7, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 110, .adv_w = 126, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 119, .adv_w = 126, .box_w = 7, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 129, .adv_w = 126, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 138, .adv_w = 126, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 147, .adv_w = 126, .box_w = 7, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 157, .adv_w = 126, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 166, .adv_w = 126, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 175, .adv_w = 54, .box_w = 1, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 176, .adv_w = 47, .box_w = 1, .box_h = 9, .ofs_x = 1, .ofs_y = -1}, - {.bitmap_index = 178, .adv_w = 114, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, - {.bitmap_index = 184, .adv_w = 123, .box_w = 6, .box_h = 4, .ofs_x = 1, .ofs_y = 3}, - {.bitmap_index = 187, .adv_w = 117, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, - {.bitmap_index = 193, .adv_w = 106, .box_w = 5, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 200, .adv_w = 201, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 220, .adv_w = 146, .box_w = 9, .box_h = 11, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 233, .adv_w = 139, .box_w = 7, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 243, .adv_w = 146, .box_w = 7, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 253, .adv_w = 147, .box_w = 7, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 263, .adv_w = 127, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 272, .adv_w = 124, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 281, .adv_w = 153, .box_w = 8, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 292, .adv_w = 160, .box_w = 7, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 302, .adv_w = 61, .box_w = 1, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 304, .adv_w = 124, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 313, .adv_w = 140, .box_w = 7, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 323, .adv_w = 121, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 332, .adv_w = 196, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 346, .adv_w = 160, .box_w = 8, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 357, .adv_w = 154, .box_w = 8, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 368, .adv_w = 141, .box_w = 7, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 378, .adv_w = 154, .box_w = 8, .box_h = 13, .ofs_x = 1, .ofs_y = -2}, - {.bitmap_index = 391, .adv_w = 138, .box_w = 7, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 401, .adv_w = 133, .box_w = 7, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 411, .adv_w = 134, .box_w = 8, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 422, .adv_w = 145, .box_w = 7, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 432, .adv_w = 143, .box_w = 9, .box_h = 11, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 445, .adv_w = 199, .box_w = 12, .box_h = 11, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 462, .adv_w = 140, .box_w = 8, .box_h = 11, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 473, .adv_w = 135, .box_w = 7, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 483, .adv_w = 134, .box_w = 7, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 493, .adv_w = 59, .box_w = 2, .box_h = 14, .ofs_x = 1, .ofs_y = -2}, - {.bitmap_index = 497, .adv_w = 92, .box_w = 6, .box_h = 12, .ofs_x = 0, .ofs_y = -1}, - {.bitmap_index = 506, .adv_w = 59, .box_w = 2, .box_h = 14, .ofs_x = 0, .ofs_y = -2}, - {.bitmap_index = 510, .adv_w = 94, .box_w = 5, .box_h = 6, .ofs_x = 0, .ofs_y = 5}, - {.bitmap_index = 514, .adv_w = 101, .box_w = 6, .box_h = 1, .ofs_x = 1, .ofs_y = -1}, - {.bitmap_index = 515, .adv_w = 69, .box_w = 3, .box_h = 2, .ofs_x = 0, .ofs_y = 9}, - {.bitmap_index = 516, .adv_w = 122, .box_w = 6, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 522, .adv_w = 126, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 531, .adv_w = 117, .box_w = 6, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 537, .adv_w = 126, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 546, .adv_w = 119, .box_w = 6, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 552, .adv_w = 78, .box_w = 5, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 559, .adv_w = 126, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 568, .adv_w = 123, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 577, .adv_w = 54, .box_w = 1, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 579, .adv_w = 53, .box_w = 2, .box_h = 14, .ofs_x = 0, .ofs_y = -3}, - {.bitmap_index = 583, .adv_w = 114, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 592, .adv_w = 54, .box_w = 1, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 594, .adv_w = 196, .box_w = 11, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 605, .adv_w = 124, .box_w = 6, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 611, .adv_w = 128, .box_w = 7, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 618, .adv_w = 126, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 627, .adv_w = 127, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 636, .adv_w = 76, .box_w = 3, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 639, .adv_w = 116, .box_w = 6, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 645, .adv_w = 73, .box_w = 4, .box_h = 10, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 650, .adv_w = 123, .box_w = 6, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 656, .adv_w = 109, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 663, .adv_w = 168, .box_w = 10, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 673, .adv_w = 111, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 680, .adv_w = 106, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 689, .adv_w = 111, .box_w = 6, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 695, .adv_w = 76, .box_w = 4, .box_h = 15, .ofs_x = 0, .ofs_y = -3}, - {.bitmap_index = 703, .adv_w = 55, .box_w = 1, .box_h = 13, .ofs_x = 1, .ofs_y = -2}, - {.bitmap_index = 705, .adv_w = 76, .box_w = 4, .box_h = 15, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 713, .adv_w = 152, .box_w = 8, .box_h = 3, .ofs_x = 1, .ofs_y = 3}, - {.bitmap_index = 716, .adv_w = 224, .box_w = 14, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 734, .adv_w = 154, .box_w = 10, .box_h = 9, .ofs_x = 0, .ofs_y = 1}, - {.bitmap_index = 746, .adv_w = 140, .box_w = 9, .box_h = 14, .ofs_x = 0, .ofs_y = -2}, - {.bitmap_index = 762, .adv_w = 168, .box_w = 11, .box_h = 13, .ofs_x = 0, .ofs_y = -1}, - {.bitmap_index = 780, .adv_w = 280, .box_w = 18, .box_h = 13, .ofs_x = 0, .ofs_y = -1}, - {.bitmap_index = 810, .adv_w = 280, .box_w = 18, .box_h = 11, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 835, .adv_w = 168, .box_w = 11, .box_h = 13, .ofs_x = 0, .ofs_y = -1}, - {.bitmap_index = 853, .adv_w = 225, .box_w = 14, .box_h = 8, .ofs_x = 0, .ofs_y = 1} + {.bitmap_index = 0, .adv_w = 56, .box_w = 1, .box_h = 1, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1, .adv_w = 59, .box_w = 1, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 3, .adv_w = 80, .box_w = 3, .box_h = 4, .ofs_x = 1, .ofs_y = 7}, + {.bitmap_index = 5, .adv_w = 140, .box_w = 8, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 16, .adv_w = 130, .box_w = 6, .box_h = 14, .ofs_x = 1, .ofs_y = -2}, + {.bitmap_index = 27, .adv_w = 164, .box_w = 9, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 40, .adv_w = 140, .box_w = 8, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 51, .adv_w = 49, .box_w = 1, .box_h = 3, .ofs_x = 1, .ofs_y = 8}, + {.bitmap_index = 52, .adv_w = 74, .box_w = 3, .box_h = 15, .ofs_x = 1, .ofs_y = -3}, + {.bitmap_index = 58, .adv_w = 75, .box_w = 3, .box_h = 15, .ofs_x = 0, .ofs_y = -3}, + {.bitmap_index = 64, .adv_w = 97, .box_w = 5, .box_h = 5, .ofs_x = 1, .ofs_y = 3}, + {.bitmap_index = 68, .adv_w = 127, .box_w = 7, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 75, .adv_w = 44, .box_w = 1, .box_h = 3, .ofs_x = 1, .ofs_y = -2}, + {.bitmap_index = 76, .adv_w = 101, .box_w = 4, .box_h = 1, .ofs_x = 1, .ofs_y = 4}, + {.bitmap_index = 77, .adv_w = 60, .box_w = 1, .box_h = 1, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 78, .adv_w = 93, .box_w = 5, .box_h = 12, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 86, .adv_w = 126, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 95, .adv_w = 126, .box_w = 3, .box_h = 10, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 99, .adv_w = 126, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 108, .adv_w = 126, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 117, .adv_w = 126, .box_w = 7, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 127, .adv_w = 126, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 136, .adv_w = 126, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 145, .adv_w = 126, .box_w = 7, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 155, .adv_w = 126, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 164, .adv_w = 126, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 173, .adv_w = 57, .box_w = 1, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 174, .adv_w = 57, .box_w = 1, .box_h = 9, .ofs_x = 1, .ofs_y = -1}, + {.bitmap_index = 176, .adv_w = 114, .box_w = 6, .box_h = 6, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 181, .adv_w = 126, .box_w = 6, .box_h = 4, .ofs_x = 1, .ofs_y = 3}, + {.bitmap_index = 184, .adv_w = 117, .box_w = 6, .box_h = 6, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 189, .adv_w = 107, .box_w = 5, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 196, .adv_w = 200, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = -3}, + {.bitmap_index = 216, .adv_w = 142, .box_w = 9, .box_h = 11, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 229, .adv_w = 142, .box_w = 7, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 239, .adv_w = 142, .box_w = 7, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 249, .adv_w = 152, .box_w = 7, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 259, .adv_w = 124, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 268, .adv_w = 124, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 277, .adv_w = 152, .box_w = 7, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 287, .adv_w = 158, .box_w = 7, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 297, .adv_w = 63, .box_w = 1, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 299, .adv_w = 123, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 308, .adv_w = 142, .box_w = 7, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 318, .adv_w = 123, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 327, .adv_w = 195, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 341, .adv_w = 158, .box_w = 7, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 351, .adv_w = 153, .box_w = 8, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 362, .adv_w = 142, .box_w = 7, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 372, .adv_w = 156, .box_w = 9, .box_h = 12, .ofs_x = 1, .ofs_y = -1}, + {.bitmap_index = 386, .adv_w = 143, .box_w = 7, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 396, .adv_w = 137, .box_w = 7, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 406, .adv_w = 134, .box_w = 8, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 417, .adv_w = 152, .box_w = 7, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 427, .adv_w = 142, .box_w = 9, .box_h = 11, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 440, .adv_w = 193, .box_w = 12, .box_h = 11, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 457, .adv_w = 142, .box_w = 8, .box_h = 11, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 468, .adv_w = 142, .box_w = 8, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 479, .adv_w = 134, .box_w = 7, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 489, .adv_w = 60, .box_w = 2, .box_h = 14, .ofs_x = 1, .ofs_y = -2}, + {.bitmap_index = 493, .adv_w = 93, .box_w = 6, .box_h = 12, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 502, .adv_w = 60, .box_w = 2, .box_h = 14, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 506, .adv_w = 94, .box_w = 5, .box_h = 6, .ofs_x = 0, .ofs_y = 5}, + {.bitmap_index = 510, .adv_w = 102, .box_w = 6, .box_h = 1, .ofs_x = 1, .ofs_y = -1}, + {.bitmap_index = 511, .adv_w = 70, .box_w = 2, .box_h = 2, .ofs_x = 1, .ofs_y = 9}, + {.bitmap_index = 512, .adv_w = 123, .box_w = 6, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 518, .adv_w = 127, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 527, .adv_w = 117, .box_w = 6, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 533, .adv_w = 127, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 542, .adv_w = 117, .box_w = 6, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 548, .adv_w = 74, .box_w = 5, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 555, .adv_w = 127, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = -3}, + {.bitmap_index = 564, .adv_w = 127, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 573, .adv_w = 56, .box_w = 1, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 575, .adv_w = 58, .box_w = 3, .box_h = 14, .ofs_x = -1, .ofs_y = -3}, + {.bitmap_index = 581, .adv_w = 115, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 590, .adv_w = 56, .box_w = 1, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 592, .adv_w = 196, .box_w = 11, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 603, .adv_w = 127, .box_w = 6, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 609, .adv_w = 127, .box_w = 6, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 615, .adv_w = 127, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = -3}, + {.bitmap_index = 624, .adv_w = 127, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = -3}, + {.bitmap_index = 633, .adv_w = 78, .box_w = 3, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 636, .adv_w = 117, .box_w = 5, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 641, .adv_w = 75, .box_w = 4, .box_h = 10, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 646, .adv_w = 127, .box_w = 6, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 652, .adv_w = 113, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 659, .adv_w = 170, .box_w = 10, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 669, .adv_w = 113, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 676, .adv_w = 113, .box_w = 7, .box_h = 11, .ofs_x = 0, .ofs_y = -3}, + {.bitmap_index = 686, .adv_w = 113, .box_w = 6, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 692, .adv_w = 76, .box_w = 4, .box_h = 15, .ofs_x = 0, .ofs_y = -3}, + {.bitmap_index = 700, .adv_w = 55, .box_w = 1, .box_h = 13, .ofs_x = 1, .ofs_y = -2}, + {.bitmap_index = 702, .adv_w = 76, .box_w = 4, .box_h = 15, .ofs_x = 1, .ofs_y = -3}, + {.bitmap_index = 710, .adv_w = 152, .box_w = 8, .box_h = 3, .ofs_x = 1, .ofs_y = 3}, + {.bitmap_index = 713, .adv_w = 224, .box_w = 14, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 731, .adv_w = 154, .box_w = 10, .box_h = 9, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 743, .adv_w = 140, .box_w = 9, .box_h = 14, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 759, .adv_w = 168, .box_w = 11, .box_h = 13, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 777, .adv_w = 280, .box_w = 18, .box_h = 13, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 807, .adv_w = 280, .box_w = 18, .box_h = 11, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 832, .adv_w = 168, .box_w = 11, .box_h = 13, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 850, .adv_w = 225, .box_w = 14, .box_h = 8, .ofs_x = 0, .ofs_y = 1} }; /*--------------------- @@ -540,201 +540,175 @@ static const lv_font_fmt_txt_cmap_t cmaps[] = /*Map glyph_ids to kern left classes*/ static const uint8_t kern_left_class_mapping[] = { - 0, 1, 0, 2, 0, 0, 0, 0, - 2, 3, 0, 0, 0, 4, 0, 4, - 5, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, + 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 6, 7, 8, 9, 10, 11, - 0, 12, 12, 13, 14, 15, 12, 12, - 9, 16, 17, 18, 0, 19, 13, 20, - 21, 22, 23, 24, 25, 0, 0, 0, - 0, 0, 26, 27, 28, 0, 29, 30, - 0, 31, 0, 0, 32, 0, 31, 31, - 33, 27, 0, 34, 0, 35, 0, 36, - 37, 38, 36, 39, 40, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 4, 5, 6, 7, 8, + 0, 9, 9, 10, 11, 12, 9, 9, + 6, 13, 14, 15, 0, 16, 10, 17, + 18, 19, 20, 21, 22, 0, 0, 0, + 0, 0, 23, 24, 25, 0, 26, 27, + 0, 28, 0, 0, 29, 0, 28, 28, + 30, 24, 0, 31, 0, 0, 0, 32, + 33, 34, 32, 35, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; /*Map glyph_ids to kern right classes*/ static const uint8_t kern_right_class_mapping[] = { - 0, 1, 0, 2, 0, 0, 0, 3, - 2, 0, 4, 5, 0, 6, 7, 6, - 8, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 2, + 1, 0, 3, 4, 0, 5, 6, 5, 0, 0, 0, 0, 0, 0, 0, 0, - 9, 0, 10, 0, 11, 0, 0, 0, - 11, 0, 0, 12, 0, 0, 0, 0, - 11, 0, 11, 0, 13, 14, 15, 16, - 17, 18, 19, 20, 0, 0, 21, 0, - 0, 0, 22, 0, 23, 23, 23, 24, - 23, 0, 0, 0, 0, 0, 25, 25, - 26, 25, 23, 27, 28, 29, 30, 31, - 32, 33, 31, 34, 0, 0, 35, 0, + 0, 0, 0, 5, 0, 0, 0, 0, + 7, 0, 8, 0, 9, 0, 0, 0, + 9, 0, 0, 10, 0, 0, 0, 0, + 9, 0, 9, 0, 11, 12, 13, 14, + 15, 16, 17, 18, 0, 0, 19, 0, + 0, 0, 20, 0, 21, 21, 21, 22, + 21, 0, 0, 0, 0, 0, 23, 23, + 24, 23, 21, 25, 26, 27, 28, 29, + 30, 31, 29, 32, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; /*Kern values between classes*/ static const int8_t kern_class_values[] = { + -12, 0, 0, 0, 0, 0, 0, -12, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -4, 0, 0, + 0, 0, 0, -5, -6, 0, -2, -7, + 0, -5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -12, 0, 0, 0, - 0, 0, 0, 0, -13, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - -5, -6, 0, -2, -7, 0, -9, 0, - 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2, 2, 0, - 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -19, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -24, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - -13, 0, 0, 0, 0, 0, 0, -7, - 0, -1, 0, 0, -14, -2, -10, -8, - 0, -10, 0, 0, 0, 0, 0, 0, - -1, 0, 0, -2, -1, -5, -4, 0, - 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -3, - 0, -3, 0, 0, -6, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - -3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -3, 0, 0, 0, 0, 0, - 0, -1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -2, - 0, 0, 0, 0, 0, -11, 0, 0, - 0, -2, 0, 0, 0, -3, 0, -2, - 0, -2, -5, -3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, - 0, -2, -2, 0, -2, 0, 0, 0, - -2, -3, -2, 0, 0, 0, 0, 0, - 0, 0, 0, -26, 0, 0, 0, -19, - 0, -29, 0, 2, 0, 0, 0, 0, - 0, 0, 0, -4, -2, 0, 0, -2, - -3, 0, 0, -2, -3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2, 0, 0, 0, -3, 0, - 0, 0, 2, -3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -7, 0, 0, - 0, -3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -3, 0, -3, - -3, 0, 0, 0, -3, -4, -7, 0, - 0, 0, 0, -37, 0, 0, 0, 0, - 0, 0, 0, 2, -7, 0, 0, -30, - -6, -19, -16, 0, -26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -5, - -15, -10, 0, 0, 0, 0, 0, 0, - 0, 0, -35, 0, 0, 0, -15, 0, - -22, 0, 0, 0, 0, 0, -3, 0, - -3, 0, -1, -1, 0, 0, -1, 0, - 0, 2, 0, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -5, 0, -3, - -2, 0, -4, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - -9, 0, -2, 0, 0, -5, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -4, 0, - 0, 0, 0, -24, -25, 0, 0, -9, - -3, -26, -2, 2, 0, 2, 2, 0, - 2, 0, 0, -12, -11, 0, -12, -11, - -8, -13, 0, -10, -8, -6, -8, -7, - 0, 0, 0, 0, 2, 0, -25, -4, - 0, 0, -8, -1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2, -5, -5, - 0, 0, -5, -3, 0, 0, -3, -1, - 0, 0, 0, 2, 0, 0, 0, 2, - 0, -13, -7, 0, 0, -5, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, - 1, -4, -3, 0, 0, -3, -2, 0, - 0, -2, 0, 0, 0, 0, 2, 0, - 0, 0, 0, 0, 0, -5, 0, 0, - 0, -3, 0, 0, 0, 0, 2, 0, - 0, 0, 0, 0, 0, -3, 0, 0, - -2, 0, 0, 0, -2, -3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -9, 0, 0, 0, 0, 0, + -7, 0, -1, 0, 0, -14, -2, -10, + -8, 0, -10, 0, 0, 0, 0, 0, + 0, -1, 0, 0, -2, -1, -5, -4, + 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -3, 0, + -3, 0, 0, -6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -3, 0, + 0, 0, 0, 0, 0, 0, 0, -3, + 0, 0, 0, 0, 0, 0, -1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -2, 0, 0, 0, + 0, -11, 0, 0, -2, 0, 0, 0, + -3, 0, -2, 0, -2, -5, -3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -2, -2, 0, -2, 0, 0, + 0, -2, -3, -2, 0, 0, 0, 0, + 0, 0, 0, -26, 0, 0, -6, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -4, -2, 0, 0, -2, -3, + 0, 0, -2, -3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, + 0, 0, 0, -3, 0, 0, 0, 2, + -3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + -2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -7, + 0, 0, -3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -3, 0, + -3, -3, 0, 0, 0, -3, -4, -7, + 0, 0, 0, -15, 0, 0, 0, 0, + 0, 0, 2, -7, 0, 0, -30, -6, + -19, -16, 0, -26, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -5, -15, + -10, 0, 0, 0, 0, 0, 0, 0, + -35, 0, 0, -15, 0, 0, 0, 0, + 0, 0, 0, -3, 0, -3, 0, -1, + -1, 0, 0, -1, 0, 0, 2, 0, + 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + -5, 0, -3, -2, 0, -4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, -9, 0, -2, 0, 0, -5, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -24, -25, 0, -9, -3, + 0, -2, 2, 0, 2, 2, 0, 2, + 0, 0, -12, -11, 0, -12, -11, -8, + -13, 0, -10, -8, -6, -8, -7, 0, + 0, 0, 2, 0, -25, -4, 0, -8, + -1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, -5, -5, 0, 0, -5, + -3, 0, 0, -3, -1, 0, 0, 0, + 2, 0, 0, 2, 0, -13, -7, 0, + -5, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 1, -4, -3, 0, 0, + -3, -2, 0, 0, -2, 0, 0, 0, + 0, 2, 0, 0, 0, 0, 0, -5, + 0, 0, -3, 0, 0, 0, 0, 2, + 0, 0, 0, 0, 0, 0, -3, 0, + 0, -2, 0, 0, 0, -2, -3, 0, 0, 0, 0, 0, -3, 2, -5, -23, - -6, 0, 0, -10, -3, -10, -2, 2, - -10, 2, 2, 1, 2, 0, 2, -8, - -7, -2, -4, -7, -4, -6, -2, -4, - -2, 0, -3, -3, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, -3, + -6, 0, -9, -3, -10, -2, 2, -10, + 2, 2, 1, 2, 0, 2, -8, -7, + -2, -4, -7, -4, -6, -2, -4, -2, + 0, -3, -3, 2, 0, 0, 0, 0, + 0, 0, 0, 1, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -2, 0, 0, -2, 0, - 0, 0, -2, -3, -3, 0, 0, 0, + -2, 0, 0, -2, 0, 0, 0, -2, + -3, -3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -2, 0, + 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -2, 0, 0, -2, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -2, 0, 0, 0, 0, 0, -3, + 0, 0, -2, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -1, 0, -2, -2, - 0, 0, -1, 0, 0, 0, 0, 0, + 0, 0, 0, -1, 0, -2, -2, 0, + -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -1, 0, 0, + 0, 0, 2, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, -3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, -2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -1, 0, 0, 0, 0, 0, - 2, 0, 2, 0, 0, 0, 0, 0, + 0, -2, 0, -2, -2, 0, 2, 0, + 0, 0, -13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2, 0, -3, 0, 0, + 0, 0, -2, 2, 0, -2, 0, 0, + 2, 0, 2, 2, 0, 0, 0, 2, + 0, 0, 0, -12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2, 0, -11, 0, 0, 0, 0, + 0, 0, -2, -1, 1, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, -15, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -2, 0, - -2, -2, 0, 0, 2, 0, 0, 0, - -13, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - -4, -2, 2, 0, -2, 0, 0, 5, - 0, 2, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -2, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2, 0, 0, 0, -12, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -2, -1, - 1, 0, -2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, -14, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -744,13 +718,13 @@ static const int8_t kern_class_values[] = -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -2, 0, + 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -2, 0, 0, -2, 0, 0, 0, 0, + 0, 0, 0, 0, -2, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -2, 0, 0, -2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0 + 0, 0, 0, 0 }; @@ -760,8 +734,8 @@ static const lv_font_fmt_txt_kern_classes_t kern_classes = .class_pair_values = kern_class_values, .left_class_mapping = kern_left_class_mapping, .right_class_mapping = kern_right_class_mapping, - .left_class_cnt = 40, - .right_class_cnt = 35, + .left_class_cnt = 36, + .right_class_cnt = 33, }; /*-------------------- diff --git a/radio/src/fonts/lvgl/std/lv_font_bl.c b/radio/src/fonts/lvgl/std/lv_font_bl.c index b34d18c81..35fd87390 100644 --- a/radio/src/fonts/lvgl/std/lv_font_bl.c +++ b/radio/src/fonts/lvgl/std/lv_font_bl.c @@ -1,7 +1,7 @@ /******************************************************************************* * Size: 16 px * Bpp: 1 - * Opts: --no-prefilter --bpp 1 --size 16 --no-compress --font ../Roboto/Roboto-Regular.ttf -r 0x20-0x7F --font ../../thirdparty/lvgl/scripts/built_in_font/FontAwesome5-Solid+Brands+Regular.woff -r 61671,63650,63426,61453,61787,61452,61931,62087 --format lvgl -o std/lv_font_bl.c --force-fast-kern-format --no-compress + * Opts: --no-prefilter --bpp 1 --size 16 --no-compress --font ../Roboto/Roboto-Regular-BL.ttf -r 0x20-0x7F --font ../../thirdparty/lvgl/scripts/built_in_font/FontAwesome5-Solid+Brands+Regular.woff -r 61671,63650,63426,61453,61787,61452,61931,62087 --format lvgl -o std/lv_font_bl.c --force-fast-kern-format --no-compress ******************************************************************************/ #ifdef LV_LVGL_H_INCLUDE_SIMPLE @@ -26,235 +26,236 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { 0x0, /* U+0021 "!" */ - 0xff, 0x10, + 0xff, 0xff, 0x3, /* U+0022 "\"" */ - 0xb6, 0xd0, + 0xff, 0xfa, /* U+0023 "#" */ - 0xb, 0x9, 0x4, 0x8f, 0xf1, 0x20, 0x90, 0x48, - 0x48, 0xff, 0x12, 0x9, 0x4, 0x80, + 0xb, 0x9, 0x4, 0x8f, 0xf1, 0x20, 0x90, 0x58, + 0x68, 0xff, 0x12, 0x9, 0x4, 0x80, /* U+0024 "$" */ - 0x10, 0x20, 0xf3, 0x34, 0x28, 0x18, 0x1c, 0x4, - 0x6, 0xe, 0x37, 0xc2, 0x4, 0x0, + 0x10, 0x21, 0xf6, 0x7c, 0x78, 0x38, 0x1c, 0xc, + 0xf, 0x1e, 0x37, 0xc2, 0x4, 0x0, /* U+0025 "%" */ - 0x70, 0x22, 0x48, 0x92, 0x28, 0x72, 0x1, 0x0, + 0x70, 0x22, 0x8, 0x92, 0x28, 0x72, 0x1, 0x0, 0x98, 0x29, 0x12, 0x4c, 0x92, 0x24, 0x6, /* U+0026 "&" */ - 0x38, 0x22, 0x11, 0x8, 0x86, 0x81, 0xc1, 0xc1, - 0xb2, 0x8d, 0x43, 0xb1, 0xcf, 0xa0, + 0x3c, 0x33, 0x19, 0x8c, 0xc6, 0xc1, 0xc0, 0xe1, + 0xd3, 0xcd, 0xe3, 0xb8, 0xc7, 0xb0, /* U+0027 "'" */ - 0xf0, + 0xfe, /* U+0028 "(" */ - 0x32, 0x44, 0x88, 0x88, 0x88, 0x88, 0x44, 0x42, - 0x0, + 0x19, 0x98, 0xc4, 0x63, 0x18, 0xc6, 0x31, 0x86, + 0x30, 0xc2, 0x0, /* U+0029 ")" */ - 0xc4, 0x22, 0x11, 0x11, 0x11, 0x11, 0x22, 0x64, - 0x0, + 0xc3, 0x8, 0x61, 0xc, 0x63, 0x18, 0xc6, 0x33, + 0x19, 0x88, 0x0, /* U+002A "*" */ - 0x10, 0x23, 0x51, 0xe3, 0x85, 0x0, 0x0, + 0x25, 0x3e, 0xc5, 0x28, /* U+002B "+" */ - 0x10, 0x10, 0x10, 0xff, 0x10, 0x10, 0x10, 0x10, + 0x18, 0x18, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18, /* U+002C "," */ - 0x56, + 0x6d, 0x20, /* U+002D "-" */ - 0xf0, + 0xf8, /* U+002E "." */ - 0xf0, + 0xc0, /* U+002F "/" */ - 0x4, 0x30, 0x82, 0x10, 0x41, 0x8, 0x21, 0x84, + 0x4, 0x30, 0x82, 0x18, 0x43, 0x8, 0x21, 0x84, 0x10, 0xc0, /* U+0030 "0" */ - 0x38, 0x8a, 0xc, 0x18, 0x30, 0x60, 0xc1, 0x83, - 0x5, 0x11, 0xc0, + 0x38, 0xdb, 0x1e, 0x3c, 0x78, 0xf1, 0xe3, 0xc7, + 0x8d, 0xb1, 0xc0, /* U+0031 "1" */ - 0x1f, 0x91, 0x11, 0x11, 0x11, 0x11, + 0xff, 0x33, 0x33, 0x33, 0x33, 0x33, /* U+0032 "2" */ - 0x3c, 0x8e, 0xc, 0x10, 0x20, 0x83, 0xc, 0x30, - 0xc1, 0x7, 0xf0, + 0x3c, 0xcf, 0x18, 0x30, 0x61, 0x87, 0xc, 0x30, + 0xe3, 0x87, 0xf0, /* U+0033 "3" */ - 0x7d, 0x8e, 0x8, 0x10, 0x67, 0x81, 0x81, 0x3, - 0x7, 0x13, 0xc0, + 0x3d, 0xcf, 0x18, 0x30, 0x43, 0x1, 0x3, 0x7, + 0x8d, 0xb1, 0xc0, /* U+0034 "4" */ - 0x4, 0xc, 0x1c, 0x14, 0x34, 0x24, 0x44, 0xc4, - 0xff, 0x4, 0x4, 0x4, + 0x6, 0xe, 0x1e, 0x16, 0x36, 0x26, 0x66, 0xc6, + 0xff, 0x6, 0x6, 0x6, /* U+0035 "5" */ - 0x7e, 0x81, 0x2, 0x7, 0xc8, 0x80, 0x81, 0x3, - 0x85, 0x11, 0xc0, + 0x7c, 0x81, 0x2, 0x7, 0xc9, 0x81, 0x83, 0x7, + 0x8f, 0xb3, 0xc0, /* U+0036 "6" */ - 0x1c, 0x41, 0x4, 0xb, 0x98, 0xa0, 0xc1, 0x83, - 0x5, 0x11, 0xc0, + 0x3c, 0xc3, 0x6, 0xf, 0xd9, 0xf1, 0xe3, 0xc7, + 0x8d, 0xb1, 0xc0, /* U+0037 "7" */ - 0xff, 0x3, 0x2, 0x6, 0x4, 0xc, 0x8, 0x18, - 0x18, 0x10, 0x30, 0x20, + 0xff, 0x3, 0x6, 0xc, 0x8, 0x18, 0x18, 0x30, + 0x30, 0x30, 0x30, 0x30, /* U+0038 "8" */ - 0x7d, 0x8e, 0xc, 0x1c, 0x6f, 0xb1, 0xc1, 0x83, - 0x7, 0x13, 0xe0, + 0x7c, 0xce, 0xc6, 0xc6, 0x6c, 0x38, 0x66, 0xc3, + 0xc3, 0xc3, 0x66, 0x3c, /* U+0039 "9" */ - 0x38, 0x8a, 0xc, 0x18, 0x30, 0x51, 0x9d, 0x2, - 0x8, 0x33, 0x80, + 0x38, 0xdb, 0x1e, 0x3c, 0x78, 0xdb, 0xbf, 0x6, + 0xc, 0x33, 0xc0, /* U+003A ":" */ - 0xf0, 0x3, 0xc0, + 0xc0, 0x0, 0xc0, /* U+003B ";" */ - 0x6c, 0x0, 0x3, 0x6d, 0x20, + 0xc0, 0xf, 0xa0, /* U+003C "<" */ - 0x6, 0x3d, 0xe6, 0xe, 0x7, 0x81, 0x80, + 0x6, 0x39, 0xc6, 0x7, 0x3, 0xc1, 0x80, /* U+003D "=" */ 0xfe, 0x0, 0x0, 0xf, 0xe0, /* U+003E ">" */ - 0x81, 0xc0, 0xe0, 0x31, 0xce, 0x30, 0x0, + 0x81, 0xc0, 0xf0, 0x31, 0xde, 0x30, 0x0, /* U+003F "?" */ - 0x7b, 0x38, 0x41, 0x4, 0x21, 0x8, 0x20, 0x0, - 0x8, + 0x7d, 0x8f, 0x18, 0x30, 0x61, 0x86, 0x18, 0x30, + 0x0, 0x1, 0x80, /* U+0040 "@" */ - 0xf, 0x80, 0x83, 0x8, 0xc, 0x87, 0x2c, 0x48, - 0xc4, 0x46, 0x22, 0x31, 0x11, 0x98, 0x8c, 0x4c, + 0xf, 0x81, 0x83, 0x8, 0xc, 0x8f, 0x2c, 0xc8, + 0xc4, 0x46, 0x22, 0x31, 0x11, 0x98, 0x8c, 0x44, 0x62, 0x64, 0x9d, 0xc6, 0x0, 0x18, 0x0, 0x3e, 0x0, /* U+0041 "A" */ - 0xc, 0x3, 0x0, 0xe0, 0x68, 0x13, 0x4, 0xc3, - 0x10, 0x86, 0x7f, 0x98, 0x24, 0xf, 0x3, + 0xc, 0x3, 0x0, 0xe0, 0x78, 0x12, 0x4, 0xc3, + 0x30, 0xc4, 0x3f, 0x98, 0x64, 0x9, 0x3, /* U+0042 "B" */ - 0xfd, 0xe, 0xc, 0x18, 0x7f, 0xa1, 0xc1, 0x83, - 0x6, 0x1f, 0xe0, + 0xfc, 0xc7, 0xc3, 0xc3, 0xc6, 0xfc, 0xc6, 0xc3, + 0xc3, 0xc3, 0xc7, 0xfe, /* U+0043 "C" */ - 0x3c, 0x42, 0x43, 0x81, 0x80, 0x80, 0x80, 0x80, - 0x81, 0x43, 0x42, 0x3c, + 0x3e, 0x31, 0x98, 0x78, 0x3c, 0x6, 0x3, 0x1, + 0x80, 0xc1, 0xa0, 0xd8, 0xc7, 0xc0, /* U+0044 "D" */ - 0xf8, 0x86, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x82, 0x86, 0xf8, + 0xfc, 0x63, 0xb0, 0xd8, 0x3c, 0x1e, 0xf, 0x7, + 0x83, 0xc1, 0xe1, 0xb1, 0xdf, 0x80, /* U+0045 "E" */ - 0xff, 0x2, 0x4, 0x8, 0x1f, 0xa0, 0x40, 0x81, - 0x2, 0x7, 0xf0, + 0xff, 0x83, 0x6, 0xc, 0x1f, 0xf0, 0x60, 0xc1, + 0x83, 0x7, 0xf0, /* U+0046 "F" */ - 0xff, 0x2, 0x4, 0x8, 0x10, 0x3f, 0x40, 0x81, - 0x2, 0x4, 0x0, + 0xff, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xfe, 0xc0, + 0xc0, 0xc0, 0xc0, 0xc0, /* U+0047 "G" */ - 0x3e, 0x30, 0x90, 0x30, 0x8, 0x4, 0x2, 0x1f, - 0x1, 0x80, 0xa0, 0x58, 0x63, 0xe0, + 0x3e, 0x31, 0xb0, 0x78, 0x3c, 0x6, 0x3, 0x1f, + 0x83, 0xc1, 0xe0, 0xd8, 0xe7, 0xe0, /* U+0048 "H" */ - 0x81, 0x81, 0x81, 0x81, 0x81, 0xff, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, + 0xc1, 0xe0, 0xf0, 0x78, 0x3c, 0x1e, 0xf, 0xff, + 0x83, 0xc1, 0xe0, 0xf0, 0x78, 0x30, /* U+0049 "I" */ - 0xff, 0xf0, + 0xff, 0xff, 0xff, /* U+004A "J" */ - 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x81, 0x3, - 0x7, 0x13, 0xc0, + 0x6, 0xc, 0x18, 0x30, 0x60, 0xc1, 0x83, 0x7, + 0x8f, 0x33, 0xc0, /* U+004B "K" */ - 0x82, 0x86, 0x8c, 0x98, 0xb0, 0xf0, 0xf0, 0x98, - 0x8c, 0x84, 0x86, 0x83, + 0xc1, 0x61, 0xb1, 0x99, 0x8d, 0x87, 0x83, 0x61, + 0x98, 0xc6, 0x63, 0x30, 0xd8, 0x30, /* U+004C "L" */ - 0x82, 0x8, 0x20, 0x82, 0x8, 0x20, 0x82, 0x8, - 0x3f, + 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, + 0xc0, 0xc0, 0xc0, 0xff, /* U+004D "M" */ - 0xc0, 0x78, 0xf, 0x83, 0xf0, 0x7a, 0xb, 0x63, - 0x64, 0x4c, 0xd9, 0x9b, 0x31, 0x46, 0x38, 0xc2, - 0x10, + 0xe0, 0xfc, 0x1f, 0x83, 0xf8, 0x7d, 0x17, 0xa2, + 0xf4, 0x5e, 0x53, 0xca, 0x79, 0x4f, 0x11, 0xe2, + 0x30, /* U+004E "N" */ - 0x81, 0xc1, 0xe1, 0xe1, 0xb1, 0x99, 0x99, 0x8d, - 0x85, 0x87, 0x83, 0x81, + 0xc1, 0xf0, 0xf8, 0x7e, 0x3d, 0x1e, 0xcf, 0x37, + 0x8b, 0xc7, 0xe1, 0xf0, 0xf8, 0x30, /* U+004F "O" */ - 0x3e, 0x31, 0x90, 0x50, 0x18, 0xc, 0x6, 0x3, - 0x1, 0x80, 0xa0, 0x98, 0xc7, 0xc0, + 0x3e, 0x31, 0xb0, 0x58, 0x3c, 0x1e, 0xf, 0x7, + 0x83, 0xc1, 0xe0, 0x98, 0xc7, 0xc0, /* U+0050 "P" */ - 0xfc, 0x82, 0x81, 0x81, 0x81, 0x82, 0xfc, 0x80, - 0x80, 0x80, 0x80, 0x80, + 0xfc, 0xc6, 0xc3, 0xc3, 0xc3, 0xc6, 0xfc, 0xc0, + 0xc0, 0xc0, 0xc0, 0xc0, /* U+0051 "Q" */ - 0x3e, 0x31, 0x90, 0x50, 0x18, 0xc, 0x6, 0x3, - 0x1, 0x80, 0xa0, 0xd8, 0xc7, 0xe0, 0x18, 0x4, + 0x3e, 0x18, 0xcc, 0x13, 0x6, 0xc1, 0xb0, 0x6c, + 0x1b, 0x6, 0xc1, 0xb0, 0x46, 0x30, 0xf6, 0x0, + 0x80, /* U+0052 "R" */ - 0xfc, 0x41, 0x20, 0x50, 0x28, 0x14, 0x1b, 0xf9, - 0xc, 0x86, 0x41, 0x20, 0xd0, 0x20, + 0xfc, 0xc6, 0xc3, 0xc3, 0xc3, 0xc6, 0xfc, 0xc7, + 0xc3, 0xc3, 0xc3, 0xc3, /* U+0053 "S" */ - 0x1c, 0x62, 0x41, 0x40, 0x60, 0x38, 0xe, 0x3, - 0x1, 0x81, 0x43, 0x3c, + 0x3c, 0x66, 0xc3, 0xc0, 0xe0, 0x7c, 0x1e, 0x7, + 0x3, 0xc3, 0x67, 0x3c, /* U+0054 "T" */ - 0xff, 0x84, 0x2, 0x1, 0x0, 0x80, 0x40, 0x20, - 0x10, 0x8, 0x4, 0x2, 0x1, 0x0, + 0xff, 0x8c, 0x6, 0x3, 0x1, 0x80, 0xc0, 0x60, + 0x30, 0x18, 0xc, 0x6, 0x3, 0x0, /* U+0055 "U" */ - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x42, 0x3c, + 0xc1, 0xe0, 0xf0, 0x78, 0x3c, 0x1e, 0xf, 0x7, + 0x83, 0xc1, 0xe0, 0xd8, 0xc7, 0xc0, /* U+0056 "V" */ - 0xc0, 0xd0, 0x26, 0x9, 0x86, 0x21, 0xc, 0x41, - 0x30, 0x48, 0x1a, 0x3, 0x80, 0xc0, 0x30, + 0xc0, 0xd0, 0x26, 0x19, 0x86, 0x21, 0xc, 0xc3, + 0x30, 0x48, 0x1e, 0x3, 0x80, 0xc0, 0x30, /* U+0057 "W" */ - 0x43, 0xd, 0xc, 0x36, 0x30, 0x98, 0xe2, 0x26, - 0x98, 0x92, 0x62, 0x4d, 0xd, 0x14, 0x3c, 0x50, - 0x61, 0xc1, 0x86, 0x6, 0x8, + 0xc3, 0x9, 0xc, 0x64, 0x71, 0x99, 0xe6, 0x65, + 0x90, 0x92, 0x42, 0xcb, 0xf, 0x3c, 0x38, 0xf0, + 0xe1, 0x81, 0x86, 0x6, 0x18, /* U+0058 "X" */ - 0x61, 0x98, 0x63, 0x30, 0x48, 0x1e, 0x3, 0x0, - 0xc0, 0x78, 0x12, 0xc, 0xc6, 0x19, 0x82, + 0xc3, 0x61, 0x99, 0x84, 0x83, 0xc0, 0xc0, 0x60, + 0x78, 0x26, 0x33, 0x30, 0xd8, 0x20, /* U+0059 "Y" */ - 0xc1, 0xa0, 0x98, 0xc4, 0x43, 0x60, 0xa0, 0x70, - 0x10, 0x8, 0x4, 0x2, 0x1, 0x0, + 0xc0, 0xd8, 0x66, 0x18, 0xcc, 0x33, 0x7, 0x81, + 0xe0, 0x30, 0xc, 0x3, 0x0, 0xc0, 0x30, /* U+005A "Z" */ 0xff, 0x3, 0x6, 0x4, 0xc, 0x18, 0x18, 0x30, 0x20, 0x60, 0xc0, 0xff, /* U+005B "[" */ - 0xf2, 0x49, 0x24, 0x92, 0x49, 0x27, + 0xfb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb7, /* U+005C "\\" */ - 0xc1, 0x6, 0x8, 0x20, 0xc1, 0x4, 0x18, 0x20, - 0xc1, 0x4, + 0xc0, 0x81, 0x81, 0x2, 0x6, 0x4, 0xc, 0x18, + 0x10, 0x30, 0x20, 0x40, /* U+005D "]" */ - 0xe4, 0x92, 0x49, 0x24, 0x92, 0x4f, + 0xed, 0xb6, 0xdb, 0x6d, 0xb6, 0xdf, /* U+005E "^" */ 0x10, 0xc3, 0x9a, 0x4d, 0x10, @@ -263,111 +264,113 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { 0xfe, /* U+0060 "`" */ - 0xc6, 0x20, + 0xc8, /* U+0061 "a" */ - 0x7b, 0x38, 0x41, 0x7f, 0x18, 0x63, 0x7c, + 0x3c, 0xcd, 0x18, 0x37, 0xf8, 0xf1, 0xe7, 0x76, /* U+0062 "b" */ - 0x81, 0x2, 0x5, 0xcc, 0x50, 0x60, 0xc1, 0x83, - 0x7, 0x17, 0xc0, + 0xc1, 0x83, 0x6, 0xf, 0xd9, 0xb1, 0xe3, 0xc7, + 0x8f, 0x1e, 0x6f, 0xc0, /* U+0063 "c" */ - 0x3c, 0x8e, 0x1c, 0x8, 0x10, 0x20, 0xa3, 0x3c, + 0x3c, 0xdf, 0x1e, 0xc, 0x18, 0x31, 0xb3, 0x3c, /* U+0064 "d" */ - 0x2, 0x4, 0x9, 0xf4, 0x70, 0x60, 0xc1, 0x83, - 0x5, 0x19, 0xf0, + 0x6, 0xc, 0x18, 0x37, 0xec, 0xf1, 0xe3, 0xc7, + 0x8f, 0x1b, 0x37, 0xe0, /* U+0065 "e" */ - 0x38, 0x8a, 0xc, 0x1f, 0xf0, 0x20, 0x21, 0x3c, + 0x38, 0xdb, 0x1e, 0x3f, 0xf8, 0x30, 0x30, 0x3c, /* U+0066 "f" */ - 0x19, 0x8, 0x4f, 0x90, 0x84, 0x21, 0x8, 0x42, + 0x3b, 0x18, 0xcf, 0x31, 0x8c, 0x63, 0x18, 0xc6, 0x0, /* U+0067 "g" */ - 0x3e, 0x8e, 0xc, 0x18, 0x30, 0x60, 0xa3, 0x3e, - 0x7, 0x13, 0xc0, + 0x7e, 0xcf, 0x1e, 0x3c, 0x78, 0xf1, 0xb3, 0x7e, + 0xd, 0x1b, 0xe0, /* U+0068 "h" */ - 0x82, 0x8, 0x2e, 0xc6, 0x18, 0x61, 0x86, 0x18, - 0x61, + 0xc1, 0x83, 0x6, 0xd, 0xdc, 0xf1, 0xe3, 0xc7, + 0x8f, 0x1e, 0x3c, 0x60, /* U+0069 "i" */ - 0x9f, 0xf0, + 0xc0, 0xff, 0xff, 0xc0, /* U+006A "j" */ - 0x20, 0x12, 0x49, 0x24, 0x92, 0x70, + 0x30, 0x0, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3e, /* U+006B "k" */ - 0x81, 0x2, 0x4, 0x69, 0x96, 0x38, 0x70, 0xb1, - 0x32, 0x34, 0x60, + 0xc1, 0x83, 0x6, 0xc, 0x79, 0xb2, 0x6c, 0xf1, + 0xb3, 0x36, 0x2c, 0x60, /* U+006C "l" */ - 0xff, 0xf0, + 0xff, 0xff, 0xff, 0xc0, /* U+006D "m" */ - 0xfb, 0xd8, 0xc6, 0x10, 0xc2, 0x18, 0x43, 0x8, - 0x61, 0xc, 0x21, 0x84, 0x20, + 0xdd, 0xee, 0x73, 0xc6, 0x3c, 0x63, 0xc6, 0x3c, + 0x63, 0xc6, 0x3c, 0x63, 0xc6, 0x30, /* U+006E "n" */ - 0xbb, 0x18, 0x61, 0x86, 0x18, 0x61, 0x84, + 0xdd, 0xcf, 0x1e, 0x3c, 0x78, 0xf1, 0xe3, 0xc6, /* U+006F "o" */ - 0x38, 0x8a, 0xc, 0x18, 0x30, 0x60, 0xa2, 0x38, + 0x3c, 0x66, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x66, + 0x3c, /* U+0070 "p" */ - 0xf9, 0x8a, 0xc, 0x18, 0x30, 0x60, 0xe2, 0xf9, - 0x2, 0x4, 0x0, + 0xfd, 0x9b, 0x1e, 0x3c, 0x78, 0xf1, 0xe6, 0xfd, + 0x83, 0x6, 0x0, /* U+0071 "q" */ - 0x3e, 0x8e, 0xc, 0x18, 0x30, 0x60, 0xa3, 0x3e, - 0x4, 0x8, 0x10, + 0x7e, 0xcf, 0x1e, 0x3c, 0x78, 0xf1, 0xb3, 0x7e, + 0xc, 0x18, 0x30, /* U+0072 "r" */ - 0xfc, 0x88, 0x88, 0x88, 0x80, + 0xfe, 0x31, 0x8c, 0x63, 0x18, 0xc0, /* U+0073 "s" */ - 0x39, 0x14, 0x58, 0x38, 0x38, 0x71, 0x78, + 0x7d, 0x8f, 0x1f, 0x7, 0xc1, 0xf1, 0xe3, 0x7c, /* U+0074 "t" */ - 0x21, 0x3e, 0x42, 0x10, 0x84, 0x21, 0x6, + 0x66, 0xf6, 0x66, 0x66, 0x66, 0x30, /* U+0075 "u" */ - 0x86, 0x18, 0x61, 0x86, 0x18, 0x63, 0x7c, + 0xc7, 0x8f, 0x1e, 0x3c, 0x78, 0xf1, 0xe7, 0x76, /* U+0076 "v" */ - 0xc2, 0x85, 0x9b, 0x22, 0x45, 0x8e, 0xc, 0x18, + 0x43, 0x42, 0x66, 0x26, 0x24, 0x34, 0x1c, 0x18, + 0x18, /* U+0077 "w" */ - 0xc6, 0x34, 0x62, 0x46, 0x26, 0xf6, 0x29, 0x42, - 0x94, 0x39, 0xc3, 0xc, 0x10, 0x80, + 0xc6, 0x34, 0x62, 0x66, 0x26, 0xf6, 0x29, 0x62, + 0x94, 0x29, 0x43, 0x8c, 0x10, 0x80, /* U+0078 "x" */ - 0x42, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x2c, 0x66, + 0x46, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x34, 0x66, 0x42, /* U+0079 "y" */ - 0x87, 0x8b, 0x32, 0x66, 0x8d, 0xe, 0x18, 0x30, - 0x40, 0x86, 0x0, + 0xc3, 0x42, 0x66, 0x66, 0x24, 0x3c, 0x1c, 0x18, + 0x18, 0x10, 0x30, 0x60, /* U+007A "z" */ - 0xfe, 0xc, 0x30, 0xc3, 0x6, 0x18, 0x60, 0xfe, + 0xfc, 0x18, 0x60, 0x83, 0x4, 0x18, 0x60, 0xfe, /* U+007B "{" */ - 0x19, 0x8, 0x42, 0x10, 0x98, 0x21, 0x8, 0x42, - 0x10, 0x60, + 0x1c, 0xc3, 0xc, 0x30, 0xc3, 0x30, 0x30, 0xc3, + 0xc, 0x30, 0xc1, 0xc0, /* U+007C "|" */ - 0xff, 0xfc, + 0xff, 0xff, 0xff, 0xf0, /* U+007D "}" */ - 0xc1, 0x8, 0x42, 0x10, 0xc3, 0x31, 0x8, 0x42, - 0x13, 0x0, + 0xe1, 0x8c, 0x63, 0x18, 0xc1, 0x31, 0x8c, 0x63, + 0x1b, 0x80, /* U+007E "~" */ - 0x70, 0xcc, 0x61, 0xc0, + 0x70, 0xc4, 0x61, 0xc0, /* U+F00C "" */ 0x0, 0x6, 0x0, 0xf, 0x0, 0x1f, 0x0, 0x3e, @@ -419,109 +422,109 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { {.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */, - {.bitmap_index = 0, .adv_w = 63, .box_w = 1, .box_h = 1, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1, .adv_w = 66, .box_w = 1, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 3, .adv_w = 82, .box_w = 3, .box_h = 4, .ofs_x = 1, .ofs_y = 8}, - {.bitmap_index = 5, .adv_w = 158, .box_w = 9, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 19, .adv_w = 144, .box_w = 7, .box_h = 15, .ofs_x = 1, .ofs_y = -2}, - {.bitmap_index = 33, .adv_w = 188, .box_w = 10, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 48, .adv_w = 159, .box_w = 9, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 62, .adv_w = 45, .box_w = 1, .box_h = 4, .ofs_x = 1, .ofs_y = 8}, - {.bitmap_index = 63, .adv_w = 88, .box_w = 4, .box_h = 17, .ofs_x = 1, .ofs_y = -4}, - {.bitmap_index = 72, .adv_w = 89, .box_w = 4, .box_h = 17, .ofs_x = 0, .ofs_y = -4}, - {.bitmap_index = 81, .adv_w = 110, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 5}, - {.bitmap_index = 88, .adv_w = 145, .box_w = 8, .box_h = 8, .ofs_x = 1, .ofs_y = 1}, - {.bitmap_index = 96, .adv_w = 50, .box_w = 2, .box_h = 4, .ofs_x = 0, .ofs_y = -2}, - {.bitmap_index = 97, .adv_w = 71, .box_w = 4, .box_h = 1, .ofs_x = 1, .ofs_y = 5}, - {.bitmap_index = 98, .adv_w = 67, .box_w = 2, .box_h = 2, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 99, .adv_w = 106, .box_w = 6, .box_h = 13, .ofs_x = 0, .ofs_y = -1}, - {.bitmap_index = 109, .adv_w = 144, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 120, .adv_w = 144, .box_w = 4, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 126, .adv_w = 144, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 137, .adv_w = 144, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 148, .adv_w = 144, .box_w = 8, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 160, .adv_w = 144, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 171, .adv_w = 144, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 182, .adv_w = 144, .box_w = 8, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 194, .adv_w = 144, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 205, .adv_w = 144, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 216, .adv_w = 62, .box_w = 2, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 219, .adv_w = 54, .box_w = 3, .box_h = 12, .ofs_x = 0, .ofs_y = -3}, - {.bitmap_index = 224, .adv_w = 130, .box_w = 7, .box_h = 7, .ofs_x = 1, .ofs_y = 2}, - {.bitmap_index = 231, .adv_w = 141, .box_w = 7, .box_h = 5, .ofs_x = 1, .ofs_y = 3}, - {.bitmap_index = 236, .adv_w = 134, .box_w = 7, .box_h = 7, .ofs_x = 1, .ofs_y = 2}, - {.bitmap_index = 243, .adv_w = 121, .box_w = 6, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 252, .adv_w = 230, .box_w = 13, .box_h = 15, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 277, .adv_w = 167, .box_w = 10, .box_h = 12, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 292, .adv_w = 159, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 303, .adv_w = 167, .box_w = 8, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 315, .adv_w = 168, .box_w = 8, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 327, .adv_w = 146, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 338, .adv_w = 142, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 349, .adv_w = 174, .box_w = 9, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 363, .adv_w = 183, .box_w = 8, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 375, .adv_w = 70, .box_w = 1, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 377, .adv_w = 141, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 388, .adv_w = 161, .box_w = 8, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 400, .adv_w = 138, .box_w = 6, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 409, .adv_w = 224, .box_w = 11, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 426, .adv_w = 183, .box_w = 8, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 438, .adv_w = 176, .box_w = 9, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 452, .adv_w = 162, .box_w = 8, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 464, .adv_w = 176, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = -2}, - {.bitmap_index = 480, .adv_w = 158, .box_w = 9, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 494, .adv_w = 152, .box_w = 8, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 506, .adv_w = 153, .box_w = 9, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 520, .adv_w = 166, .box_w = 8, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 532, .adv_w = 163, .box_w = 10, .box_h = 12, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 547, .adv_w = 227, .box_w = 14, .box_h = 12, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 568, .adv_w = 161, .box_w = 10, .box_h = 12, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 583, .adv_w = 154, .box_w = 9, .box_h = 12, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 597, .adv_w = 153, .box_w = 8, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 609, .adv_w = 68, .box_w = 3, .box_h = 16, .ofs_x = 1, .ofs_y = -2}, - {.bitmap_index = 615, .adv_w = 105, .box_w = 6, .box_h = 13, .ofs_x = 0, .ofs_y = -1}, - {.bitmap_index = 625, .adv_w = 68, .box_w = 3, .box_h = 16, .ofs_x = 0, .ofs_y = -2}, - {.bitmap_index = 631, .adv_w = 107, .box_w = 6, .box_h = 6, .ofs_x = 0, .ofs_y = 6}, - {.bitmap_index = 636, .adv_w = 116, .box_w = 7, .box_h = 1, .ofs_x = 1, .ofs_y = -1}, - {.bitmap_index = 637, .adv_w = 79, .box_w = 4, .box_h = 3, .ofs_x = 0, .ofs_y = 10}, - {.bitmap_index = 639, .adv_w = 139, .box_w = 6, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 646, .adv_w = 144, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 657, .adv_w = 134, .box_w = 7, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 665, .adv_w = 144, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 676, .adv_w = 136, .box_w = 7, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 684, .adv_w = 89, .box_w = 5, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 693, .adv_w = 144, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 704, .adv_w = 141, .box_w = 6, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 713, .adv_w = 62, .box_w = 1, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 715, .adv_w = 61, .box_w = 3, .box_h = 15, .ofs_x = -1, .ofs_y = -3}, - {.bitmap_index = 721, .adv_w = 130, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 732, .adv_w = 62, .box_w = 1, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 734, .adv_w = 224, .box_w = 11, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 747, .adv_w = 141, .box_w = 6, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 754, .adv_w = 146, .box_w = 7, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 762, .adv_w = 144, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 773, .adv_w = 146, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 784, .adv_w = 87, .box_w = 4, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 789, .adv_w = 132, .box_w = 6, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 796, .adv_w = 84, .box_w = 5, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 803, .adv_w = 141, .box_w = 6, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 810, .adv_w = 124, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 818, .adv_w = 192, .box_w = 12, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 832, .adv_w = 127, .box_w = 8, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 841, .adv_w = 121, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 852, .adv_w = 127, .box_w = 7, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 860, .adv_w = 87, .box_w = 5, .box_h = 15, .ofs_x = 0, .ofs_y = -2}, - {.bitmap_index = 870, .adv_w = 62, .box_w = 1, .box_h = 14, .ofs_x = 1, .ofs_y = -2}, - {.bitmap_index = 872, .adv_w = 87, .box_w = 5, .box_h = 15, .ofs_x = 0, .ofs_y = -2}, - {.bitmap_index = 882, .adv_w = 174, .box_w = 9, .box_h = 3, .ofs_x = 1, .ofs_y = 3}, - {.bitmap_index = 886, .adv_w = 256, .box_w = 16, .box_h = 12, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 910, .adv_w = 176, .box_w = 11, .box_h = 11, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 926, .adv_w = 160, .box_w = 10, .box_h = 16, .ofs_x = 0, .ofs_y = -2}, - {.bitmap_index = 946, .adv_w = 192, .box_w = 12, .box_h = 16, .ofs_x = 0, .ofs_y = -2}, - {.bitmap_index = 970, .adv_w = 320, .box_w = 20, .box_h = 14, .ofs_x = 0, .ofs_y = -1}, - {.bitmap_index = 1005, .adv_w = 320, .box_w = 20, .box_h = 12, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1035, .adv_w = 192, .box_w = 12, .box_h = 16, .ofs_x = 0, .ofs_y = -2}, - {.bitmap_index = 1059, .adv_w = 258, .box_w = 17, .box_h = 10, .ofs_x = -1, .ofs_y = 1} + {.bitmap_index = 0, .adv_w = 64, .box_w = 1, .box_h = 1, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1, .adv_w = 67, .box_w = 2, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 4, .adv_w = 92, .box_w = 4, .box_h = 4, .ofs_x = 1, .ofs_y = 8}, + {.bitmap_index = 6, .adv_w = 160, .box_w = 9, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 20, .adv_w = 149, .box_w = 7, .box_h = 15, .ofs_x = 1, .ofs_y = -2}, + {.bitmap_index = 34, .adv_w = 187, .box_w = 10, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 49, .adv_w = 160, .box_w = 9, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 63, .adv_w = 56, .box_w = 2, .box_h = 4, .ofs_x = 1, .ofs_y = 8}, + {.bitmap_index = 64, .adv_w = 85, .box_w = 5, .box_h = 17, .ofs_x = 1, .ofs_y = -4}, + {.bitmap_index = 75, .adv_w = 86, .box_w = 5, .box_h = 17, .ofs_x = 0, .ofs_y = -4}, + {.bitmap_index = 86, .adv_w = 111, .box_w = 5, .box_h = 6, .ofs_x = 1, .ofs_y = 3}, + {.bitmap_index = 90, .adv_w = 145, .box_w = 8, .box_h = 8, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 98, .adv_w = 51, .box_w = 3, .box_h = 4, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 100, .adv_w = 115, .box_w = 5, .box_h = 1, .ofs_x = 1, .ofs_y = 5}, + {.bitmap_index = 101, .adv_w = 69, .box_w = 2, .box_h = 1, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 102, .adv_w = 106, .box_w = 6, .box_h = 13, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 112, .adv_w = 144, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 123, .adv_w = 144, .box_w = 4, .box_h = 12, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 129, .adv_w = 144, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 140, .adv_w = 144, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 151, .adv_w = 144, .box_w = 8, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 163, .adv_w = 144, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 174, .adv_w = 144, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 185, .adv_w = 144, .box_w = 8, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 197, .adv_w = 144, .box_w = 8, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 209, .adv_w = 144, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 220, .adv_w = 65, .box_w = 2, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 223, .adv_w = 66, .box_w = 2, .box_h = 10, .ofs_x = 1, .ofs_y = -1}, + {.bitmap_index = 226, .adv_w = 130, .box_w = 7, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 233, .adv_w = 144, .box_w = 7, .box_h = 5, .ofs_x = 1, .ofs_y = 3}, + {.bitmap_index = 238, .adv_w = 134, .box_w = 7, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 245, .adv_w = 122, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 256, .adv_w = 229, .box_w = 13, .box_h = 15, .ofs_x = 1, .ofs_y = -3}, + {.bitmap_index = 281, .adv_w = 162, .box_w = 10, .box_h = 12, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 296, .adv_w = 163, .box_w = 8, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 308, .adv_w = 162, .box_w = 9, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 322, .adv_w = 173, .box_w = 9, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 336, .adv_w = 141, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 347, .adv_w = 141, .box_w = 8, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 359, .adv_w = 173, .box_w = 9, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 373, .adv_w = 180, .box_w = 9, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 387, .adv_w = 72, .box_w = 2, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 390, .adv_w = 140, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 401, .adv_w = 163, .box_w = 9, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 415, .adv_w = 141, .box_w = 8, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 427, .adv_w = 222, .box_w = 11, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 444, .adv_w = 180, .box_w = 9, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 458, .adv_w = 175, .box_w = 9, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 472, .adv_w = 163, .box_w = 8, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 484, .adv_w = 178, .box_w = 10, .box_h = 13, .ofs_x = 1, .ofs_y = -1}, + {.bitmap_index = 501, .adv_w = 163, .box_w = 8, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 513, .adv_w = 157, .box_w = 8, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 525, .adv_w = 153, .box_w = 9, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 539, .adv_w = 173, .box_w = 9, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 553, .adv_w = 162, .box_w = 10, .box_h = 12, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 568, .adv_w = 220, .box_w = 14, .box_h = 12, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 589, .adv_w = 162, .box_w = 9, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 603, .adv_w = 162, .box_w = 10, .box_h = 12, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 618, .adv_w = 153, .box_w = 8, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 630, .adv_w = 69, .box_w = 3, .box_h = 16, .ofs_x = 1, .ofs_y = -2}, + {.bitmap_index = 636, .adv_w = 106, .box_w = 7, .box_h = 13, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 648, .adv_w = 69, .box_w = 3, .box_h = 16, .ofs_x = 1, .ofs_y = -2}, + {.bitmap_index = 654, .adv_w = 107, .box_w = 6, .box_h = 6, .ofs_x = 0, .ofs_y = 6}, + {.bitmap_index = 659, .adv_w = 116, .box_w = 7, .box_h = 1, .ofs_x = 1, .ofs_y = -1}, + {.bitmap_index = 660, .adv_w = 80, .box_w = 3, .box_h = 2, .ofs_x = 1, .ofs_y = 10}, + {.bitmap_index = 661, .adv_w = 141, .box_w = 7, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 669, .adv_w = 146, .box_w = 7, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 681, .adv_w = 134, .box_w = 7, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 689, .adv_w = 146, .box_w = 7, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 701, .adv_w = 134, .box_w = 7, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 709, .adv_w = 84, .box_w = 5, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 718, .adv_w = 146, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = -3}, + {.bitmap_index = 729, .adv_w = 146, .box_w = 7, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 741, .adv_w = 65, .box_w = 2, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 745, .adv_w = 66, .box_w = 4, .box_h = 16, .ofs_x = -1, .ofs_y = -3}, + {.bitmap_index = 753, .adv_w = 131, .box_w = 7, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 765, .adv_w = 65, .box_w = 2, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 769, .adv_w = 224, .box_w = 12, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 783, .adv_w = 146, .box_w = 7, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 791, .adv_w = 146, .box_w = 8, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 800, .adv_w = 146, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = -3}, + {.bitmap_index = 811, .adv_w = 146, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = -3}, + {.bitmap_index = 822, .adv_w = 90, .box_w = 5, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 828, .adv_w = 134, .box_w = 7, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 836, .adv_w = 86, .box_w = 4, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 842, .adv_w = 146, .box_w = 7, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 850, .adv_w = 129, .box_w = 8, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 859, .adv_w = 194, .box_w = 12, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 873, .adv_w = 129, .box_w = 8, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 882, .adv_w = 129, .box_w = 8, .box_h = 12, .ofs_x = 0, .ofs_y = -3}, + {.bitmap_index = 894, .adv_w = 129, .box_w = 7, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 902, .adv_w = 87, .box_w = 6, .box_h = 15, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 914, .adv_w = 63, .box_w = 2, .box_h = 14, .ofs_x = 1, .ofs_y = -2}, + {.bitmap_index = 918, .adv_w = 87, .box_w = 5, .box_h = 15, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 928, .adv_w = 174, .box_w = 9, .box_h = 3, .ofs_x = 1, .ofs_y = 3}, + {.bitmap_index = 932, .adv_w = 256, .box_w = 16, .box_h = 12, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 956, .adv_w = 176, .box_w = 11, .box_h = 11, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 972, .adv_w = 160, .box_w = 10, .box_h = 16, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 992, .adv_w = 192, .box_w = 12, .box_h = 16, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 1016, .adv_w = 320, .box_w = 20, .box_h = 14, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1051, .adv_w = 320, .box_w = 20, .box_h = 12, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1081, .adv_w = 192, .box_w = 12, .box_h = 16, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 1105, .adv_w = 258, .box_w = 17, .box_h = 10, .ofs_x = -1, .ofs_y = 1} }; /*--------------------- @@ -553,201 +556,175 @@ static const lv_font_fmt_txt_cmap_t cmaps[] = /*Map glyph_ids to kern left classes*/ static const uint8_t kern_left_class_mapping[] = { - 0, 1, 0, 2, 0, 0, 0, 0, - 2, 3, 0, 0, 0, 4, 0, 4, - 5, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, + 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 6, 7, 8, 9, 10, 11, - 0, 12, 12, 13, 14, 15, 12, 12, - 9, 16, 17, 18, 0, 19, 13, 20, - 21, 22, 23, 24, 25, 0, 0, 0, - 0, 0, 26, 27, 28, 0, 29, 30, - 0, 31, 0, 0, 32, 0, 31, 31, - 33, 27, 0, 34, 0, 35, 0, 36, - 37, 38, 36, 39, 40, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 4, 5, 6, 7, 8, + 0, 9, 9, 10, 11, 12, 9, 9, + 6, 13, 14, 15, 0, 16, 10, 17, + 18, 19, 20, 21, 22, 0, 0, 0, + 0, 0, 23, 24, 25, 0, 26, 27, + 0, 28, 0, 0, 29, 0, 28, 28, + 30, 24, 0, 31, 0, 0, 0, 32, + 33, 34, 32, 35, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; /*Map glyph_ids to kern right classes*/ static const uint8_t kern_right_class_mapping[] = { - 0, 1, 0, 2, 0, 0, 0, 3, - 2, 0, 4, 5, 0, 6, 7, 6, - 8, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 2, + 1, 0, 3, 4, 0, 5, 6, 5, 0, 0, 0, 0, 0, 0, 0, 0, - 9, 0, 10, 0, 11, 0, 0, 0, - 11, 0, 0, 12, 0, 0, 0, 0, - 11, 0, 11, 0, 13, 14, 15, 16, - 17, 18, 19, 20, 0, 0, 21, 0, - 0, 0, 22, 0, 23, 23, 23, 24, - 23, 0, 0, 0, 0, 0, 25, 25, - 26, 25, 23, 27, 28, 29, 30, 31, - 32, 33, 31, 34, 0, 0, 35, 0, + 0, 0, 0, 5, 0, 0, 0, 0, + 7, 0, 8, 0, 9, 0, 0, 0, + 9, 0, 0, 10, 0, 0, 0, 0, + 9, 0, 9, 0, 11, 12, 13, 14, + 15, 16, 17, 18, 0, 0, 19, 0, + 0, 0, 20, 0, 21, 21, 21, 22, + 21, 0, 0, 0, 0, 0, 23, 23, + 24, 23, 21, 25, 26, 27, 28, 29, + 30, 31, 29, 32, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; /*Kern values between classes*/ static const int8_t kern_class_values[] = { + -13, 0, 0, 0, 0, 0, 0, -13, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -5, 0, 0, + 0, 0, 0, -6, -7, 0, -2, -8, + 0, -5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3, 2, + 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -13, 0, 0, 0, - 0, 0, 0, 0, -15, 0, 0, 0, + 0, 0, -10, 0, 0, 0, 0, 0, + -8, 0, -1, 0, 0, -16, -2, -11, + -9, 0, -12, 0, 0, 0, 0, 0, + 0, -1, 0, 0, -2, -1, -6, -4, + 0, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -3, 0, + -3, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -6, -7, 0, -2, -8, 0, -10, 0, - 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -3, 0, + 0, 0, 0, 0, 0, 0, 0, -4, + 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3, 2, 0, - 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -21, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -2, 0, 0, 0, + 0, -13, 0, 0, -3, 0, 0, 0, + -3, 0, -3, 0, -3, -5, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -28, 0, 0, 0, 0, + 0, 0, -2, -2, 0, -2, 0, 0, + 0, -2, -3, -3, 0, 0, 0, 0, + 0, 0, 0, -29, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - -15, 0, 0, 0, 0, 0, 0, -8, - 0, -1, 0, 0, -16, -2, -11, -9, - 0, -12, 0, 0, 0, 0, 0, 0, - -1, 0, 0, -2, -1, -6, -4, 0, - 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -3, - 0, -3, 0, 0, -7, 0, 0, 0, + 0, 0, -4, -3, 0, 0, -3, -3, + 0, 0, -3, -3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, + 0, 0, 0, -4, 0, 0, 0, 2, + -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -8, 0, 0, -4, 0, 0, 0, 0, 0, - 0, -1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -2, - 0, 0, 0, 0, 0, -13, 0, 0, - 0, -3, 0, 0, 0, -3, 0, -3, - 0, -3, -5, -3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -3, 0, + -3, -3, 0, 0, 0, -3, -5, -8, + 0, 0, 0, -17, 0, 0, 0, 0, + 0, 0, 2, -8, 0, 0, -34, -7, + -22, -18, 0, -30, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -5, -17, + -11, 0, 0, 0, 0, 0, 0, 0, + -40, 0, 0, -17, 0, 0, 0, 0, + 0, 0, 0, -4, 0, -3, 0, -1, + -2, 0, 0, -2, 0, 0, 2, 0, + 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + -5, 0, -3, -2, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, - 0, -2, -2, 0, -2, 0, 0, 0, - -2, -3, -3, 0, 0, 0, 0, 0, - 0, 0, 0, -29, 0, 0, 0, -21, - 0, -33, 0, 3, 0, 0, 0, 0, - 0, 0, 0, -4, -3, 0, 0, -3, - -3, 0, 0, -3, -3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2, 0, 0, 0, -4, 0, - 0, 0, 2, -3, 0, 0, 0, 0, + 0, -10, 0, -2, 0, 0, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -8, 0, 0, - 0, -4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -3, 0, -3, - -3, 0, 0, 0, -3, -5, -8, 0, - 0, 0, 0, -42, 0, 0, 0, 0, - 0, 0, 0, 2, -8, 0, 0, -34, - -7, -22, -18, 0, -30, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -5, - -17, -11, 0, 0, 0, 0, 0, 0, - 0, 0, -40, 0, 0, 0, -17, 0, - -25, 0, 0, 0, 0, 0, -4, 0, - -3, 0, -1, -2, 0, 0, -2, 0, - 0, 2, 0, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -5, 0, -3, - -2, 0, -4, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - -10, 0, -2, 0, 0, -6, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -5, 0, - 0, 0, 0, -27, -29, 0, 0, -10, - -3, -30, -2, 2, 0, 2, 2, 0, - 2, 0, 0, -14, -12, 0, -14, -12, - -9, -14, 0, -12, -9, -7, -10, -7, - 0, 0, 0, 0, 3, 0, -28, -5, - 0, 0, -9, -2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2, -6, -5, - 0, 0, -6, -4, 0, 0, -3, -1, - 0, 0, 0, 2, 0, 0, 0, 2, - 0, -15, -7, 0, 0, -5, 0, 0, - 0, 2, 0, 0, 0, 0, 0, 0, - 2, -4, -4, 0, 0, -4, -3, 0, - 0, -2, 0, 0, 0, 0, 2, 0, - 0, 0, 0, 0, 0, -6, 0, 0, - 0, -3, 0, 0, 0, 0, 2, 0, - 0, 0, 0, 0, 0, -3, 0, 0, - -3, 0, 0, 0, -3, -4, 0, 0, + 0, 0, 0, -27, -29, 0, -10, -3, + 0, -2, 2, 0, 2, 2, 0, 2, + 0, 0, -14, -12, 0, -14, -12, -9, + -14, 0, -12, -9, -7, -10, -7, 0, + 0, 0, 3, 0, -28, -5, 0, -9, + -2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, -6, -5, 0, 0, -6, + -4, 0, 0, -3, -1, 0, 0, 0, + 2, 0, 0, 2, 0, -15, -7, 0, + -5, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 2, -4, -4, 0, 0, + -4, -3, 0, 0, -2, 0, 0, 0, + 0, 2, 0, 0, 0, 0, 0, -6, + 0, 0, -3, 0, 0, 0, 0, 2, + 0, 0, 0, 0, 0, 0, -3, 0, + 0, -3, 0, 0, 0, -3, -4, 0, 0, 0, 0, 0, -4, 3, -6, -26, - -6, 0, 0, -12, -4, -12, -2, 2, - -12, 2, 2, 2, 2, 0, 2, -9, - -8, -3, -5, -8, -5, -7, -3, -5, - -2, 0, -3, -4, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2, -3, + -6, 0, -10, -4, -12, -2, 2, -12, + 2, 2, 2, 2, 0, 2, -9, -8, + -3, -5, -8, -5, -7, -3, -5, -2, + 0, -3, -4, 2, 0, 0, 0, 0, + 0, 0, 0, 2, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -3, 0, 0, -3, 0, - 0, 0, -2, -3, -3, 0, 0, 0, + -3, 0, 0, -3, 0, 0, 0, -2, + -3, -3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -2, 0, + 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -2, 0, 0, -2, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -8, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -2, 0, 0, 0, 0, 0, -4, + 0, 0, -2, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -1, 0, -2, -2, - 0, 0, -1, 0, 0, 0, 0, 0, + 0, 0, 0, -1, 0, -2, -2, 0, + -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -2, 0, 0, + 0, 0, 2, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, -3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, -2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -2, 0, 0, 0, 0, 0, - 2, 0, 3, 0, 0, 0, 0, 0, + 0, -2, 0, -3, -2, 0, 2, 0, + 0, 0, -15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2, 0, -3, 0, 0, + 0, 0, -2, 2, 0, -2, 0, 0, + 2, 0, 2, 2, 0, 0, 0, 2, + 0, 0, 0, -13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2, 0, -13, 0, 0, 0, 0, + 0, 0, -2, -2, 2, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, -17, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -2, 0, - -3, -2, 0, 0, 2, 0, 0, 0, - -15, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - -5, -2, 2, 0, -2, 0, 0, 6, - 0, 2, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -2, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2, 0, 0, 0, -13, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -2, -2, - 2, 0, -2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, -15, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -757,13 +734,13 @@ static const int8_t kern_class_values[] = -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -2, 0, + 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -2, 0, 0, -2, 0, 0, 0, 0, + 0, 0, 0, 0, -2, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -2, 0, 0, -2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0 + 0, 0, 0, 0 }; @@ -773,8 +750,8 @@ static const lv_font_fmt_txt_kern_classes_t kern_classes = .class_pair_values = kern_class_values, .left_class_mapping = kern_left_class_mapping, .right_class_mapping = kern_right_class_mapping, - .left_class_cnt = 40, - .right_class_cnt = 35, + .left_class_cnt = 36, + .right_class_cnt = 33, }; /*-------------------- diff --git a/radio/src/gui/colorlcd/boot_menu.cpp b/radio/src/gui/colorlcd/boot_menu.cpp new file mode 100644 index 000000000..b16897771 --- /dev/null +++ b/radio/src/gui/colorlcd/boot_menu.cpp @@ -0,0 +1,448 @@ +/* + * Copyright (C) EdgeTX + * + * Based on code named + * opentx - https://github.com/opentx/opentx + * 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 "board.h" +#include "fw_version.h" +#include "lcd.h" +#include "etx_lv_theme.h" +#include "bitmaps.h" + +#include "translations/bl_translations.h" + +#include "bootloader/boot.h" +#include "bootloader/firmware_files.h" + +#include + +#define BL_GREEN COLOR2FLAGS(RGB(73, 219, 62)) +#define BL_RED COLOR2FLAGS(RGB(229, 32, 30)) +#define BL_BACKGROUND COLOR_BLACK +#define BL_FOREGROUND COLOR_WHITE +#define BL_SELECTED COLOR2FLAGS(RGB(11, 65, 244)) // deep blue + +static constexpr coord_t LINE_H = 2; + +LAYOUT_VAL_SCALED(TITLE_Y1, 28) +LAYOUT_VAL_SCALED(TITLE_Y2, 56) + +LAYOUT_ORIENTATION(FOOTER_X1, PAD_LARGE * 2, LCD_W / 2) +LAYOUT_ORIENTATION(FOOTER_X2, LCD_W - 1 - PAD_LARGE * 2, LCD_W / 2) +LAYOUT_ORIENTATION(FOOTER_ALIGN1, LEFT, CENTERED) +LAYOUT_ORIENTATION(FOOTER_ALIGN2, RIGHT, LEFT) +LAYOUT_VAL_SCALED(FOOTER_Y1, 30) +LAYOUT_ORIENTATION_SCALED(FOOTER_Y2, 30, 58) +LAYOUT_ORIENTATION_SCALED(FOOTER_LY, 38, 62) + +constexpr coord_t PROGRESS_W = LCD_W * 3 / 4; +constexpr coord_t PROGRESS_X = (LCD_W - PROGRESS_W) / 2; +LAYOUT_VAL_SCALED(PROGRESS_H, 31) + +extern BitmapBuffer * lcd; + +#if defined(USB_SW_GPIO) +#include "hal/gpio.h" +#include "stm32_gpio.h" + #define USB_SW_TO_INTERNAL_MODULE() gpio_set(USB_SW_GPIO); + #define USB_SW_TO_MCU() gpio_clear(USB_SW_GPIO); + static bool rfUsbAccess = false; +#endif + +void blExit(void) +{ + lcdClear(); + lcdRefresh(); + lcdRefreshWait(); +} + +static void bootloaderDrawTitle(const char* text) +{ + lcd->drawText(LCD_W / 2, TITLE_Y1, text, CENTERED | BL_FOREGROUND); + lcd->drawSolidFilledRect(PAD_LARGE, TITLE_Y2, LCD_W - PAD_LARGE * 2, LINE_H, BL_FOREGROUND); +} + +static void bootloaderDrawFooter() +{ + lcd->drawSolidFilledRect(PAD_LARGE, LCD_H - FOOTER_LY, LCD_W - PAD_LARGE * 2, LINE_H, BL_FOREGROUND); +} + +static void bootloaderDrawVerFooter() +{ + bootloaderDrawFooter(); + if (LCD_W < LCD_H) + lcd->drawText(LCD_W / 2, LCD_H - FOOTER_Y2 + PAD_TINY, TR_BL_CURRENT_FW, CENTERED | BL_FOREGROUND); + const char* fw_ver = getFirmwareVersion(); + if (!fw_ver) fw_ver = TR_BL_NO_VERSION; + lcd->drawText(LCD_W / 2, LCD_H - FOOTER_Y1, fw_ver, CENTERED | BL_FOREGROUND); +} + +static void bootloaderDrawBackground() +{ + lcd->clear(BL_BACKGROUND); +} + +bool bootloaderRadioMenu(uint32_t menuItem, event_t event) +{ +#if defined(USB_SW_GPIO) + #define RADIO_MENU_LEN 2 + + static int pos = 0; + + if (IS_NEXT_EVENT(event)) { + if (pos < RADIO_MENU_LEN-1) + pos++; + } else if (IS_PREVIOUS_EVENT(event)) { + if (pos > 0) + pos--; + } else if (event == EVT_KEY_BREAK(KEY_ENTER)) { + switch (pos) { + case 0: + if (rfUsbAccess) + { + rfUsbAccess = false; + INTERNAL_MODULE_OFF(); + USB_SW_TO_MCU(); + } else { + rfUsbAccess = true; + INTERNAL_MODULE_ON(); + USB_SW_TO_INTERNAL_MODULE(); + } + break; + case 1: // fall through + default: + rfUsbAccess = false; + INTERNAL_MODULE_OFF(); + USB_SW_TO_MCU(); + pos = 0; + return true; + } + } else if (event == EVT_KEY_BREAK(KEY_EXIT)) { + rfUsbAccess = false; + INTERNAL_MODULE_OFF(); + USB_SW_TO_MCU(); + pos = 0; + return true; + } + bootloaderDrawScreen(ST_RADIO_MENU, pos, nullptr); + return false; +#else + return true; +#endif +} + +#if defined(FIRMWARE_FORMAT_UF2) + +void bootloaderInitScreen() +{ + lcdInitDisplayDriver(); + backlightEnable(BACKLIGHT_LEVEL_MAX); +} + +void bootloaderDrawDFUScreen() +{ + lcdInitDirectDrawing(); + bootloaderDrawBackground(); + lcd->drawText(LCD_W / 2, LCD_H / 2, TR_BL_DFU_MODE, CENTERED | BL_FOREGROUND); +} + +void bootloaderDrawScreen(BootloaderState st, int opt, const char* str) +{ + lcdInitDirectDrawing(); + bootloaderDrawBackground(); + + bootloaderDrawTitle(BOOTLOADER_TITLE); + + if (st == ST_START || st == ST_USB) { + + const char* msg = (st == ST_START) ? TR_BL_PLUG_USB : TR_BL_COPY_UF2; + + lcd->drawText(LCD_W / 2, LCD_H / 2 - TITLE_Y1, msg, CENTERED | BL_FOREGROUND); + lcd->drawText(LCD_W / 2, LCD_H / 2 + TITLE_Y1, LV_SYMBOL_NEW_LINE " " TR_BL_EXIT_KEY, CENTERED | BL_FOREGROUND); + + bootloaderDrawVerFooter(); + + } else if (st == ST_FLASHING || st == ST_FLASH_DONE) { + + const coord_t pb_y = (LCD_H - PROGRESS_H) / 2; + + const char* msg = (st == ST_FLASH_DONE) ? TR_BL_WRITING_COMPL : TR_BL_WRITING_FW; + lcd->drawText(PROGRESS_X, pb_y - TITLE_Y1, msg, BL_FOREGROUND); + lcd->drawRect(PROGRESS_X, pb_y, PROGRESS_W, PROGRESS_H, LINE_H, SOLID, BL_SELECTED); + + LcdFlags color = (st == ST_FLASH_DONE) ? BL_GREEN : BL_RED; + lcd->drawSolidFilledRect(PROGRESS_X + PAD_SMALL, pb_y + PAD_SMALL, ((PROGRESS_W - PAD_SMALL * 2) * opt) / 100, PROGRESS_H - PAD_SMALL * 2, color); + } +} + +#else + +LAYOUT_ORIENTATION_SCALED(SYM_X, 102, 38) +LAYOUT_ORIENTATION_SCALED(LBL_X, 124, 60) +LAYOUT_VAL_SCALED(SYM_Y, 75) +LAYOUT_VAL_SCALED(SYM_H, 35) + +LAYOUT_VAL_SCALED(BOX_GAP, 8) +LAYOUT_VAL_SCALED(BOX_Y, 71) +LAYOUT_VAL_SCALED(BOX_H, 27) + +LAYOUT_ORIENTATION_SCALED(OPTBOX_X, 92, 28) + +LAYOUT_ORIENTATION_SCALED(USB_ICN_X, 60, 105) +LAYOUT_ORIENTATION_SCALED(USB_ICN_Y, 106, 185) +LAYOUT_ORIENTATION_SCALED(USB_TXT_X, 195, 160) +LAYOUT_ORIENTATION_SCALED(USB_TXT_Y1, 97, 125) +LAYOUT_ORIENTATION_SCALED(USB_TXT_Y2, 72, 100) +LAYOUT_ORIENTATION(USB_TXT_ALIGN, 0, CENTERED) + +LAYOUT_ORIENTATION_SCALED(USB_PLG_X, 136, 134) +LAYOUT_ORIENTATION_SCALED(USB_PLG_TXT_YO, 30, 58) + +LAYOUT_ORIENTATION_SCALED(FILENAM_X1, 94, 28) +LAYOUT_ORIENTATION_SCALED(FILENAM_X2, 124, 58) +LAYOUT_VAL_SCALED(FILENAM_Y1, 75) +LAYOUT_VAL_SCALED(FILENAM_H, 25) +LAYOUT_ORIENTATION_SCALED(FILESEL_X, 119, 53) +LAYOUT_ORIENTATION_SCALED(FILESEL_W, 278, 240) + +LAYOUT_ORIENTATION_SCALED(VERCHK_X, 168, 112) +LAYOUT_ORIENTATION_SCALED(VERCHK_Y, 138, 240) +LAYOUT_ORIENTATION_SCALED(VERCHK_ICN_X, 78, 22) + +const uint8_t __bmp_plug_usb[] { + #include "bmp_plug_usb.lbm" +}; +LZ4BitmapBuffer BMP_PLUG_USB(BMP_ARGB4444); + +const uint8_t __bmp_usb_plugged[] { + #include "bmp_usb_plugged.lbm" +}; +LZ4BitmapBuffer BMP_USB_PLUGGED(BMP_ARGB4444); + +void bootloaderInitScreen() +{ + BMP_PLUG_USB.load((LZ4Bitmap*)__bmp_plug_usb); + BMP_USB_PLUGGED.load((LZ4Bitmap*)__bmp_usb_plugged); + + lcdInitDisplayDriver(); + backlightEnable(BACKLIGHT_LEVEL_MAX); +} + +void bootloaderDrawItem(const char* symbol, const char* text, coord_t& y, coord_t& lastX, coord_t symXO = 0) +{ + lcd->drawText(SYM_X - symXO, y, symbol, BL_FOREGROUND); + coord_t nx = lcd->drawText(LBL_X, y, text, BL_FOREGROUND) + BOX_GAP; + if (nx > lastX) lastX = nx; + y += SYM_H; +} + +void bootloaderDrawSelected(coord_t boxX2, int opt) +{ + boxX2 -= OPTBOX_X; + lcd->drawSolidRect(OPTBOX_X, BOX_Y + (opt * SYM_H), boxX2, BOX_H, PAD_TINY, BL_SELECTED); +} + +void bootloaderDrawScreen(BootloaderState st, int opt, const char* str) +{ + lcdInitDirectDrawing(); + bootloaderDrawBackground(); + + coord_t y = SYM_Y, boxX2 = 0; + + if (st == ST_START) { + bootloaderDrawTitle(BOOTLOADER_TITLE); + + bootloaderDrawItem(LV_SYMBOL_CHARGE, TR_BL_WRITE_FW, y, boxX2); + +#if defined(SPI_FLASH) + bootloaderDrawItem(LV_SYMBOL_SD_CARD, TR_BL_ERASE_FLASH, y, boxX2); +#endif + +#if defined(USB_SW_GPIO) +#if defined(RADIO_NV14_FAMILY) + if (hardwareOptions.pcbrev == PCBREV_EL18) +#endif + bootloaderDrawItem(LV_SYMBOL_WIFI, TR_BL_RF_USB_ACCESS, y, boxX2); +#endif + + bootloaderDrawItem(LV_SYMBOL_NEW_LINE, TR_BL_EXIT, y, boxX2, PAD_TINY); + + bootloaderDrawSelected(boxX2, opt); + + lcd->drawBitmap(USB_ICN_X, LCD_H - USB_ICN_Y, (const BitmapBuffer*)&BMP_PLUG_USB); + lcd->drawText(USB_TXT_X, LCD_H - USB_TXT_Y1, TR_BL_USB_PLUGIN, USB_TXT_ALIGN | BL_FOREGROUND); + lcd->drawText(USB_TXT_X, LCD_H - USB_TXT_Y2, TR_BL_USB_MASS_STORE, USB_TXT_ALIGN | BL_FOREGROUND); + + bootloaderDrawVerFooter(); + } +#if defined(SPI_FLASH) + else if (st == ST_CLEAR_FLASH_CHECK) { + bootloaderDrawTitle(TR_BL_ERASE_INT_FLASH); + + bootloaderDrawItem(LV_SYMBOL_SD_CARD, TR_BL_ERASE_FLASH, y, boxX2); + + bootloaderDrawSelected(boxX2, opt); + + bootloaderDrawFooter(); + int pos = lcd->drawText(FOOTER_X1, LCD_H - FOOTER_Y1, LV_SYMBOL_SD_CARD " " TR_BL_ERASE_KEY, FOOTER_ALIGN1 | BL_FOREGROUND); +#if LANDSCAPE + pos = 0; +#else + if (pos != 0) { + pos = (pos - FOOTER_X1) / 2; + } +#endif + lcd->drawText(FOOTER_X2 - pos, LCD_H - FOOTER_Y2, LV_SYMBOL_NEW_LINE " " TR_BL_EXIT_KEY, FOOTER_ALIGN2 | BL_FOREGROUND); + } + else if (st == ST_CLEAR_FLASH) { + bootloaderDrawTitle(TR_BL_ERASE_INT_FLASH); + + lcd->drawText(LCD_W / 2, SYM_Y, TR_BL_ERASE_FLASH_MSG, CENTERED | BL_FOREGROUND); + bootloaderDrawFooter(); + } +#endif +#if defined(USB_SW_GPIO) + else if (st == ST_RADIO_MENU) { + bootloaderDrawTitle(TR_BL_RF_USB_ACCESS); + + bootloaderDrawItem(LV_SYMBOL_USB, rfUsbAccess ? TR_BL_DISABLE : TR_BL_ENABLE, y, boxX2); + + bootloaderDrawSelected(boxX2, opt); + + bootloaderDrawFooter(); + int pos = lcd->drawText(FOOTER_X1, LCD_H - FOOTER_Y1, LV_SYMBOL_USB " " TR_BL_TOGGLE_KEY, FOOTER_ALIGN1 | BL_FOREGROUND); +#if LANDSCAPE + pos = 0; +#else + if (pos != 0) { + pos = (pos - FOOTER_X1) / 2; + } +#endif + lcd->drawText(FOOTER_X2 - pos, LCD_H - FOOTER_Y2, LV_SYMBOL_NEW_LINE " " TR_BL_EXIT_KEY, FOOTER_ALIGN2 | BL_FOREGROUND); + } +#endif + else if (st == ST_USB) { + y = (LCD_H - BMP_USB_PLUGGED.height()) / 2; + lcd->drawBitmap(USB_PLG_X, y, (const BitmapBuffer*)&BMP_USB_PLUGGED); + lcd->drawText(USB_TXT_X, y + USB_PLG_TXT_YO, TR_BL_USB_CONNECTED, USB_TXT_ALIGN | BL_FOREGROUND); + } + else if (st == ST_FILE_LIST || st == ST_DIR_CHECK || st == ST_FLASH_CHECK || + st == ST_FLASHING || st == ST_FLASH_DONE) { + + bootloaderDrawTitle(LV_SYMBOL_SD_CARD " /FIRMWARE"); + + if (st == ST_FLASHING || st == ST_FLASH_DONE) { + LcdFlags color = BL_RED; + + if (st == ST_FLASH_DONE) { + color = BL_GREEN; + opt = 100; // Completed > 100% + } + + lcd->drawRect(PROGRESS_X, (LCD_H - PROGRESS_H) / 2, PROGRESS_W, PROGRESS_H, LINE_H, SOLID, BL_SELECTED); + lcd->drawSolidFilledRect(PROGRESS_X + PAD_SMALL, (LCD_H - PROGRESS_H) / 2 + PAD_SMALL, ((PROGRESS_W - PAD_SMALL * 2) * opt) / 100, PROGRESS_H - PAD_SMALL * 2, color); + } else if (st == ST_DIR_CHECK) { + if (opt == FR_NO_PATH) { + lcd->drawText(LCD_W / 2, LCD_H / 2, LV_SYMBOL_CLOSE " " TR_BL_DIR_MISSING, CENTERED | BL_FOREGROUND); + } else { + lcd->drawText(LCD_W / 2, LCD_H / 2, LV_SYMBOL_CLOSE " " TR_BL_DIR_EMPTY, CENTERED | BL_FOREGROUND); + } + } else if (st == ST_FLASH_CHECK) { + bootloaderDrawFilename(str, 0, true); + + if (opt == FC_ERROR) { + lcd->drawText(LCD_W / 2, LCD_H / 2, LV_SYMBOL_CLOSE " " TR_BL_INVALID_FIRMWARE, CENTERED | BL_FOREGROUND); + } else if (opt == FC_OK) { + VersionTag tag; + memset(&tag, 0, sizeof(tag)); + getFileFirmwareVersion(&tag); + + if (strcmp(tag.flavour, FLAVOUR)) { + lcd->drawText(LCD_W / 2, LCD_H / 2, LV_SYMBOL_CLOSE " " TR_BL_INVALID_FIRMWARE, CENTERED | BL_FOREGROUND); + } else { + lcd->drawText(VERCHK_X, VERCHK_Y, TR_BL_FORK, RIGHT | BL_FOREGROUND); + lcd->drawSizedText(VERCHK_X + PAD_MEDIUM, VERCHK_Y, tag.fork, 6, BL_FOREGROUND); + + lcd->drawText(VERCHK_X, VERCHK_Y + EdgeTxStyles::STD_FONT_HEIGHT, TR_BL_VERSION, RIGHT | BL_FOREGROUND); + lcd->drawText(VERCHK_X + PAD_MEDIUM, VERCHK_Y + EdgeTxStyles::STD_FONT_HEIGHT, tag.version, BL_FOREGROUND); + + lcd->drawText(VERCHK_X, VERCHK_Y + EdgeTxStyles::STD_FONT_HEIGHT * 2, TR_BL_RADIO, RIGHT | BL_FOREGROUND); + lcd->drawText(VERCHK_X + PAD_MEDIUM, VERCHK_Y + EdgeTxStyles::STD_FONT_HEIGHT * 2, tag.flavour, BL_FOREGROUND); + + lcd->drawText(VERCHK_ICN_X, VERCHK_Y + EdgeTxStyles::STD_FONT_HEIGHT, LV_SYMBOL_OK, BL_GREEN); + } + } + } + + bootloaderDrawFooter(); + + int pos = 0; + int align = FOOTER_ALIGN2; + if ( st != ST_DIR_CHECK && (st != ST_FLASH_CHECK || opt == FC_OK)) { + if (st == ST_FILE_LIST) { + pos = lcd->drawText(FOOTER_X1, LCD_H - FOOTER_Y1, LV_SYMBOL_CHARGE " " TR_BL_SELECT_KEY, FOOTER_ALIGN1 | BL_FOREGROUND); + } + else if (st == ST_FLASH_CHECK && opt == FC_OK) { + pos = lcd->drawText(FOOTER_X1, LCD_H - FOOTER_Y1, LV_SYMBOL_CHARGE " " TR_BL_FLASH_KEY, FOOTER_ALIGN1 | BL_FOREGROUND); + } + else if (st == ST_FLASHING) { + pos = lcd->drawText(LCD_W / 2, LCD_H - FOOTER_Y1, LV_SYMBOL_CHARGE " " TR_BL_WRITING_FW, CENTERED | BL_FOREGROUND); + } + else if (st == ST_FLASH_DONE) { + pos = lcd->drawText(FOOTER_X1, LCD_H - FOOTER_Y1, LV_SYMBOL_CHARGE " " TR_BL_WRITING_COMPL, FOOTER_ALIGN1 | BL_FOREGROUND); + } + } +#if LANDSCAPE + pos = 0; +#else + if (pos != 0) { + pos = (pos - FOOTER_X1) / 2; + } else { + align = FOOTER_ALIGN1; + } +#endif + if (st != ST_FLASHING) { + lcd->drawText(FOOTER_X2 - pos, LCD_H - FOOTER_Y2, LV_SYMBOL_NEW_LINE " " TR_BL_EXIT_KEY, align | BL_FOREGROUND); + } + } +} + +void bootloaderDrawFilename(const char* str, uint8_t line, bool selected) +{ + lcd->drawText(FILENAM_X1, FILENAM_Y1 + (line * FILENAM_H), LV_SYMBOL_FILE, BL_FOREGROUND); + lcd->drawText(FILENAM_X2, FILENAM_Y1 + (line * FILENAM_H), str, BL_FOREGROUND); + + if (selected) { + lcd->drawSolidRect(FILESEL_X, BOX_Y + (line * FILENAM_H), FILESEL_W, BOX_H, PAD_TINY, BL_SELECTED); + } +} + +uint32_t bootloaderGetMenuItemCount(int baseCount) +{ + uint8_t n = 0; +#if defined(USB_SW_GPIO) +#if defined(RADIO_NV14_FAMILY) + if(hardwareOptions.pcbrev == PCBREV_EL18) +#endif + n = 1; +#endif + return baseCount + n; +} + +#endif diff --git a/radio/src/targets/taranis/bootloader/boot_menu.cpp b/radio/src/gui/common/stdlcd/boot_menu.cpp similarity index 82% rename from radio/src/targets/taranis/bootloader/boot_menu.cpp rename to radio/src/gui/common/stdlcd/boot_menu.cpp index 5487c7878..7875396ba 100644 --- a/radio/src/targets/taranis/bootloader/boot_menu.cpp +++ b/radio/src/gui/common/stdlcd/boot_menu.cpp @@ -27,8 +27,8 @@ #include "translations.h" #include "fw_version.h" -#include "translations.h" -#include "../../common/arm/stm32/bootloader/boot.h" +#include "translations/bl_translations.h" +#include "bootloader/boot.h" #include "bootloader/firmware_files.h" void bootloaderInitScreen() @@ -44,14 +44,14 @@ void bootloaderInitScreen() #endif } -static void bootloaderDrawMsg(unsigned int x, const char *str, uint8_t line, bool inverted) +static void bootloaderDrawMsg(const char *str, uint8_t line, bool inverted) { - lcdDrawSizedText(x, (line + 2) * FH, str, DISPLAY_CHAR_WIDTH, inverted ? INVERS : 0); + lcdDrawSizedText(LCD_W / 2, (line + 2) * FH, str, DISPLAY_CHAR_WIDTH, (inverted ? INVERS : 0) | CENTERED); } void bootloaderDrawFilename(const char *str, uint8_t line, bool selected) { - bootloaderDrawMsg(INDENT_WIDTH, str, line, selected); + lcdDrawSizedText(INDENT_WIDTH, (line + 2) * FH, str, DISPLAY_CHAR_WIDTH, selected ? INVERS : 0); } bool checkFirmwareFlavor(const char * flavour) @@ -93,16 +93,16 @@ void bootloaderDrawScreen(BootloaderState st, int opt, const char *str) } else if (st == ST_DIR_CHECK) { if (opt == FR_NO_PATH) { - bootloaderDrawMsg(INDENT_WIDTH, TR_BL_DIR_MISSING, 1, false); - bootloaderDrawMsg(INDENT_WIDTH, getFirmwarePath(), 2, false); + bootloaderDrawMsg(TR_BL_DIR_MISSING, 1, false); + bootloaderDrawMsg(getFirmwarePath(), 2, false); } else { - bootloaderDrawMsg(INDENT_WIDTH, TR_BL_DIR_EMPTY, 1, false); + bootloaderDrawMsg(TR_BL_DIR_EMPTY, 1, false); } } else if (st == ST_FLASH_CHECK) { if (opt == FC_ERROR) { - bootloaderDrawMsg(0, TR_BL_INVALID_FIRMWARE, 2, false); + bootloaderDrawMsg(TR_BL_INVALID_FIRMWARE, 2, false); } else if (opt == FC_OK) { bool flavorCheck = false; @@ -114,11 +114,11 @@ void bootloaderDrawScreen(BootloaderState st, int opt, const char *str) #else flavorCheck = checkFirmwareFlavor(tag.flavour); #endif - bootloaderDrawMsg(INDENT_WIDTH, tag.version, 0, false); + bootloaderDrawMsg(tag.version, 0, false); if (flavorCheck) - bootloaderDrawMsg(0, TR_BL_HOLD_ENTER_TO_START, 2, false); + bootloaderDrawMsg(TR_BL_HOLD_ENTER_TO_START, 2, false); else - bootloaderDrawMsg(0, TR_BL_INVALID_FIRMWARE, 2, false); + bootloaderDrawMsg(TR_BL_INVALID_FIRMWARE, 2, false); } } else if (st == ST_FLASHING) { diff --git a/radio/src/gui/common/stdlcd/fonts.cpp b/radio/src/gui/common/stdlcd/fonts.cpp index 74c3a33ad..729f3ffd0 100644 --- a/radio/src/gui/common/stdlcd/fonts.cpp +++ b/radio/src/gui/common/stdlcd/fonts.cpp @@ -56,9 +56,9 @@ const unsigned char font_5x7[] = { #include "font_da_05x07.lbm" #elif defined(TRANSLATIONS_CZ) #include "font_cz_05x07.lbm" -#elif defined(TRANSLATIONS_ES) +#elif defined(TRANSLATIONS_ES) && !defined(BOOT) #include "font_es_05x07.lbm" -#elif defined(TRANSLATIONS_FI) +#elif defined(TRANSLATIONS_FI) && !defined(BOOT) #include "font_fi_05x07.lbm" #elif defined(TRANSLATIONS_FR) #include "font_fr_05x07.lbm" @@ -68,11 +68,11 @@ const unsigned char font_5x7[] = { #include "font_pl_05x07.lbm" #elif defined(TRANSLATIONS_PT) #include "font_pt_05x07.lbm" -#elif defined(TRANSLATIONS_RU) +#elif defined(TRANSLATIONS_RU) && !defined(BOOT) #include "font_ru_05x07.lbm" #elif defined(TRANSLATIONS_SE) #include "font_se_05x07.lbm" -#elif defined(TRANSLATIONS_UA) +#elif defined(TRANSLATIONS_UA) && !defined(BOOT) #include "font_ua_05x07.lbm" #endif }; diff --git a/radio/src/gui/common/stdlcd/utf8.cpp b/radio/src/gui/common/stdlcd/utf8.cpp index 55b507332..a985a4d7b 100644 --- a/radio/src/gui/common/stdlcd/utf8.cpp +++ b/radio/src/gui/common/stdlcd/utf8.cpp @@ -30,7 +30,6 @@ static uint16_t _utf8_lut[] = { L'é', L'è', L'à', L'î', L'ç', }; -#if !defined(COLORLCD) #define UTF8_SUBS_LUT static uint16_t _utf8_substitution_lut[] = { L'Â', L'A', @@ -48,7 +47,6 @@ static uint16_t _utf8_substitution_lut[] = { L'Ù', L'U', */ }; -#endif #elif defined(TRANSLATIONS_DA) static uint16_t _utf8_lut[] = { L'å', L'æ', L'ø', L'Å', L'Æ', L'Ø', @@ -64,7 +62,6 @@ static uint16_t _utf8_lut[] = { L'Ý', L'ž', L'É', L'ň', }; -#if !defined(COLORLCD) #define UTF8_SUBS_LUT static uint16_t _utf8_substitution_lut[] = { L'Ě', L'ě', @@ -76,8 +73,7 @@ static uint16_t _utf8_substitution_lut[] = { L'Ó', L'ó', L'Ň', L'ň', }; -#endif -#elif defined(TRANSLATIONS_ES) +#elif defined(TRANSLATIONS_ES) && !defined(BOOT) static uint16_t _utf8_lut[] = { L'Ñ', L'ñ', L'Á', L'á', L'É', L'é', L'Í', L'í', L'Ó', L'ó', L'ú', @@ -89,7 +85,7 @@ static uint16_t _utf8_lut[] = { L'Í', L'í', L'Ó', L'ó', L'Ô', L'ô', L'Õ', L'õ', L'Ú', L'ú', }; -#elif defined(TRANSLATIONS_FI) +#elif defined(TRANSLATIONS_FI) && !defined(BOOT) static uint16_t _utf8_lut[] = { L'å', L'ä', L'ö', L'Å', L'Ä', L'Ö', }; @@ -103,7 +99,7 @@ static uint16_t _utf8_lut[] = { L'ż', L'ź', L'Ą', L'Ć', L'Ę', L'Ł', L'Ń', L'Ó', L'Ś', L'Ż', L'Ź', }; -#elif defined(TRANSLATIONS_RU) +#elif defined(TRANSLATIONS_RU) && !defined(BOOT) static uint16_t _utf8_lut[] = { L'А', L'Б', L'В', L'Г', L'Д', L'Е', L'Ж', L'З', L'И', L'Й', L'К', L'Л', L'М', L'Н', @@ -116,8 +112,7 @@ static uint16_t _utf8_lut[] = { L'ш', L'щ', L'ъ', L'ы', L'ь', L'э', L'ю', L'я', }; -#elif defined(TRANSLATIONS_UA) -#if !defined(COLORLCD) +#elif defined(TRANSLATIONS_UA) && !defined(BOOT) #define UTF8_SUBS_LUT // Warning, albeit the following table looks useless // It does translate Cyrillic to Latin @@ -144,7 +139,6 @@ static uint16_t _utf8_substitution_lut[] = { L'х', L'x', L'у', L'y' }; -#endif static uint16_t _utf8_lut[] = { L'Б', L'Г', L'Ґ', L'Д', L'Є', L'Ж', L'З', diff --git a/radio/src/keys.cpp b/radio/src/keys.cpp index 3c8c9d415..b529c3156 100644 --- a/radio/src/keys.cpp +++ b/radio/src/keys.cpp @@ -326,6 +326,10 @@ uint8_t keysGetTrimState(uint8_t trim) #if defined(USE_HATS_AS_KEYS) #define ROTARY_EMU_KEY_REPEAT_RATE 12 // times 10 [ms] +#if defined(BOOT) +bool getHatsAsKeys() { return true; } +bool getTransposeHatsForLUA() { return false; } +#else static bool _trims_as_buttons = false; static bool _trims_as_buttons_LUA = false; @@ -366,6 +370,7 @@ int16_t getEmuRotaryData() return 0; } +#endif static void transpose_trims(uint32_t *keys) { diff --git a/radio/src/targets/common/arm/stm32/bootloader/boot_dfu.cpp b/radio/src/targets/common/arm/stm32/bootloader/boot_dfu.cpp deleted file mode 100644 index 918d938fc..000000000 --- a/radio/src/targets/common/arm/stm32/bootloader/boot_dfu.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#include "stm32_hal.h" - -#include "boot.h" -#include "hal/usb_driver.h" -#include "os/time.h" - -#include "lcd.h" - -#define FRAME_INTERVAL_MS 20 - -void bootloaderDFU() -{ - usbPlugged(); - usbStart(); - - bootloaderDrawDFUScreen(); - - uint32_t next_frame = time_get_ms(); - for (;;) { - if (time_get_ms() - next_frame >= FRAME_INTERVAL_MS) { - next_frame += FRAME_INTERVAL_MS; - - if (!usbPlugged()) break; - bootloaderDrawDFUScreen(); - lcdRefresh(); - } - } - - blExit(); - NVIC_SystemReset(); -} diff --git a/radio/src/targets/horus/CMakeLists.txt b/radio/src/targets/horus/CMakeLists.txt index 87ad9a37e..614606b00 100644 --- a/radio/src/targets/horus/CMakeLists.txt +++ b/radio/src/targets/horus/CMakeLists.txt @@ -290,7 +290,7 @@ endif() # Bootloader board library add_library(board_bl OBJECT EXCLUDE_FROM_ALL ${BOARD_COMMON_SRC} - ${TARGET_SRC_DIR}/bootloader/boot_menu.cpp + ${RADIO_SRC_DIR}/gui/colorlcd/boot_menu.cpp ) add_dependencies(board_bl ${BITMAPS_TARGET}) set(BOOTLOADER_SRC ${BOOTLOADER_SRC} $) @@ -348,7 +348,7 @@ endif() set(FIRMWARE_SRC ${FIRMWARE_SRC} - targets/common/arm/loadboot.cpp + bootloader/loadboot.cpp ) if (MULTIMODULE) diff --git a/radio/src/targets/horus/bootloader/boot_menu.cpp b/radio/src/targets/horus/bootloader/boot_menu.cpp deleted file mode 100644 index 40315eef2..000000000 --- a/radio/src/targets/horus/bootloader/boot_menu.cpp +++ /dev/null @@ -1,307 +0,0 @@ -/* - * Copyright (C) EdgeTX - * - * Based on code named - * opentx - https://github.com/opentx/opentx - * 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 "board.h" -#include "fw_version.h" -#include "lcd.h" -#include "etx_lv_theme.h" - -#include "translations.h" - -#include "targets/common/arm/stm32/bootloader/boot.h" -#include "bootloader/firmware_files.h" - -#include - -const uint8_t __bmp_plug_usb[] { -#include "bmp_plug_usb.lbm" -}; -LZ4BitmapBuffer BMP_PLUG_USB(BMP_ARGB4444); - -const uint8_t __bmp_usb_plugged[] { -#include "bmp_usb_plugged.lbm" -}; -LZ4BitmapBuffer BMP_USB_PLUGGED(BMP_ARGB4444); - -#define BL_GREEN COLOR2FLAGS(RGB(73, 219, 62)) -#define BL_RED COLOR2FLAGS(RGB(229, 32, 30)) -#define BL_BACKGROUND COLOR_BLACK -#define BL_FOREGROUND COLOR_WHITE -#define BL_SELECTED COLOR2FLAGS(RGB(11, 65, 244)) // deep blue - -LAYOUT_VAL_SCALED(LINE_X1, 28) -LAYOUT_VAL_SCALED(LINE_W, 422) -static constexpr coord_t LINE_H = 2; - -LAYOUT_VAL_SCALED(TITLE_X1, 88) -LAYOUT_VAL_SCALED(TITLE_Y1, 28) -LAYOUT_VAL_SCALED(TITLE_Y2, 56) - -LAYOUT_VAL_SCALED(FOOTER_Y1, 30) -LAYOUT_VAL_SCALED(FOOTER_Y2, 38) - -LAYOUT_VAL_SCALED(SYM_X, 102) -LAYOUT_VAL_SCALED(SYM_X2, 100) -LAYOUT_VAL_SCALED(LBL_X, 124) -LAYOUT_VAL_SCALED(SYM_Y, 75) -LAYOUT_VAL_SCALED(SYM_H, 35) - -LAYOUT_VAL_SCALED(BOX_GAP, 8) -LAYOUT_VAL_SCALED(BOX_Y, 72) -LAYOUT_VAL_SCALED(BOX_H, 26) - -LAYOUT_VAL_SCALED(OPTBOX_X, 92) - -LAYOUT_VAL_SCALED(USB_ICN_X, 60) -LAYOUT_VAL_SCALED(USB_PLG_X, 136) -LAYOUT_VAL_SCALED(USB_ICN_Y, 106) -LAYOUT_VAL_SCALED(USB_TXT_X, 195) -LAYOUT_VAL_SCALED(USB_TXT_Y1, 97) -LAYOUT_VAL_SCALED(USB_TXT_Y2, 72) - -LAYOUT_VAL_SCALED(FILENAM_X1, 94) -LAYOUT_VAL_SCALED(FILENAM_X2, 124) -LAYOUT_VAL_SCALED(FILENAM_Y1, 75) -LAYOUT_VAL_SCALED(FILENAM_H, 25) -LAYOUT_VAL_SCALED(FILESEL_X, 119) -LAYOUT_VAL_SCALED(FILESEL_W, 278) - -LAYOUT_VAL_SCALED(NLSYM_X, 305) -LAYOUT_VAL_SCALED(RTNTXT_X, 335) - -LAYOUT_VAL_SCALED(DIRMSG_X, 90) -LAYOUT_VAL_SCALED(DIRMSG_Y, 168) - -LAYOUT_VAL_SCALED(PROGRESS_X, 70) -LAYOUT_VAL_SCALED(PROGRESS_W, 340) -LAYOUT_VAL_SCALED(PROGRESS_H, 31) - -LAYOUT_VAL_SCALED(VERCHK_X, 168) -LAYOUT_VAL_SCALED(VERCHK_Y, 138) -LAYOUT_VAL_SCALED(VERCHK_ICN_X, 78) - -extern BitmapBuffer * lcd; - -void bootloaderInitScreen() -{ - BMP_PLUG_USB.load((LZ4Bitmap*)__bmp_plug_usb); - BMP_USB_PLUGGED.load((LZ4Bitmap*)__bmp_usb_plugged); - - lcdInitDisplayDriver(); -} - -static void bootloaderDrawTitle(unsigned int x, const char* text) -{ - lcd->drawText(x, TITLE_Y1, text, BL_FOREGROUND); - lcd->drawSolidFilledRect(LINE_X1, TITLE_Y2, LINE_W, LINE_H, BL_FOREGROUND); -} - -static void bootloaderDrawFooter() -{ - lcd->drawSolidFilledRect(LINE_X1, LCD_H - FOOTER_Y2, LINE_W, LINE_H, BL_FOREGROUND); -} - -static void bootloaderDrawBackground() -{ - lcd->clear(BL_BACKGROUND); -} - -void bootloaderDrawScreen(BootloaderState st, int opt, const char* str) -{ - static bool _first_screen = true; - - lcdInitDirectDrawing(); - bootloaderDrawBackground(); - - if (!_first_screen) { - // ... and turn backlight ON - backlightEnable(BACKLIGHT_LEVEL_MAX); - } - - if (st == ST_START) { - bootloaderDrawTitle(TITLE_X1, BOOTLOADER_TITLE); - - lcd->drawText(SYM_X, SYM_Y, LV_SYMBOL_CHARGE, BL_FOREGROUND); - coord_t pos = lcd->drawText(LBL_X, SYM_Y, TR_BL_WRITE_FW, BL_FOREGROUND); - pos += BOX_GAP; - -#if defined(SPI_FLASH) - lcd->drawText(SYM_X, SYM_Y + SYM_H, LV_SYMBOL_SD_CARD, BL_FOREGROUND); - pos = lcd->drawText(LBL_X, SYM_Y + SYM_H, TR_BL_ERASE_FLASH, BL_FOREGROUND); - pos += BOX_GAP; - - lcd->drawText(SYM_X2, SYMY + SYM_H * 2, LV_SYMBOL_NEW_LINE, BL_FOREGROUND); - lcd->drawText(LBL_X, SYMY + SYM_H * 2, TR_BL_EXIT, BL_FOREGROUND); -#else - lcd->drawText(SYM_X2, SYM_Y + SYM_H, LV_SYMBOL_NEW_LINE, BL_FOREGROUND); - lcd->drawText(LBL_X, SYM_Y + SYM_H, TR_BL_EXIT, BL_FOREGROUND); -#endif - - pos -= OPTBOX_X; - lcd->drawSolidRect(OPTBOX_X, BOX_Y + (opt * SYM_H), pos, BOX_H, PAD_TINY, BL_SELECTED); - - lcd->drawBitmap(USB_ICN_X, LCD_H - USB_ICN_Y, (const BitmapBuffer*)&BMP_PLUG_USB); - lcd->drawText(USB_TXT_X, LCD_H - USB_TXT_Y1, TR_BL_USB_PLUGIN, BL_FOREGROUND); - lcd->drawText(USB_TXT_X, LCD_H - USB_TXT_Y2, TR_BL_USB_MASS_STORE, BL_FOREGROUND); - - bootloaderDrawFooter(); - lcd->drawText(LCD_W / 2, LCD_H - FOOTER_Y1, getFirmwareVersion(), CENTERED | BL_FOREGROUND); - } -#if defined(SPI_FLASH) - else if (st == ST_CLEAR_FLASH_CHECK) { - - bootloaderDrawTitle(TITLE_X1, TR_BL_ERASE_INT_FLASH); - - lcd->drawText(SYM_X, SYM_Y, LV_SYMBOL_SD_CARD, BL_FOREGROUND); - coord_t pos = lcd->drawText(LBL_X, SYM_Y, TR_BL_ERASE_FLASH, BL_FOREGROUND); - pos += BOX_GAP; - - lcd->drawText(SYM_X2, SYM_Y + SYM_H, LV_SYMBOL_NEW_LINE, BL_FOREGROUND); - lcd->drawText(LBL_X, SYM_Y + SYM_H, TR_BL_EXIT, BL_FOREGROUND); - - pos -= OPTBOX_X; - lcd->drawSolidRect(OPTBOX_X, BOX_Y + (opt * SYM_H), pos, BOX_H, PAD_TINY, BL_SELECTED); - - bootloaderDrawFooter(); - lcd->drawText(LINE_X1 * 2, 244, - LV_SYMBOL_SD_CARD TR_BL_ERASE_KEY, BL_FOREGROUND); - lcd->drawText(NLSYM_X, 244, - LV_SYMBOL_NEW_LINE TR_BL_EXIT_KEY, BL_FOREGROUND); - } - else if (st == ST_CLEAR_FLASH) { - bootloaderDrawTitle(TITLE_X1, TR_BL_ERASE_INT_FLASH); - - lcd->drawText(LCD_W / 2, SYM_Y, TR_BL_ERASE_FLASH_MSG, CENTERED | BL_FOREGROUND); - bootloaderDrawFooter(); - } -#endif - else if (st == ST_USB) { - coord_t y = (LCD_H - BMP_USB_PLUGGED.height()) / 2; - lcd->drawBitmap(USB_PLG_X, y, (const BitmapBuffer*)&BMP_USB_PLUGGED); - lcd->drawText(USB_TXT_X, y + FOOTER_Y1, TR_BL_USB_CONNECTED, BL_FOREGROUND); - } - else if (st == ST_FILE_LIST || st == ST_DIR_CHECK || st == ST_FLASH_CHECK || - st == ST_FLASHING || st == ST_FLASH_DONE) { - - bootloaderDrawTitle(TITLE_X1, LV_SYMBOL_SD_CARD " /FIRMWARE"); - - if (st == ST_FLASHING || st == ST_FLASH_DONE) { - LcdFlags color = BL_RED; - - if (st == ST_FLASH_DONE) { - color = BL_GREEN; - opt = 100; // Completed > 100% - } - - lcd->drawRect(PROGRESS_X, (LCD_H - PROGRESS_H) / 2, PROGRESS_W, PROGRESS_H, LINE_H, SOLID, BL_SELECTED); - lcd->drawSolidFilledRect(PROGRESS_X + PAD_SMALL, (LCD_H - PROGRESS_H) / 2 + PAD_SMALL, ((PROGRESS_W - PAD_SMALL * 2) * opt) / 100, PROGRESS_H - PAD_SMALL * 2, color); - } else if (st == ST_DIR_CHECK) { - if (opt == FR_NO_PATH) { - lcd->drawText(DIRMSG_X, DIRMSG_Y, LV_SYMBOL_CLOSE TR_BL_DIR_MISSING, - BL_FOREGROUND); - } else { - lcd->drawText(DIRMSG_X, DIRMSG_Y, LV_SYMBOL_CLOSE TR_BL_DIR_EMPTY, - BL_FOREGROUND); - } - } else if (st == ST_FLASH_CHECK) { - bootloaderDrawFilename(str, 0, true); - - if (opt == FC_ERROR) { - lcd->drawText(DIRMSG_X, DIRMSG_Y, LV_SYMBOL_CLOSE " " TR_BL_INVALID_FIRMWARE, - BL_FOREGROUND); - } else if (opt == FC_OK) { - VersionTag tag; - memset(&tag, 0, sizeof(tag)); - getFileFirmwareVersion(&tag); - - if (strcmp(tag.flavour, FLAVOUR)) { - lcd->drawText(DIRMSG_X, DIRMSG_Y, LV_SYMBOL_CLOSE " " TR_BL_INVALID_FIRMWARE, - BL_FOREGROUND); - } else { - lcd->drawText(VERCHK_X, VERCHK_Y, TR_BL_FORK, RIGHT | BL_FOREGROUND); - lcd->drawSizedText(VERCHK_X + PAD_MEDIUM, VERCHK_Y, tag.fork, 6, BL_FOREGROUND); - - lcd->drawText(VERCHK_X, VERCHK_Y + EdgeTxStyles::STD_FONT_HEIGHT, TR_BL_VERSION, RIGHT | BL_FOREGROUND); - lcd->drawText(VERCHK_X + PAD_MEDIUM, VERCHK_Y + EdgeTxStyles::STD_FONT_HEIGHT, tag.version, BL_FOREGROUND); - - lcd->drawText(VERCHK_X, VERCHK_Y + EdgeTxStyles::STD_FONT_HEIGHT * 2, TR_BL_RADIO, RIGHT | BL_FOREGROUND); - lcd->drawText(VERCHK_X + PAD_MEDIUM, VERCHK_Y + EdgeTxStyles::STD_FONT_HEIGHT * 2, tag.flavour, BL_FOREGROUND); - - lcd->drawText(VERCHK_ICN_X, VERCHK_Y + EdgeTxStyles::STD_FONT_HEIGHT, LV_SYMBOL_OK, BL_GREEN); - } - } - } - - bootloaderDrawFooter(); - - if ( st != ST_DIR_CHECK && (st != ST_FLASH_CHECK || opt == FC_OK)) { - - lcd->drawText(LINE_X1, LCD_H - FOOTER_Y1, LV_SYMBOL_CHARGE, BL_FOREGROUND); - - if (st == ST_FILE_LIST) { - lcd->drawText(LINE_X1 * 2, LCD_H - TITLE_Y1, TR_BL_SELECT_KEY, BL_FOREGROUND); - } - else if (st == ST_FLASH_CHECK && opt == FC_OK) { - lcd->drawText(LINE_X1 * 2, LCD_H - TITLE_Y1, TR_BL_FLASH_KEY, BL_FOREGROUND); - } - else if (st == ST_FLASHING) { - lcd->drawText(LINE_X1 * 2, LCD_H - TITLE_Y1, TR_BL_WRITING_FW, BL_FOREGROUND); - } - else if (st == ST_FLASH_DONE) { - lcd->drawText(LINE_X1 * 2, LCD_H - TITLE_Y1, TR_BL_WRITING_COMPL, BL_FOREGROUND); - } - } - - if (st != ST_FLASHING) { - lcd->drawText(NLSYM_X, LCD_H - TITLE_Y1, LV_SYMBOL_NEW_LINE, BL_FOREGROUND); - lcd->drawText(RTNTXT_X, LCD_H - TITLE_Y1, TR_BL_EXIT_KEY, BL_FOREGROUND); - } - } - - _first_screen = false; -} - -void bootloaderDrawFilename(const char* str, uint8_t line, bool selected) -{ - lcd->drawText(FILENAM_X1, FILENAM_Y1 + (line * FILENAM_H), LV_SYMBOL_FILE, BL_FOREGROUND); - lcd->drawText(FILENAM_X2, FILENAM_Y1 + (line * FILENAM_H), str, BL_FOREGROUND); - - if (selected) { - lcd->drawSolidRect(FILESEL_X, BOX_Y + (line * FILENAM_H), FILESEL_W, BOX_H, PAD_TINY, BL_SELECTED); - } -} - -uint32_t bootloaderGetMenuItemCount(int baseCount) -{ - return baseCount; -} - -bool bootloaderRadioMenu(uint32_t menuItem, event_t event) -{ - return true; -} - -void blExit(void) -{ - lcdClear(); - lcdRefresh(); - lcdRefreshWait(); -} diff --git a/radio/src/targets/nv14/CMakeLists.txt b/radio/src/targets/nv14/CMakeLists.txt index ed3d99b93..e83b9d050 100644 --- a/radio/src/targets/nv14/CMakeLists.txt +++ b/radio/src/targets/nv14/CMakeLists.txt @@ -117,7 +117,7 @@ set(BOARD_COMMON_SRC # Bootloader board library add_library(board_bl OBJECT EXCLUDE_FROM_ALL ${BOARD_COMMON_SRC} - ${TARGET_SRC_DIR}/bootloader/boot_menu.cpp + ${RADIO_SRC_DIR}/gui/colorlcd/boot_menu.cpp ) add_dependencies(board_bl ${BITMAPS_TARGET}) set(BOOTLOADER_SRC ${BOOTLOADER_SRC} $) @@ -142,7 +142,7 @@ set(FIRMWARE_SRC ${FIRMWARE_SRC} $) set(FIRMWARE_SRC ${FIRMWARE_SRC} - targets/common/arm/loadboot.cpp + bootloader/loadboot.cpp ) set(SRC ${SRC} diff --git a/radio/src/targets/nv14/bootloader/boot_menu.cpp b/radio/src/targets/nv14/bootloader/boot_menu.cpp deleted file mode 100644 index 6b9111ecf..000000000 --- a/radio/src/targets/nv14/bootloader/boot_menu.cpp +++ /dev/null @@ -1,309 +0,0 @@ -/* - * Copyright (C) EdgeTX - * - * Based on code named - * opentx - https://github.com/opentx/opentx - * 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 "hal/gpio.h" -#include "stm32_gpio.h" - -#include "board.h" -#include "fw_version.h" -#include "lcd.h" - -#include "translations.h" - -#include "targets/common/arm/stm32/bootloader/boot.h" -#include "bootloader/firmware_files.h" - -#include - -#define RADIO_MENU_LEN 2 - -#define USB_SW_TO_INTERNAL_MODULE() gpio_set(USB_SW_GPIO); -#define USB_SW_TO_MCU() gpio_clear(USB_SW_GPIO); - -#define DEFAULT_PADDING 28 -#define DOUBLE_PADDING 56 -#define MESSAGE_TOP (LCD_H - (2*DOUBLE_PADDING)) - -const uint8_t __bmp_plug_usb[] { -#include "bmp_plug_usb.lbm" -}; -LZ4BitmapBuffer BMP_PLUG_USB(BMP_ARGB4444); - -const uint8_t __bmp_usb_plugged[] { -#include "bmp_usb_plugged.lbm" -}; -LZ4BitmapBuffer BMP_USB_PLUGGED(BMP_ARGB4444); - -#define BL_GREEN COLOR2FLAGS(RGB(73, 219, 62)) -#define BL_RED COLOR2FLAGS(RGB(229, 32, 30)) -#define BL_BACKGROUND COLOR_BLACK -#define BL_FOREGROUND COLOR_WHITE -#define BL_SELECTED COLOR2FLAGS(RGB(11, 65, 244)) // deep blue - -extern BitmapBuffer * lcd; - -static bool rfUsbAccess = false; - -void bootloaderInitScreen() -{ - BMP_PLUG_USB.load((LZ4Bitmap*)__bmp_plug_usb); - BMP_USB_PLUGGED.load((LZ4Bitmap*)__bmp_usb_plugged); - - lcdInitDisplayDriver(); - setHatsAsKeys(true); -} - -static void bootloaderDrawTitle(const char* text) -{ - lcd->drawText(LCD_W/2, DEFAULT_PADDING, text, CENTERED | BL_FOREGROUND); - lcd->drawSolidFilledRect(DEFAULT_PADDING, DOUBLE_PADDING, LCD_W - DOUBLE_PADDING, 2, BL_FOREGROUND); -} - -static void bootloaderDrawFooter() -{ - lcd->drawSolidFilledRect(DEFAULT_PADDING, LCD_H - (DOUBLE_PADDING + 4), LCD_W - DOUBLE_PADDING, 2, BL_FOREGROUND); -} - -static void bootloaderDrawBackground() -{ - lcd->clear(BL_BACKGROUND); -} - -void bootloaderDrawScreen(BootloaderState st, int opt, const char* str) -{ - static bool _first_screen = true; - - lcdInitDirectDrawing(); - bootloaderDrawBackground(); - - if (!_first_screen) { - // ... and turn backlight ON - backlightEnable(BACKLIGHT_LEVEL_MAX); - } - - int center = LCD_W/2; - if (st == ST_START) { - int yOffset = 0; - - bootloaderDrawTitle(BOOTLOADER_TITLE); - - lcd->drawText(62, 75, LV_SYMBOL_CHARGE, BL_FOREGROUND); - coord_t pos = lcd->drawText(84, 75, TR_BL_WRITE_FW, BL_FOREGROUND); - pos += 8; - if(hardwareOptions.pcbrev == PCBREV_EL18) - { - lcd->drawText(57, 110, LV_SYMBOL_WIFI, BL_FOREGROUND); - lcd->drawText(84, 110, TR_BL_RF_USB_ACCESS, BL_FOREGROUND); - pos += 8; - yOffset = 35; - } - - lcd->drawText(60, 110 + yOffset, LV_SYMBOL_NEW_LINE, BL_FOREGROUND); - lcd->drawText(84, 110 + yOffset, TR_BL_EXIT, BL_FOREGROUND); - - pos -= 79; - lcd->drawSolidRect(79, 72 + (opt * 35), pos, 26, 2, BL_SELECTED); - - lcd->drawBitmap(center - 55, 165, (const BitmapBuffer*)&BMP_PLUG_USB); - lcd->drawText(center, 250, TR_BL_USB_PLUGIN, CENTERED | BL_FOREGROUND); - lcd->drawText(center, 275, TR_BL_USB_MASS_STORE, CENTERED | BL_FOREGROUND); - - bootloaderDrawFooter(); - lcd->drawText(center, LCD_H - DOUBLE_PADDING, - TR_BL_CURRENT_FW, CENTERED | BL_FOREGROUND); - lcd->drawText(center, LCD_H - DEFAULT_PADDING, - getFirmwareVersion(), CENTERED | BL_FOREGROUND); - } else if (st == ST_USB) { - lcd->drawBitmap(center - 26, 98, (const BitmapBuffer*)&BMP_USB_PLUGGED); - lcd->drawText(center, 168, TR_BL_USB_CONNECTED, CENTERED | BL_FOREGROUND); - } else if (st == ST_FILE_LIST || st == ST_DIR_CHECK || - st == ST_FLASH_CHECK || st == ST_FLASHING || - st == ST_FLASH_DONE) { - - bootloaderDrawTitle(LV_SYMBOL_SD_CARD " /FIRMWARE"); - - if (st == ST_FLASHING || st == ST_FLASH_DONE) { - LcdFlags color = BL_RED; // red - - if (st == ST_FLASH_DONE) { - color = BL_GREEN /* green */; - opt = 100; // Completed > 100% - } - - lcd->drawRect(DEFAULT_PADDING, 120, LCD_W - DOUBLE_PADDING, 31, 2, - SOLID, BL_SELECTED); - lcd->drawSolidFilledRect(DEFAULT_PADDING + 4, 124, - ((LCD_W - DOUBLE_PADDING - 8) * opt) / 100, 23, - color); - } else if (st == ST_DIR_CHECK) { - if (opt == FR_NO_PATH) { - lcd->drawText(20, MESSAGE_TOP, - LV_SYMBOL_CLOSE TR_BL_DIR_MISSING, BL_FOREGROUND); - } else { - lcd->drawText(20, MESSAGE_TOP, LV_SYMBOL_CLOSE TR_BL_DIR_EMPTY, - BL_FOREGROUND); - } - } else if (st == ST_FLASH_CHECK) { - bootloaderDrawFilename(str, 0, true); - - if (opt == FC_ERROR) { - lcd->drawText(20, MESSAGE_TOP, - LV_SYMBOL_CLOSE " " TR_BL_INVALID_FIRMWARE, - BL_FOREGROUND); - } else if (opt == FC_OK) { - VersionTag tag; - memset(&tag, 0, sizeof(tag)); - getFileFirmwareVersion(&tag); - - if (strcmp(tag.flavour, FLAVOUR)) { - lcd->drawText(20, MESSAGE_TOP, LV_SYMBOL_CLOSE " " TR_BL_INVALID_FIRMWARE, - BL_FOREGROUND); - } else { - lcd->drawText(LCD_W / 4 + DEFAULT_PADDING, - MESSAGE_TOP - DEFAULT_PADDING, - TR_BL_FORK, RIGHT | BL_FOREGROUND); - lcd->drawSizedText(LCD_W / 4 + 6 + DEFAULT_PADDING, - MESSAGE_TOP - DEFAULT_PADDING, tag.fork, 6, - BL_FOREGROUND); - - lcd->drawText(LCD_W / 4 + DEFAULT_PADDING, MESSAGE_TOP, - TR_BL_VERSION, RIGHT | BL_FOREGROUND); - lcd->drawText(LCD_W / 4 + 6 + DEFAULT_PADDING, MESSAGE_TOP, - tag.version, BL_FOREGROUND); - - lcd->drawText(LCD_W / 4 + DEFAULT_PADDING, - MESSAGE_TOP + DEFAULT_PADDING, - TR_BL_RADIO, RIGHT | BL_FOREGROUND); - lcd->drawText(LCD_W / 4 + 6 + DEFAULT_PADDING, - MESSAGE_TOP + DEFAULT_PADDING, tag.flavour, - BL_FOREGROUND); - - lcd->drawText(LCD_W / 4 + DEFAULT_PADDING - 90, MESSAGE_TOP, - LV_SYMBOL_OK, BL_GREEN); - } - } - } - - bootloaderDrawFooter(); - - if (st != ST_DIR_CHECK && (st != ST_FLASH_CHECK || opt == FC_OK)) { - - lcd->drawText(DEFAULT_PADDING, LCD_H - DOUBLE_PADDING - 2, - LV_SYMBOL_CHARGE, BL_FOREGROUND); - - if (st == ST_FILE_LIST) { - lcd->drawText(DOUBLE_PADDING, LCD_H - DOUBLE_PADDING, - TR_BL_SELECT_KEY, BL_FOREGROUND); - } else if (st == ST_FLASH_CHECK && opt == FC_OK) { - lcd->drawText(DOUBLE_PADDING, LCD_H - DOUBLE_PADDING, - TR_BL_FLASH_KEY, BL_FOREGROUND); - } else if (st == ST_FLASHING) { - lcd->drawText(DOUBLE_PADDING, LCD_H - DOUBLE_PADDING, - TR_BL_WRITING_FW, BL_FOREGROUND); - } else if (st == ST_FLASH_DONE) { - lcd->drawText(DOUBLE_PADDING, LCD_H - DOUBLE_PADDING, - TR_BL_WRITING_COMPL, BL_FOREGROUND); - } - } - - if (st != ST_FLASHING) { - lcd->drawText(DOUBLE_PADDING, LCD_H - DEFAULT_PADDING, - LV_SYMBOL_NEW_LINE TR_BL_EXIT_KEY, BL_FOREGROUND); - } - } else if (st == ST_RADIO_MENU) { - bootloaderDrawTitle(TR_BL_RF_USB_ACCESS); - - lcd->drawText(62, 75, LV_SYMBOL_USB, BL_FOREGROUND); - coord_t pos = lcd->drawText(84, 75, rfUsbAccess ? TR_BL_DISABLE : TR_BL_ENABLE, BL_FOREGROUND); - pos += 8; - - lcd->drawText(60, 110, LV_SYMBOL_NEW_LINE, BL_FOREGROUND); - lcd->drawText(84, 110, TR_BL_EXIT, BL_FOREGROUND); - - pos -= 79; - lcd->drawSolidRect(79, 72 + (opt * 35), pos, 26, 2, BL_SELECTED); - } - - _first_screen = false; -} - -void bootloaderDrawFilename(const char* str, uint8_t line, bool selected) -{ - lcd->drawText(DEFAULT_PADDING, 75 + (line * 25), LV_SYMBOL_FILE, BL_FOREGROUND); - lcd->drawText(DEFAULT_PADDING + 30, 75 + (line * 25), str, BL_FOREGROUND); - - if (selected) { - lcd->drawSolidRect(DEFAULT_PADDING + 25, 72 + (line * 25), - LCD_W - (DEFAULT_PADDING + 25) - 28, 26, 2, - BL_SELECTED); - } -} - -uint32_t bootloaderGetMenuItemCount(int baseCount) -{ - if(hardwareOptions.pcbrev == PCBREV_EL18) - return baseCount+1; - - return baseCount; -} - -bool bootloaderRadioMenu(uint32_t menuItem, event_t event) -{ - static int pos = 0; - - if (event == EVT_KEY_FIRST(KEY_DOWN)) { - if (pos < RADIO_MENU_LEN-1) - pos++; - } else if (event == EVT_KEY_FIRST(KEY_UP)) { - if (pos > 0) - pos--; - } else if (event == EVT_KEY_BREAK(KEY_ENTER)) { - switch (pos) { - case 0: - if (rfUsbAccess) - { - rfUsbAccess = false; - INTERNAL_MODULE_OFF(); - USB_SW_TO_MCU(); - } else { - rfUsbAccess = true; - INTERNAL_MODULE_ON(); - USB_SW_TO_INTERNAL_MODULE(); - } - break; - case 1: // fall through - default: - USB_SW_TO_MCU(); - pos = 0; - return true; - } - } - bootloaderDrawScreen(ST_RADIO_MENU, pos, nullptr); - return false; -} - -void blExit(void) -{ - USB_SW_TO_MCU(); - lcdClear(); - lcdRefresh(); - lcdRefreshWait(); -} diff --git a/radio/src/targets/pl18/CMakeLists.txt b/radio/src/targets/pl18/CMakeLists.txt index 1c548b560..ad02c18ea 100644 --- a/radio/src/targets/pl18/CMakeLists.txt +++ b/radio/src/targets/pl18/CMakeLists.txt @@ -180,7 +180,7 @@ endif() # Bootloader board library add_library(board_bl OBJECT EXCLUDE_FROM_ALL ${BOARD_COMMON_SRC} - ${TARGET_SRC_DIR}/bootloader/boot_menu.cpp + ${RADIO_SRC_DIR}/gui/colorlcd/boot_menu.cpp ) add_dependencies(board_bl ${BITMAPS_TARGET}) set(BOOTLOADER_SRC ${BOOTLOADER_SRC} $) @@ -223,7 +223,7 @@ endif() set(FIRMWARE_SRC ${FIRMWARE_SRC} - targets/common/arm/loadboot.cpp + bootloader/loadboot.cpp ) set(SRC ${SRC} diff --git a/radio/src/targets/pl18/bootloader/boot_menu.cpp b/radio/src/targets/pl18/bootloader/boot_menu.cpp deleted file mode 100644 index 94a52b209..000000000 --- a/radio/src/targets/pl18/bootloader/boot_menu.cpp +++ /dev/null @@ -1,387 +0,0 @@ -/* - * Copyright (C) EdgeTX - * - * Based on code named - * opentx - https://github.com/opentx/opentx - * 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 "hal/gpio.h" -#include "stm32_gpio.h" - -#include "board.h" -#include "fw_version.h" -#include "lcd.h" - -#include "translations.h" - -#include "targets/common/arm/stm32/bootloader/boot.h" -#include "bootloader/firmware_files.h" - -#include -#include "etx_lv_theme.h" - -#define RADIO_MENU_LEN 2 - -#define SELECTED_COLOR (INVERS | COLOR_THEME_SECONDARY1) -#define DEFAULT_PADDING 28 -#define DOUBLE_PADDING 56 -#define MESSAGE_TOP (LCD_H - (2*DOUBLE_PADDING)) - -const uint8_t __bmp_plug_usb[] { -#include "bmp_plug_usb.lbm" -}; -LZ4BitmapBuffer BMP_PLUG_USB(BMP_ARGB4444); - -const uint8_t __bmp_usb_plugged[] { -#include "bmp_usb_plugged.lbm" -}; -LZ4BitmapBuffer BMP_USB_PLUGGED(BMP_ARGB4444); - -#define BL_GREEN COLOR2FLAGS(RGB(73, 219, 62)) -#define BL_RED COLOR2FLAGS(RGB(229, 32, 30)) -#define BL_BACKGROUND COLOR_BLACK -#define BL_FOREGROUND COLOR_WHITE -#define BL_SELECTED COLOR2FLAGS(RGB(11, 65, 244)) // deep blue - -extern BitmapBuffer * lcd; - -#if defined(USB_SW_GPIO) - #define USB_SW_TO_INTERNAL_MODULE() gpio_set(USB_SW_GPIO); - #define USB_SW_TO_MCU() gpio_clear(USB_SW_GPIO); - static bool rfUsbAccess = false; -#endif - -void bootloaderInitScreen() -{ - BMP_PLUG_USB.load((LZ4Bitmap*)__bmp_plug_usb); - BMP_USB_PLUGGED.load((LZ4Bitmap*)__bmp_usb_plugged); - - lcdInitDisplayDriver(); -#if defined(USE_HATS_AS_KEYS) - setHatsAsKeys(true); -#endif -} - -static void bootloaderDrawTitle(const char* text) -{ - lcd->drawText(LCD_W/2, DEFAULT_PADDING, text, CENTERED | BL_FOREGROUND); - lcd->drawSolidFilledRect(DEFAULT_PADDING, DOUBLE_PADDING, LCD_W - DOUBLE_PADDING, 2, BL_FOREGROUND); -} - -static void bootloaderDrawFooter() -{ - if (LANDSCAPE) - lcd->drawSolidFilledRect(DEFAULT_PADDING, LCD_H - (DEFAULT_PADDING + 10), LCD_W - DOUBLE_PADDING, 2, BL_FOREGROUND); - else - lcd->drawSolidFilledRect(DEFAULT_PADDING, LCD_H - (DOUBLE_PADDING + 4), LCD_W - DOUBLE_PADDING, 2, BL_FOREGROUND); -} - -static void bootloaderDrawBackground() -{ - lcd->clear(BL_BACKGROUND); -} - -void bootloaderDrawScreen(BootloaderState st, int opt, const char* str) -{ - static bool _first_screen = true; - lcdInitDirectDrawing(); - bootloaderDrawBackground(); - - if (!_first_screen) { - // ... and turn backlight ON - backlightEnable(BACKLIGHT_LEVEL_MAX); - } - - int center = LCD_W/2; - int menuItemX = center - 120; - if (st == ST_START) { - int y = 75; - - bootloaderDrawTitle(BOOTLOADER_TITLE); - - lcd->drawText(menuItemX + 2, y, LV_SYMBOL_CHARGE, BL_FOREGROUND); - coord_t pos = lcd->drawText(menuItemX + 24, y, TR_BL_WRITE_FW, BL_FOREGROUND); - pos += 8; - coord_t npos; - y += 35; - -#if defined(SPI_FLASH) - lcd->drawText(menuItemX + 2, y, LV_SYMBOL_SD_CARD, BL_FOREGROUND); - npos = lcd->drawText(menuItemX + 24, y, TR_BL_ERASE_FLASH, BL_FOREGROUND); - npos += 8; - if (npos > pos) - pos = npos; - y += 35; -#endif -#if defined(USB_SW_GPIO) -#if defined(RADIO_NV14_FAMILY) - if(hardwareOptions.pcbrev == PCBREV_EL18) -#endif - { - lcd->drawText(menuItemX, y, LV_SYMBOL_WIFI, BL_FOREGROUND); - npos = lcd->drawText(menuItemX + 24, y, TR_BL_RF_USB_ACCESS, BL_FOREGROUND); - npos += 8; - if (npos > pos) - pos = npos; - y += 35; - } -#endif - lcd->drawText(menuItemX, y, LV_SYMBOL_NEW_LINE, BL_FOREGROUND); - lcd->drawText(menuItemX + 24, y, TR_BL_EXIT, BL_FOREGROUND); - - pos -= menuItemX - 8; - lcd->drawSolidRect(menuItemX - 8, 72 + (opt * 35), pos, 26, 2, BL_SELECTED); - - if (LANDSCAPE) { - lcd->drawBitmap(menuItemX - 40, LCD_H - 106, (const BitmapBuffer*)&BMP_PLUG_USB); - lcd->drawText(menuItemX + 95, LCD_H - 97, TR_BL_USB_PLUGIN, BL_FOREGROUND); - lcd->drawText(menuItemX + 95, LCD_H - 72, TR_BL_USB_MASS_STORE, BL_FOREGROUND); - } else { - lcd->drawBitmap(center - 55, LCD_H - DEFAULT_PADDING - 157, (const BitmapBuffer*)&BMP_PLUG_USB); - lcd->drawText(center, LCD_H - DEFAULT_PADDING - 97, TR_BL_USB_PLUGIN, CENTERED | BL_FOREGROUND); - lcd->drawText(center, LCD_H - DEFAULT_PADDING - 72, TR_BL_USB_MASS_STORE, CENTERED | BL_FOREGROUND); - } - - bootloaderDrawFooter(); - if (LCD_W < LCD_H) - lcd->drawText(center, LCD_H - DOUBLE_PADDING, TR_BL_CURRENT_FW, CENTERED | BL_FOREGROUND); - lcd->drawText(center, LCD_H - DEFAULT_PADDING, getFirmwareVersion(), CENTERED | BL_FOREGROUND); - } -#if defined(SPI_FLASH) - else if (st == ST_CLEAR_FLASH_CHECK) { - - bootloaderDrawTitle(TR_BL_ERASE_INT_FLASH); - - lcd->drawText(menuItemX + 2, 75, LV_SYMBOL_SD_CARD, BL_FOREGROUND); - coord_t pos = lcd->drawText(menuItemX + 24, 75, TR_BL_ERASE_FLASH, BL_FOREGROUND); - pos += 8; - - lcd->drawText(menuItemX, 110, LV_SYMBOL_NEW_LINE, BL_FOREGROUND); - lcd->drawText(menuItemX + 24, 110, TR_BL_EXIT, BL_FOREGROUND); - - pos -= menuItemX - 8; - lcd->drawSolidRect(menuItemX - 8, 72 + (opt * 35), pos, 26, 2, BL_SELECTED); - - bootloaderDrawFooter(); - if (LANDSCAPE) { - lcd->drawText(DEFAULT_PADDING, LCD_H - DEFAULT_PADDING, - LV_SYMBOL_SD_CARD " " TR_BL_ERASE_KEY, BL_FOREGROUND); - lcd->drawText(LCD_W - 175, LCD_H - DEFAULT_PADDING, - LV_SYMBOL_NEW_LINE " " TR_BL_EXIT_KEY, BL_FOREGROUND); - } else { - lcd->drawText(DOUBLE_PADDING, LCD_H - DOUBLE_PADDING, - LV_SYMBOL_SD_CARD " " TR_BL_ERASE_KEY, BL_FOREGROUND); - lcd->drawText(DOUBLE_PADDING, LCD_H - DEFAULT_PADDING, - LV_SYMBOL_NEW_LINE " " TR_BL_EXIT_KEY, BL_FOREGROUND); - } - } - else if (st == ST_CLEAR_FLASH) { - bootloaderDrawTitle(TR_BL_ERASE_INT_FLASH); - - lcd->drawText(center, 75, TR_BL_ERASE_FLASH_MSG, CENTERED | BL_FOREGROUND); - bootloaderDrawFooter(); - } -#endif -#if defined(USB_SW_GPIO) - else if (st == ST_RADIO_MENU) { - bootloaderDrawTitle(TR_BL_RF_USB_ACCESS); - - lcd->drawText(menuItemX + 2, 75, LV_SYMBOL_USB, BL_FOREGROUND); - coord_t pos = lcd->drawText(menuItemX + 24, 75, rfUsbAccess ? TR_BL_DISABLE : TR_BL_ENABLE, BL_FOREGROUND); - pos += 8; - - lcd->drawText(menuItemX + 2, 110, LV_SYMBOL_NEW_LINE, BL_FOREGROUND); - lcd->drawText(menuItemX + 24, 110, TR_BL_EXIT, BL_FOREGROUND); - - pos -= menuItemX - 8; - lcd->drawSolidRect(menuItemX - 8, 72 + (opt * 35), pos, 26, 2, BL_SELECTED); - } -#endif - else if (st == ST_USB) { - lcd->drawBitmap(center - 26, 98, (const BitmapBuffer*)&BMP_USB_PLUGGED); - lcd->drawText(center, 168, TR_BL_USB_CONNECTED, CENTERED | BL_FOREGROUND); - } else if (st == ST_FILE_LIST || st == ST_DIR_CHECK || - st == ST_FLASH_CHECK || st == ST_FLASHING || - st == ST_FLASH_DONE) { - - bootloaderDrawTitle(LV_SYMBOL_SD_CARD " /FIRMWARE"); - - if (st == ST_FLASHING || st == ST_FLASH_DONE) { - LcdFlags color = BL_RED; // red - - if (st == ST_FLASH_DONE) { - color = BL_GREEN /* green */; - opt = 100; // Completed > 100% - } - - lcd->drawRect(DEFAULT_PADDING, 120, LCD_W - DOUBLE_PADDING, 31, 2, - SOLID, BL_SELECTED); - lcd->drawSolidFilledRect(DEFAULT_PADDING + 4, 124, - ((LCD_W - DOUBLE_PADDING - 8) * opt) / 100, 23, - color); - } else if (st == ST_DIR_CHECK) { - if (opt == FR_NO_PATH) { - lcd->drawText(20, MESSAGE_TOP, - LV_SYMBOL_CLOSE TR_BL_DIR_MISSING, BL_FOREGROUND); - } else { - lcd->drawText(20, MESSAGE_TOP, LV_SYMBOL_CLOSE TR_BL_DIR_EMPTY, - BL_FOREGROUND); - } - } else if (st == ST_FLASH_CHECK) { - bootloaderDrawFilename(str, 0, true); - - if (opt == FC_ERROR) { - lcd->drawText(20, MESSAGE_TOP, - LV_SYMBOL_CLOSE " " TR_BL_INVALID_FIRMWARE, - BL_FOREGROUND); - } else if (opt == FC_OK) { - VersionTag tag; - memset(&tag, 0, sizeof(tag)); - getFileFirmwareVersion(&tag); - if (strcmp(tag.flavour, FLAVOUR)) { - lcd->drawText(20, MESSAGE_TOP, LV_SYMBOL_CLOSE " " TR_BL_INVALID_FIRMWARE, - BL_FOREGROUND); - } else { - lcd->drawText(LCD_W / 4 + DEFAULT_PADDING, - MESSAGE_TOP - DEFAULT_PADDING, - TR_BL_FORK, RIGHT | BL_FOREGROUND); - lcd->drawSizedText(LCD_W / 4 + 6 + DEFAULT_PADDING, - MESSAGE_TOP - DEFAULT_PADDING, tag.fork, 6, - BL_FOREGROUND); - - lcd->drawText(LCD_W / 4 + DEFAULT_PADDING, MESSAGE_TOP, - TR_BL_VERSION, RIGHT | BL_FOREGROUND); - lcd->drawText(LCD_W / 4 + 6 + DEFAULT_PADDING, MESSAGE_TOP, - tag.version, BL_FOREGROUND); - - lcd->drawText(LCD_W / 4 + DEFAULT_PADDING, - MESSAGE_TOP + DEFAULT_PADDING, - TR_BL_RADIO, RIGHT | BL_FOREGROUND); - lcd->drawText(LCD_W / 4 + 6 + DEFAULT_PADDING, - MESSAGE_TOP + DEFAULT_PADDING, tag.flavour, - BL_FOREGROUND); - - lcd->drawText(LANDSCAPE ? DOUBLE_PADDING : DEFAULT_PADDING, MESSAGE_TOP, LV_SYMBOL_OK, BL_GREEN); - } - } - } - - bootloaderDrawFooter(); - - if (st != ST_DIR_CHECK && (st != ST_FLASH_CHECK || opt == FC_OK)) { - - int padding = DOUBLE_PADDING; - if (LANDSCAPE) - padding = DEFAULT_PADDING; - if (st == ST_FILE_LIST) { - lcd->drawText(padding, LCD_H - padding, - LV_SYMBOL_CHARGE " " TR_BL_SELECT_KEY, BL_FOREGROUND); - } else if (st == ST_FLASH_CHECK && opt == FC_OK) { - lcd->drawText(padding, LCD_H - padding, - LV_SYMBOL_CHARGE " " TR_BL_FLASH_KEY, BL_FOREGROUND); - } else if (st == ST_FLASHING) { - lcd->drawText(padding, LCD_H - padding, - LV_SYMBOL_CHARGE " " TR_BL_WRITING_FW, BL_FOREGROUND); - } else if (st == ST_FLASH_DONE) { - lcd->drawText(padding, LCD_H - padding, - LV_SYMBOL_CHARGE " " TR_BL_WRITING_COMPL, BL_FOREGROUND); - } - } - - if (st != ST_FLASHING) { - if (LANDSCAPE) { - lcd->drawText(LCD_W - 175, LCD_H - DEFAULT_PADDING, - LV_SYMBOL_NEW_LINE " " TR_BL_EXIT_KEY, BL_FOREGROUND); - } else { - lcd->drawText(DOUBLE_PADDING, LCD_H - DEFAULT_PADDING, - LV_SYMBOL_NEW_LINE " " TR_BL_EXIT_KEY, BL_FOREGROUND); - } - } - } - _first_screen = false; -} - -void bootloaderDrawFilename(const char* str, uint8_t line, bool selected) -{ - lcd->drawText(DEFAULT_PADDING, 75 + (line * 25), LV_SYMBOL_FILE, BL_FOREGROUND); - lcd->drawText(DEFAULT_PADDING + 30, 75 + (line * 25), str, BL_FOREGROUND); - - if (selected) { - lcd->drawSolidRect(DEFAULT_PADDING + 25, 72 + (line * 25), - LCD_W - (DEFAULT_PADDING + 25) - 28, 26, 2, BL_SELECTED); - } -} -uint32_t bootloaderGetMenuItemCount(int baseCount) -{ - uint8_t n = 0; -#if defined(USB_SW_GPIO) -#if defined(RADIO_NV14_FAMILY) - if(hardwareOptions.pcbrev == PCBREV_EL18) -#endif - n = 1; -#endif - return baseCount + n; -} - -bool bootloaderRadioMenu(uint32_t menuItem, event_t event) -{ -#if defined(USB_SW_GPIO) - static int pos = 0; - - if (event == EVT_KEY_FIRST(KEY_DOWN)) { - if (pos < RADIO_MENU_LEN-1) - pos++; - } else if (event == EVT_KEY_FIRST(KEY_UP)) { - if (pos > 0) - pos--; - } else if (event == EVT_KEY_BREAK(KEY_ENTER)) { - switch (pos) { - case 0: - if (rfUsbAccess) - { - rfUsbAccess = false; - INTERNAL_MODULE_OFF(); - USB_SW_TO_MCU(); - } else { - rfUsbAccess = true; - INTERNAL_MODULE_ON(); - USB_SW_TO_INTERNAL_MODULE(); - } - break; - case 1: // fall through - default: - USB_SW_TO_MCU(); - pos = 0; - return true; - } - } - bootloaderDrawScreen(ST_RADIO_MENU, pos, nullptr); - return false; -#else - return true; -#endif -} - -void blExit(void) -{ -#if defined(USB_SW_GPIO) - USB_SW_TO_MCU(); -#endif - lcdClear(); - lcdRefresh(); - lcdRefreshWait(); -} diff --git a/radio/src/targets/simu/CMakeLists.txt b/radio/src/targets/simu/CMakeLists.txt index a97d2899c..744dfdded 100644 --- a/radio/src/targets/simu/CMakeLists.txt +++ b/radio/src/targets/simu/CMakeLists.txt @@ -50,9 +50,10 @@ endif() if(SIMU_BOOTLOADER) add_definitions(-DSIMU_BOOTLOADER) set(SIMU_DRIVERS ${SIMU_DRIVERS} - ../../targets/common/arm/stm32/bootloader/bin_files.cpp - ../../targets/common/arm/stm32/bootloader/boot.cpp - ../../targets/${TARGET_DIR}/bootloader/boot_menu.cpp + ../../bootloader/bin_files.cpp + ../../bootloader/boot.cpp + # TODO - how to handle this for B&W (not currently used)? + ../../gui/colorlcd/boot_menu.cpp ../../thirdparty/lz4/lz4.c ) endif() diff --git a/radio/src/targets/st16/CMakeLists.txt b/radio/src/targets/st16/CMakeLists.txt index a733e33cf..d31133800 100644 --- a/radio/src/targets/st16/CMakeLists.txt +++ b/radio/src/targets/st16/CMakeLists.txt @@ -137,7 +137,7 @@ add_library(board_bl OBJECT EXCLUDE_FROM_ALL ${BOARD_COMMON_SRC} ${TARGET_SRC_DIR}/system_clock.c ${TARGET_SRC_DIR}/sdram_driver.cpp - ${TARGET_SRC_DIR}/bootloader/boot_menu.cpp + ${RADIO_SRC_DIR}/gui/colorlcd/boot_menu.cpp targets/common/arm/stm32/stm32_qspi.cpp targets/common/arm/stm32/stm32_pulse_driver.cpp ) @@ -170,7 +170,7 @@ include_directories(${RADIO_SRC_DIR}/fonts/colorlcd gui/${GUI_DIR} gui/${GUI_DIR if(BOOTLOADER) set(FIRMWARE_TARGET_SRC ${FIRMWARE_TARGET_SRC} - ../common/arm/loadboot.cpp + ../../bootloader/loadboot.cpp ) endif() diff --git a/radio/src/targets/st16/bootloader/boot_menu.cpp b/radio/src/targets/st16/bootloader/boot_menu.cpp deleted file mode 100644 index a0eb29328..000000000 --- a/radio/src/targets/st16/bootloader/boot_menu.cpp +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright (C) EdgeTX - * - * Based on code named - * opentx - https://github.com/opentx/opentx - * 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 "board.h" -#include "bsp_io.h" -#include "fw_version.h" -#include "lcd.h" -#include "bitmapbuffer.h" - -#include "translations.h" - -#include "targets/common/arm/stm32/bootloader/boot.h" - -#include - -#define SELECTED_COLOR (INVERS | COLOR_THEME_SECONDARY1) -#define DEFAULT_PADDING 28 -#define DOUBLE_PADDING 56 -#define MESSAGE_TOP (LCD_H - (2*DOUBLE_PADDING)) - -#define BL_GREEN COLOR2FLAGS(RGB(73, 219, 62)) -#define BL_RED COLOR2FLAGS(RGB(229, 32, 30)) -#define BL_BACKGROUND COLOR_BLACK -#define BL_FOREGROUND COLOR_WHITE -#define BL_SELECTED COLOR2FLAGS(RGB(11, 65, 244)) // deep blue - -extern BitmapBuffer* lcd; - -void bootloaderInitScreen() -{ - lcdInitDisplayDriver(); - backlightInit(); - backlightEnable(100); -} - -static void bootloaderDrawTitle(const char* text) -{ - lcd->drawText(LCD_W / 2, DEFAULT_PADDING, text, CENTERED | BL_FOREGROUND); - lcd->drawSolidFilledRect(DEFAULT_PADDING, DOUBLE_PADDING, - LCD_W - DOUBLE_PADDING, 2, BL_FOREGROUND); -} - -static void bootloaderDrawFooter() -{ - lcd->drawSolidFilledRect(DEFAULT_PADDING, LCD_H - (DEFAULT_PADDING + 10), - LCD_W - DOUBLE_PADDING, 2, BL_FOREGROUND); -} - -static void bootloaderDrawBackground() { lcd->clear(BL_BACKGROUND); } - -void bootloaderDrawScreen(BootloaderState st, int opt, const char* str) -{ - lcdInitDirectDrawing(); - bootloaderDrawBackground(); - bootloaderDrawTitle(BOOTLOADER_TITLE); - - if (st == ST_START || st == ST_USB) { - - const char* msg = nullptr; - if (st == ST_START) { - msg = "Plug USB cable"; - } else if (st == ST_USB) { - msg = "Copy firmware.uf2 to flash"; - } - - coord_t x = LCD_W/2; - coord_t y = LCD_H/2; - lcd->drawText(x, y, msg, CENTERED | BL_FOREGROUND); - - bootloaderDrawFooter(); - - const char* fw_ver = getFirmwareVersion(); - if (!fw_ver) fw_ver = "no version"; - lcd->drawText(x, LCD_H - DEFAULT_PADDING, fw_ver, - CENTERED | BL_FOREGROUND); - - } else if (st == ST_FLASHING || st == ST_FLASH_DONE) { - - const coord_t pb_h = 31; - const coord_t pb_x = 70; - const coord_t pb_y = (LCD_H - pb_h) / 2; - - const char* msg = (st == ST_FLASH_DONE) ? TR_BL_WRITING_COMPL : TR_BL_WRITING_FW; - lcd->drawText(pb_x, pb_y - 28, msg, BL_FOREGROUND); - lcd->drawRect(pb_x, pb_y, 340, pb_h, 2, SOLID, BL_SELECTED); - - LcdFlags color = (st == ST_FLASH_DONE) ? BL_GREEN : BL_RED; - lcd->drawSolidFilledRect(pb_x + 4, pb_y + 4, (332 * opt) / 100, 23, color); - } -} - -void bootloaderDrawDFUScreen() -{ - lcdInitDirectDrawing(); - bootloaderDrawBackground(); - lcd->drawText(LCD_W / 2, LCD_H / 2, "DFU mode", CENTERED | BL_FOREGROUND); -} - -void blExit(void) -{ - lcdClear(); - lcdRefresh(); - lcdRefreshWait(); -} diff --git a/radio/src/targets/stm32h7s78-dk/CMakeLists.txt b/radio/src/targets/stm32h7s78-dk/CMakeLists.txt index 56c645def..0e0e533d6 100644 --- a/radio/src/targets/stm32h7s78-dk/CMakeLists.txt +++ b/radio/src/targets/stm32h7s78-dk/CMakeLists.txt @@ -88,7 +88,7 @@ add_library(board_bl OBJECT EXCLUDE_FROM_ALL ${BOARD_COMMON_SRC} ${TARGET_SRC_DIR}/system_clock.c ${TARGET_SRC_DIR}/extram_driver.cpp - ${TARGET_SRC_DIR}/bootloader/boot_menu.cpp + ${RADIO_SRC_DIR}/gui/colorlcd/boot_menu.cpp ) set(BOOTLOADER_SRC ${BOOTLOADER_SRC} $) @@ -110,6 +110,6 @@ include_directories(${RADIO_SRC_DIR}/fonts/colorlcd gui/${GUI_DIR} gui/${GUI_DIR if(BOOTLOADER) set(FIRMWARE_TARGET_SRC ${FIRMWARE_TARGET_SRC} - ../common/arm/loadboot.cpp + ../../bootloader/loadboot.cpp ) endif() diff --git a/radio/src/targets/stm32h7s78-dk/bootloader/boot_menu.cpp b/radio/src/targets/stm32h7s78-dk/bootloader/boot_menu.cpp deleted file mode 100644 index 0b3f7b8a0..000000000 --- a/radio/src/targets/stm32h7s78-dk/bootloader/boot_menu.cpp +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright (C) EdgeTX - * - * Based on code named - * opentx - https://github.com/opentx/opentx - * 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 "board.h" -#include "fw_version.h" -#include "lcd.h" - -#include "translations.h" - -#include "targets/common/arm/stm32/bootloader/boot.h" -#include "bootloader/firmware_files.h" - -#include - -#define SELECTED_COLOR (INVERS | COLOR_THEME_SECONDARY1) -#define DEFAULT_PADDING 28 -#define DOUBLE_PADDING 56 -#define MESSAGE_TOP (LCD_H - (2*DOUBLE_PADDING)) - -#define BL_GREEN COLOR2FLAGS(RGB(73, 219, 62)) -#define BL_RED COLOR2FLAGS(RGB(229, 32, 30)) -#define BL_BACKGROUND COLOR_BLACK -#define BL_FOREGROUND COLOR_WHITE -#define BL_SELECTED COLOR2FLAGS(RGB(11, 65, 244)) // deep blue - -extern BitmapBuffer * lcd; - -void bootloaderInitScreen() -{ - lcdInitDisplayDriver(); -} - -static void bootloaderDrawTitle(const char* text) -{ - lcd->drawText(LCD_W / 2, DEFAULT_PADDING, text, CENTERED | BL_FOREGROUND); - lcd->drawSolidFilledRect(DEFAULT_PADDING, DOUBLE_PADDING, - LCD_W - DOUBLE_PADDING, 2, BL_FOREGROUND); -} - -static void bootloaderDrawFooter() -{ - lcd->drawSolidFilledRect(DEFAULT_PADDING, LCD_H - (DEFAULT_PADDING + 10), - LCD_W - DOUBLE_PADDING, 2, BL_FOREGROUND); -} - -static void bootloaderDrawBackground() { lcd->clear(BL_BACKGROUND); } - -void bootloaderDrawScreen(BootloaderState st, int opt, const char* str) -{ - lcdInitDirectDrawing(); - bootloaderDrawBackground(); - bootloaderDrawTitle(BOOTLOADER_TITLE); - - if (st == ST_START || st == ST_USB) { - - const char* msg = nullptr; - if (st == ST_START) { - msg = "Plug USB cable"; - } else if (st == ST_USB) { - msg = "Copy firmware.uf2 to flash"; - } - - coord_t x = LCD_W/2; - coord_t y = LCD_H/2; - lcd->drawText(x, y, msg, CENTERED | BL_FOREGROUND); - - bootloaderDrawFooter(); - - const char* fw_ver = getFirmwareVersion(); - if (!fw_ver) fw_ver = "no version"; - lcd->drawText(x, LCD_H - DEFAULT_PADDING, fw_ver, - CENTERED | BL_FOREGROUND); - - } else if (st == ST_FLASHING || st == ST_FLASH_DONE) { - - const coord_t pb_h = 31; - const coord_t pb_x = 70; - const coord_t pb_y = (LCD_H - pb_h) / 2; - - const char* msg = (st == ST_FLASH_DONE) ? TR_BL_WRITING_COMPL : TR_BL_WRITING_FW; - lcd->drawText(pb_x, pb_y - 28, msg, BL_FOREGROUND); - lcd->drawRect(pb_x, pb_y, 340, pb_h, 2, SOLID, BL_SELECTED); - - LcdFlags color = (st == ST_FLASH_DONE) ? BL_GREEN : BL_RED; - lcd->drawSolidFilledRect(pb_x + 4, pb_y + 4, (332 * opt) / 100, 23, color); - } -} - -void bootloaderDrawDFUScreen() -{ - lcdInitDirectDrawing(); - bootloaderDrawBackground(); - lcd->drawText(LCD_W / 2, LCD_H / 2, "DFU mode", CENTERED | BL_FOREGROUND); -} - -void blExit(void) -{ - lcdClear(); - lcdRefresh(); - lcdRefreshWait(); -} diff --git a/radio/src/targets/taranis/CMakeLists.txt b/radio/src/targets/taranis/CMakeLists.txt index 5367348bd..bafba2ac3 100644 --- a/radio/src/targets/taranis/CMakeLists.txt +++ b/radio/src/targets/taranis/CMakeLists.txt @@ -628,7 +628,7 @@ endif() # Bootloader board library add_library(board_bl OBJECT EXCLUDE_FROM_ALL ${BOARD_COMMON_SRC} - ${TARGET_SRC_DIR}/bootloader/boot_menu.cpp + ${RADIO_SRC_DIR}/gui/common/stdlcd/boot_menu.cpp ) # add_dependencies(board_bl ${BITMAPS_TARGET}) set(BOOTLOADER_SRC ${BOOTLOADER_SRC} $) @@ -723,7 +723,7 @@ endif() set(FIRMWARE_SRC ${FIRMWARE_SRC} - targets/common/arm/loadboot.cpp + bootloader/loadboot.cpp ) set(RADIO_DEPENDENCIES ${RADIO_DEPENDENCIES} ${BITMAPS_TARGET}) diff --git a/radio/src/translations/bl_translations.h b/radio/src/translations/bl_translations.h new file mode 100644 index 000000000..31414b06b --- /dev/null +++ b/radio/src/translations/bl_translations.h @@ -0,0 +1,425 @@ +/* + * Copyright (C) EdgeTX + * + * Based on code named + * opentx - https://github.com/opentx/opentx + * 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. + */ + + #pragma once + +// Bootloader strings - ASCII characters only (no extended ASCII or unicode) + +#if defined(PCBPL18) + #if defined(RADIO_NV14_FAMILY) + #define BL_SELECT_KEY "[R TRIM]" + #define BL_EXIT_KEY "[L TRIM]" + #elif defined(RADIO_NB4P) + #define BL_SELECT_KEY "[SW1A]" + #define BL_EXIT_KEY "[SW1B]" + #elif defined(RADIO_PL18U) + #define BL_SELECT_KEY "[KR Dn]" + #define BL_EXIT_KEY "[KR Up]" + #else + #define BL_SELECT_KEY "[TR4 Dn]" + #define BL_EXIT_KEY "[TR4 Up]" + #endif +#elif defined(PCBNV14) + #define BL_SELECT_KEY "[R TRIM]" + #define BL_EXIT_KEY "[L TRIM]" +#elif defined(RADIO_ST16) + #define BL_SELECT_KEY "[ENT]" + #define BL_EXIT_KEY "[EXIT]" +#else + #define BL_SELECT_KEY "[ENT]" + #define BL_EXIT_KEY "[RTN]" +#endif + +#if defined(TRANSLATIONS_CZ) + + // Poznamka: nutne pouziti textu bez diakritiky - omezeni velikosti pameti bootloader! + #define TR_BL_USB_CONNECTED "USB pripojeno" + #define TR_BL_USB_PLUGIN "nebo pripojte USB kabel" + #define TR_BL_USB_MASS_STORE "pro pouziti uloziste" + #define TR_BL_WRITE_FW "Nahrat firmware" + #define TR_BL_FORK "Fork:" + #define TR_BL_VERSION "Verze:" + #define TR_BL_RADIO "Radio:" + #define TR_BL_EXIT "Ukoncit" + #define TR_BL_DIR_MISSING "Adresar chybi" + #define TR_BL_DIR_EMPTY "Adresar je prazdny" + #define TR_BL_WRITING_FW "Nahravani firmware ..." + #define TR_BL_WRITING_COMPL "Nahravani dokonceno" + #define TR_BL_ENABLE "Povoleno" + #define TR_BL_DISABLE "Zakazano" + + #if defined(COLORLCD) + #define TR_BL_INVALID_FIRMWARE "Neplatny soubor s firmwarem" + #elif LCD_W >= 212 + #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN " " TR_BL_USB_MASS_STORE + #define TR_BL_HOLD_ENTER_TO_START "Drzet [ENT] pro zahajeni nahravani" + #define TR_BL_INVALID_FIRMWARE "Neplatny firmware soubor!" + #else + #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN + #define TR_BL_HOLD_ENTER_TO_START "Drzet [ENT] pro zahajeni" + #define TR_BL_INVALID_FIRMWARE "Neplatny firmware!" + #endif + + // Bootloader Taranis specific - ASCII characters only + #define TR_BL_POWER_KEY "Stisknete tlacitko napajeni." + #define TR_BL_FLASH_EXIT "Ukoncit rezim nahravani." + + // Bootloader Horus specific - ASCII characters only + #define TR_BL_ERASE_INT_FLASH "Erase Internal Flash Storage" + #define TR_BL_ERASE_FLASH "Erase Flash Storage" + #define TR_BL_ERASE_FLASH_MSG "This may take up to 200s" + #define TR_BL_RF_USB_ACCESS "RF USB access" + #define TR_BL_CURRENT_FW "Aktualni firmware:" + + #define TR_BL_SELECT_KEY BL_SELECT_KEY " pro vybrani souboru" + #define TR_BL_FLASH_KEY "Drzet dlouze " BL_SELECT_KEY " pro nahrani" + #define TR_BL_ERASE_KEY "Hold " BL_SELECT_KEY " long to erase" + #define TR_BL_TOGGLE_KEY BL_SELECT_KEY " to toggle" + #define TR_BL_EXIT_KEY BL_EXIT_KEY " pro ukonceni" + +#elif defined(TRANSLATIONS_DA) + + #define TR_BL_USB_CONNECTED "USB forbundet" + #define TR_BL_USB_PLUGIN "eller brug USB kabel" + #define TR_BL_USB_MASS_STORE "for USB disk" + #define TR_BL_WRITE_FW "Installer firmware" + #define TR_BL_FORK "Fork:" + #define TR_BL_VERSION "Version:" + #define TR_BL_RADIO "Radio:" + #define TR_BL_EXIT "Forlad" + #define TR_BL_DIR_MISSING "Katalog mangler" + #define TR_BL_DIR_EMPTY "Katalog er tomt" + #define TR_BL_WRITING_FW "Installerer..." + #define TR_BL_WRITING_COMPL "Installation slut" + #define TR_BL_ENABLE "Aktiver" + #define TR_BL_DISABLE "Deaktiver" + + #if defined(COLORLCD) + #define TR_BL_INVALID_FIRMWARE "Ikke en installationsfil!" + #elif LCD_W >= 212 + #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN " " TR_BL_USB_MASS_STORE + #define TR_BL_HOLD_ENTER_TO_START "[ENT] for at starte installation" + #define TR_BL_INVALID_FIRMWARE "Ikke en installationsfil!" + #else + #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN + #define TR_BL_HOLD_ENTER_TO_START "[ENT] for at starte" + #define TR_BL_INVALID_FIRMWARE "Ikke en installationsfil!" + #endif + + // Bootloader Taranis specific - ASCII characters only + #define TR_BL_POWER_KEY "Tryk power knap." + #define TR_BL_FLASH_EXIT "Forlad installation tilstand." + + // Bootloader Horus specific - ASCII characters only + #define TR_BL_ERASE_INT_FLASH "Slet intern flash lager" + #define TR_BL_ERASE_FLASH "Slet flash lager" + #define TR_BL_ERASE_FLASH_MSG "Dette kan vare op til 200s" + #define TR_BL_RF_USB_ACCESS "RF USB adgang" + #define TR_BL_CURRENT_FW "Current firmware:" + + #define TR_BL_SELECT_KEY BL_SELECT_KEY " for at bruge fil" + #define TR_BL_FLASH_KEY "Hold " BL_SELECT_KEY " laenge, for at starte" + #define TR_BL_ERASE_KEY "Hold " BL_SELECT_KEY " laenge, for at slette" + #define TR_BL_TOGGLE_KEY BL_SELECT_KEY " to toggle" + #define TR_BL_EXIT_KEY BL_EXIT_KEY " for at forlade" + +#elif defined(TRANSLATIONS_DE) + + #define TR_BL_USB_CONNECTED "USB verbunden" + #define TR_BL_USB_PLUGIN "oder USB-Kabel anschl." + #define TR_BL_USB_MASS_STORE "für den SD-Speicher an" + #define TR_BL_WRITE_FW "Schreibe Firmware" + #define TR_BL_FORK "Fork:" + #define TR_BL_VERSION "Version:" + #define TR_BL_RADIO "Radio:" + #define TR_BL_EXIT "Beenden" + #define TR_BL_DIR_MISSING "Verzeichnis fehlt" + #define TR_BL_DIR_EMPTY "Verzeichnis leer" + #define TR_BL_WRITING_FW "Schreibe..." + #define TR_BL_WRITING_COMPL TR("Schreiben fertig","Schreiben abgeschlossen") + #define TR_BL_ENABLE "Aktivieren" + #define TR_BL_DISABLE "Deaktivieren" + + #if defined(COLORLCD) + #define TR_BL_INVALID_FIRMWARE "Keine gültige Firmwaredatei" + #elif LCD_W >= 212 + #define TR_BL_OR_PLUGIN_USB_CABLE "Oder schließen Sie ein USB-Kabel " TR_BL_USB_MASS_STORE + #define TR_BL_HOLD_ENTER_TO_START "Halte [ENT] gedrückt, um mit dem Schreiben zu beginnen" + #define TR_BL_INVALID_FIRMWARE "Keine gültige Firmwaredatei!" + #else + #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN + #define TR_BL_HOLD_ENTER_TO_START "Zum Starten [ENT] halten" + #define TR_BL_INVALID_FIRMWARE "Keine gültige Firmware!" + #endif + + // Bootloader Taranis specific - ASCII characters only + #define TR_BL_POWER_KEY "Drücke den Power Knopf." + #define TR_BL_FLASH_EXIT "Verlasse den Flashmodus." + + // Bootloader Horus specific - ASCII characters only + #define TR_BL_ERASE_INT_FLASH "Erase Internal Flash Storage" + #define TR_BL_ERASE_FLASH "Erase Flash Storage" + #define TR_BL_ERASE_FLASH_MSG "This may take up to 200s" + #define TR_BL_RF_USB_ACCESS "RF USB Zugriff" + #define TR_BL_CURRENT_FW "Aktuelle Firmware:" + + #define TR_BL_SELECT_KEY BL_SELECT_KEY " um Datei auszuwählen" + #define TR_BL_FLASH_KEY "Halte " BL_SELECT_KEY " gedrückt, zum schreiben" + #define TR_BL_ERASE_KEY "Halte " BL_SELECT_KEY " gedrückt, to erase" + #define TR_BL_TOGGLE_KEY BL_SELECT_KEY " to toggle" + #define TR_BL_EXIT_KEY BL_EXIT_KEY " zum beenden" + +#elif defined(TRANSLATIONS_FR) + + #define TR_BL_USB_CONNECTED "USB Connecte" + #define TR_BL_USB_PLUGIN "ou branchez cable USB" + #define TR_BL_USB_MASS_STORE "pour stockage de masse" + #define TR_BL_WRITE_FW "Ecriture Firmware" + #define TR_BL_FORK "Fork:" + #define TR_BL_VERSION "Version:" + #define TR_BL_RADIO "Radio:" + #define TR_BL_EXIT "Quitter" + #define TR_BL_DIR_MISSING "Repertoire absent" + #define TR_BL_DIR_EMPTY "Repertoire vide" + #define TR_BL_WRITING_FW "Ecriture Firmware ..." + #define TR_BL_WRITING_COMPL "Ecriture terminée" + #define TR_BL_ENABLE "Activer" + #define TR_BL_DISABLE "Désactiver" + + #if defined(COLORLCD) + #define TR_BL_INVALID_FIRMWARE "Fichier firmware non valide" + #elif LCD_W >= 212 + #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN " " TR_BL_USB_MASS_STORE + #define TR_BL_HOLD_ENTER_TO_START "Appui [ENT] pour demarrer ecriture" + #define TR_BL_INVALID_FIRMWARE "Fichier firmware non valide!" + #else + #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN + #define TR_BL_HOLD_ENTER_TO_START "Appui [ENT] pour demarrer" + #define TR_BL_INVALID_FIRMWARE "Firmware non valide!" + #endif + + // Bootloader Taranis specific - ASCII characters only + #define TR_BL_POWER_KEY "Appuyez sur le bouton power." + #define TR_BL_FLASH_EXIT "Quitter mode flashage." + + // Bootloader Horus specific - ASCII characters only + #define TR_BL_ERASE_INT_FLASH "Erase Internal Flash Storage" + #define TR_BL_ERASE_FLASH "Erase Flash Storage" + #define TR_BL_ERASE_FLASH_MSG "This may take up to 200s" + #define TR_BL_RF_USB_ACCESS "RF USB access" + #define TR_BL_CURRENT_FW "Firmware actuel:" + + #define TR_BL_SELECT_KEY BL_SELECT_KEY " pour select. fichier" + #define TR_BL_FLASH_KEY "Appui long " BL_SELECT_KEY " pour flasher" + #define TR_BL_ERASE_KEY "Appui long " BL_SELECT_KEY " to erase" + #define TR_BL_TOGGLE_KEY BL_SELECT_KEY " to toggle" + #define TR_BL_EXIT_KEY BL_EXIT_KEY " pour quitter" + +#elif defined(TRANSLATIONS_IT) + + #define TR_BL_USB_CONNECTED "USB Connessa" + #define TR_BL_USB_PLUGIN "O connetti il cavo USB" + #define TR_BL_USB_MASS_STORE "per memoria di massa" + #define TR_BL_WRITE_FW "Scrivo il Firmware" + #define TR_BL_FORK "Fork:" + #define TR_BL_VERSION "Versione:" + #define TR_BL_RADIO "Radio:" + #define TR_BL_EXIT "Esci" + #define TR_BL_DIR_MISSING "Cartella non trovata" + #define TR_BL_DIR_EMPTY "Cartella vuota" + #define TR_BL_WRITING_FW "Scrittura Firmware..." + #define TR_BL_WRITING_COMPL "Scrittura completata" + #define TR_BL_ENABLE "Abilita" + #define TR_BL_DISABLE "Disabilita" + + #if defined(COLORLCD) + #define TR_BL_INVALID_FIRMWARE "Firmware non valido" + #elif LCD_W >= 212 + #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN " " TR_BL_USB_MASS_STORE + #define TR_BL_HOLD_ENTER_TO_START "Premi [ENT] per iniziare la scrittura" + #define TR_BL_INVALID_FIRMWARE "Non è un file Firmware valido!" + #else + #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN + #define TR_BL_HOLD_ENTER_TO_START "Premi [ENT] per partire" + #define TR_BL_INVALID_FIRMWARE "Non è un file Firmware valido!" + #endif + + // Bootloader Taranis specific - ASCII characters only + #define TR_BL_POWER_KEY "Premi il bottone d'accensione" + #define TR_BL_FLASH_EXIT "Esci dal modo scrittura." + + // Bootloader Horus specific - ASCII characters only + #define TR_BL_ERASE_INT_FLASH "Erase Internal Flash Storage" + #define TR_BL_ERASE_FLASH "Erase Flash Storage" + #define TR_BL_ERASE_FLASH_MSG "This may take up to 200s" + #define TR_BL_RF_USB_ACCESS "RF USB access" + + #define TR_BL_SELECT_KEY BL_SELECT_KEY " per scegliere il file" + #define TR_BL_FLASH_KEY "Tenere premuto " BL_SELECT_KEY " per scrivere" + #define TR_BL_ERASE_KEY "Hold " BL_SELECT_KEY " long to erase" + #define TR_BL_TOGGLE_KEY BL_SELECT_KEY " to toggle" + #define TR_BL_EXIT_KEY BL_EXIT_KEY " per uscire" + +#elif defined(TRANSLATIONS_PL) + + #define TR_BL_USB_CONNECTED "USB polaczone" + #define TR_BL_USB_PLUGIN "lub podlacz kabel USB" + #define TR_BL_USB_MASS_STORE "dla trybu danych" + #define TR_BL_WRITE_FW "Zapis firmware" + #define TR_BL_FORK "Fork:" + #define TR_BL_VERSION "Wersja:" + #define TR_BL_RADIO "Radio:" + #define TR_BL_EXIT "Wyjdz" + #define TR_BL_DIR_MISSING "Brak katalogu" + #define TR_BL_DIR_EMPTY "Katalog jest pusty" + #define TR_BL_WRITING_FW "Zapis firmware ..." + #define TR_BL_WRITING_COMPL "Zapis ukonczony" + #define TR_BL_ENABLE "Enable" + #define TR_BL_DISABLE "Disable" + + #if defined(COLORLCD) + #define TR_BL_INVALID_FIRMWARE "Nieprawidlowy plik firmware" + #elif LCD_W >= 212 + #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN " " TR_BL_USB_MASS_STORE + #define TR_BL_HOLD_ENTER_TO_START "Przytrzymaj [ENT] by zaczac zapis" + #define TR_BL_INVALID_FIRMWARE "Nieprawidlowy plik firmware!" + #else + #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN + #define TR_BL_HOLD_ENTER_TO_START "Przytrzymaj [ENT] by zaczac" + #define TR_BL_INVALID_FIRMWARE "011Nieprawidlowy firmware!" + #endif + + // Bootloader Taranis specific - ASCII characters only + #define TR_BL_POWER_KEY "Nacisnij przycisk Power" + #define TR_BL_FLASH_EXIT "Wyjdz z trybu flashowania" + + // Bootloader Horus specific - ASCII characters only + #define TR_BL_ERASE_INT_FLASH "Erase Internal Flash Storage" + #define TR_BL_ERASE_FLASH "Erase Flash Storage" + #define TR_BL_ERASE_FLASH_MSG "This may take up to 200s" + #define TR_BL_RF_USB_ACCESS "RF USB access" + #define TR_BL_CURRENT_FW "Obecny firmware:" + + #define TR_BL_SELECT_KEY BL_SELECT_KEY " aby wybrac plik" + #define TR_BL_FLASH_KEY "Przytrzymaj " BL_SELECT_KEY " aby flashowac" + #define TR_BL_ERASE_KEY "Przytrzymaj " BL_SELECT_KEY " long to erase" + #define TR_BL_TOGGLE_KEY BL_SELECT_KEY " to toggle" + #define TR_BL_EXIT_KEY BL_EXIT_KEY " aby wyjsc" + +#elif defined(TRANSLATIONS_SE) + + // Bootloader common + #define TR_BL_USB_CONNECTED "USB ansluten" + #define TR_BL_USB_PLUGIN "Eller anslut med USB-kabel" + #define TR_BL_USB_MASS_STORE "foer masslagring" + #define TR_BL_WRITE_FW "Skriv firmware" + #define TR_BL_FORK "Gren:" + #define TR_BL_VERSION "Version:" + #define TR_BL_RADIO "Radio:" + #define TR_BL_EXIT "Avsluta" + #define TR_BL_DIR_MISSING "Katalogen saknas" + #define TR_BL_DIR_EMPTY "Katalogen aer tom" + #define TR_BL_WRITING_FW "Skriver..." + #define TR_BL_WRITING_COMPL "Skrivning klar" + #define TR_BL_ENABLE "Aktivera" + #define TR_BL_DISABLE "Inaktivera" + + #if LCD_W >= 480 + #define TR_BL_INVALID_FIRMWARE "Ej en giltig firmwarefil" + #elif LCD_W >= 212 + #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN " " TR_BL_USB_MASS_STORE + #define TR_BL_HOLD_ENTER_TO_START "Tryck [ENT] foer att boerja skriva " + #define TR_BL_INVALID_FIRMWARE "Ej en giltig firmwarefil!" + #else + #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN + #define TR_BL_HOLD_ENTER_TO_START "Tryck [ENT] för att boerja" + #define TR_BL_INVALID_FIRMWARE "Ej en giltig firmware!" + #endif + + // Bootloader Taranis specific - ASCII characters only + #define TR_BL_POWER_KEY "Tryck paa startknappen." + #define TR_BL_FLASH_EXIT "Avsluta flashningslaeget." + + // Bootloader Horus specific - ASCII characters only + #define TR_BL_ERASE_INT_FLASH "Radera interna flashminnet" + #define TR_BL_ERASE_FLASH "Radera flashminnet" + #define TR_BL_ERASE_FLASH_MSG "Detta kan ta upp till 200s" + #define TR_BL_RF_USB_ACCESS "RF USB-access" + #define TR_BL_CURRENT_FW "Nuvarande firmware:" + + #define TR_BL_SELECT_KEY BL_SELECT_KEY " foer att vaelja fil" + #define TR_BL_FLASH_KEY "Haall ner " BL_SELECT_KEY " foer att flasha" + #define TR_BL_ERASE_KEY "Haall ner " BL_SELECT_KEY " foer att radera" + #define TR_BL_TOGGLE_KEY BL_SELECT_KEY " to toggle" + #define TR_BL_EXIT_KEY BL_EXIT_KEY " foer att avbryta" + +#else + + #define TR_BL_USB_CONNECTED "USB Connected" + #define TR_BL_USB_PLUGIN "Or plug in a USB cable" + #define TR_BL_USB_MASS_STORE "for mass storage" + #define TR_BL_WRITE_FW "Write Firmware" + #define TR_BL_FORK "Fork:" + #define TR_BL_VERSION "Version:" + #define TR_BL_RADIO "Radio:" + #define TR_BL_EXIT "Exit" + #define TR_BL_DIR_MISSING "Directory is missing" + #define TR_BL_DIR_EMPTY "Directory is empty" + #define TR_BL_WRITING_FW "Writing..." + #define TR_BL_WRITING_COMPL "Writing complete" + #define TR_BL_ENABLE "Enable" + #define TR_BL_DISABLE "Disable" + + #if defined(COLORLCD) + #define TR_BL_INVALID_FIRMWARE "Not a valid firmware file" + #elif LCD_W >= 212 + #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN " " TR_BL_USB_MASS_STORE + #define TR_BL_HOLD_ENTER_TO_START "Hold [ENT] to start writing" + #define TR_BL_INVALID_FIRMWARE "Not a valid firmware file!" + #else + #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN + #define TR_BL_HOLD_ENTER_TO_START "Hold [ENT] to start" + #define TR_BL_INVALID_FIRMWARE "Not a valid firmware!" + #endif + + // Bootloader Taranis specific - ASCII characters only + #define TR_BL_POWER_KEY "Press the power button." + #define TR_BL_FLASH_EXIT "Exit the flashing mode." + + // Bootloader Horus specific - ASCII characters only + #define TR_BL_ERASE_INT_FLASH "Erase Internal Flash Storage" + #define TR_BL_ERASE_FLASH "Erase Flash Storage" + #define TR_BL_ERASE_FLASH_MSG "This may take up to 200s" + #define TR_BL_RF_USB_ACCESS "RF USB access" + #define TR_BL_CURRENT_FW "Current Firmware:" + + #define TR_BL_SELECT_KEY BL_SELECT_KEY " to select file" + #define TR_BL_FLASH_KEY "Hold " BL_SELECT_KEY " long to flash" + #define TR_BL_ERASE_KEY "Hold " BL_SELECT_KEY " long to erase" + #define TR_BL_TOGGLE_KEY BL_SELECT_KEY " to toggle" + #define TR_BL_EXIT_KEY BL_EXIT_KEY " to exit" + +#endif + +#define TR_BL_DFU_MODE "DFU mode" +#define TR_BL_PLUG_USB "Plug USB cable" +#define TR_BL_COPY_UF2 "Copy firmware.uf2 to EDGETX_UF2 drive" +#define TR_BL_NO_VERSION "No version" \ No newline at end of file diff --git a/radio/src/translations/cn.h b/radio/src/translations/cn.h index 598175d80..126707214 100644 --- a/radio/src/translations/cn.h +++ b/radio/src/translations/cn.h @@ -1024,80 +1024,6 @@ #define TR_WIDGET_VALUE "数值" #endif -// Bootloader common - ASCII characters only -#define TR_BL_USB_CONNECTED "USB Connected" -#define TR_BL_USB_PLUGIN "Or plug in a USB cable" -#define TR_BL_USB_MASS_STORE "for mass storage" -#define TR_BL_USB_PLUGIN_MASS_STORE "Or plug in a USB cable for mass storage" -#define TR_BL_WRITE_FW "Write Firmware" -#define TR_BL_FORK "Fork:" -#define TR_BL_VERSION "Version:" -#define TR_BL_RADIO "Radio:" -#define TR_BL_EXIT "Exit" -#define TR_BL_DIR_MISSING " Directory is missing" -#define TR_BL_DIR_EMPTY " Directory is empty" -#define TR_BL_WRITING_FW "Writing..." -#define TR_BL_WRITING_COMPL "Writing complete" - -#if LCD_W >= 480 - #define TR_BL_INVALID_FIRMWARE "Not a valid firmware file" -#elif LCD_W >= 212 - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN_MASS_STORE - #define TR_BL_HOLD_ENTER_TO_START "\012Hold [ENT] to start writing" - #define TR_BL_INVALID_FIRMWARE "\011Not a valid firmware file! " - #define TR_BL_INVALID_EEPROM "\011Not a valid EEPROM file! " -#else - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN - #define TR_BL_HOLD_ENTER_TO_START "\006Hold [ENT] to start" - #define TR_BL_INVALID_FIRMWARE "\004Not a valid firmware! " - #define TR_BL_INVALID_EEPROM "\004Not a valid EEPROM! " -#endif - -// Bootloader Taranis specific - ASCII characters only -#define TR_BL_RESTORE_EEPROM "Restore EEPROM" -#define TR_BL_POWER_KEY "Press the power button." -#define TR_BL_FLASH_EXIT "Exit the flashing mode." - -// Bootloader Horus specific - ASCII characters only -#define TR_BL_ERASE_INT_FLASH "Erase Internal Flash Storage" -#define TR_BL_ERASE_FLASH "Erase Flash Storage" -#define TR_BL_ERASE_FLASH_MSG "This may take up to 200s" -#define TR_BL_RF_USB_ACCESS "RF USB access" -#define TR_BL_CURRENT_FW "Current Firmware:" - -#if defined(PCBPL18) - // Bootloader PL18/NB4+ specific - ASCII characters only - #define TR_BL_ENABLE "Enable" - #define TR_BL_DISABLE "Disable" - #if defined(RADIO_NV14_FAMILY) - #define TR_BL_SELECT_KEY "[R TRIM] to select file" - #define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash" - #define TR_BL_ERASE_KEY "Hold [R TRIM] long to erase" - #define TR_BL_EXIT_KEY "[L TRIM] to exit" - #elif defined(RADIO_NB4P) - #define TR_BL_SELECT_KEY "[SW1A] to select file" - #define TR_BL_FLASH_KEY "Hold [SW1A] long to flash" - #define TR_BL_ERASE_KEY "Hold [SW1A] long to erase" - #define TR_BL_EXIT_KEY "[SW1B] to exit" - #else - #define TR_BL_SELECT_KEY "[TR4 Dn] to select file" - #define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash" - #define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase" - #define TR_BL_EXIT_KEY "[TR4 Up] to exit" - #endif -#elif defined(PCBNV14) - #define TR_BL_SELECT_KEY "[R TRIM] to select file" - #define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash" - #define TR_BL_EXIT_KEY " [L TRIM] to exit" - #define TR_BL_ENABLE "Enable" - #define TR_BL_DISABLE "Disable" -#else - #define TR_BL_SELECT_KEY "[ENT] to select file" - #define TR_BL_FLASH_KEY "Hold [ENT] long to flash" - #define TR_BL_ERASE_KEY "Hold [ENT] long to erase" - #define TR_BL_EXIT_KEY "[RTN] to exit" -#endif - // About screen #define TR_ABOUTUS TR(" 关于 ", "关于") diff --git a/radio/src/translations/cz.h b/radio/src/translations/cz.h index 4e571d85b..58b1d6dc1 100644 --- a/radio/src/translations/cz.h +++ b/radio/src/translations/cz.h @@ -1039,80 +1039,6 @@ #define TR_WIDGET_VALUE "Hodnota" #endif -// Bootloader common (Poznamka: nutne pouziti textu bez diakritiky - omezeni velikosti pameti bootloader!) -#define TR_BL_USB_CONNECTED "USB pripojeno" -#define TR_BL_USB_PLUGIN "nebo pripojte USB kabel" -#define TR_BL_USB_MASS_STORE "pro pouziti uloziste" -#define TR_BL_USB_PLUGIN_MASS_STORE "nebo pripojte USB kabel pro pouziti uloziste" -#define TR_BL_WRITE_FW "Nahrat firmware" -#define TR_BL_FORK "Fork:" -#define TR_BL_VERSION "Verze:" -#define TR_BL_RADIO "Radio:" -#define TR_BL_EXIT "Ukoncit" -#define TR_BL_DIR_MISSING " Adresar chybi" -#define TR_BL_DIR_EMPTY " Adresar je prazdny" -#define TR_BL_WRITING_FW "Nahravani firmware ..." -#define TR_BL_WRITING_COMPL "Nahravani dokonceno" - -#if LCD_W >= 480 - #define TR_BL_INVALID_FIRMWARE "Neplatny soubor s firmwarem" -#elif LCD_W >= 212 - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN_MASS_STORE - #define TR_BL_HOLD_ENTER_TO_START "\012Drzet [ENT] pro zahajeni nahravani" - #define TR_BL_INVALID_FIRMWARE "\011Neplatny firmware soubor! " - #define TR_BL_INVALID_EEPROM "\011Neplatny EEPROM soubor! " -#else - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN - #define TR_BL_HOLD_ENTER_TO_START "\006Drzet [ENT] pro zahajeni" - #define TR_BL_INVALID_FIRMWARE "\004Neplatny firmware! " - #define TR_BL_INVALID_EEPROM "\004Neplatny EEPROM! " -#endif - -// Bootloader Taranis specific - ASCII characters only -#define TR_BL_RESTORE_EEPROM "Obnovit EEPROM" -#define TR_BL_POWER_KEY "Stisknete tlacitko napajeni." -#define TR_BL_FLASH_EXIT "Ukoncit rezim nahravani." - -// Bootloader Horus specific - ASCII characters only -#define TR_BL_ERASE_INT_FLASH "Erase Internal Flash Storage" -#define TR_BL_ERASE_FLASH "Erase Flash Storage" -#define TR_BL_ERASE_FLASH_MSG "This may take up to 200s" -#define TR_BL_RF_USB_ACCESS "RF USB access" -#define TR_BL_CURRENT_FW "Aktualni firmware:" - -#if defined(PCBPL18) - // Bootloader PL18/NB4+ specific - ASCII characters only - #define TR_BL_ENABLE "Povoleno" - #define TR_BL_DISABLE "Zakazano" - #if defined(RADIO_NV14_FAMILY) - #define TR_BL_SELECT_KEY "[R TRIM] pro vybrani souboru" - #define TR_BL_FLASH_KEY "Drzet dlouze [R TRIM] pro nahrani" - #define TR_BL_ERASE_KEY "Drzet dlouze [R TRIM] long to erase" - #define TR_BL_EXIT_KEY "[L TRIM] pro ukonceni" - #elif defined(RADIO_NB4P) - #define TR_BL_SELECT_KEY "[SW1A] pro vybrani souboru" - #define TR_BL_FLASH_KEY "Drzet dlouze [SW1A] pro nahrani" - #define TR_BL_ERASE_KEY "Drzet dlouze [SW1A] long to erase" - #define TR_BL_EXIT_KEY "[SW1B] pro ukonceni" - #else - #define TR_BL_SELECT_KEY "[TR4 Dn] pro vybrani souboru" - #define TR_BL_FLASH_KEY "Drzet dlouze [TR4 Dn] pro nahrani" - #define TR_BL_ERASE_KEY "Drzet dlouze [TR4 Dn] long to erase" - #define TR_BL_EXIT_KEY "[TR4 Up] pro ukonceni" - #endif -#elif defined(PCBNV14) - #define TR_BL_SELECT_KEY "[R TRIM] pro vybrani souboru" - #define TR_BL_FLASH_KEY "Drzet dlouze [R TRIM] pro nahrani" - #define TR_BL_EXIT_KEY " [L TRIM] pro ukonceni" - #define TR_BL_ENABLE "Povoleno" - #define TR_BL_DISABLE "Zakazano" -#else - #define TR_BL_SELECT_KEY "[ENT] pro vybrani souboru" - #define TR_BL_FLASH_KEY "Drzet dlouze [ENT] pro nahrani" - #define TR_BL_ERASE_KEY "Hold [ENT] long to erase" - #define TR_BL_EXIT_KEY "[RTN] pro ukonceni" -#endif - // About screen #define TR_ABOUTUS "O nás" diff --git a/radio/src/translations/da.h b/radio/src/translations/da.h index 968e5db37..91d008ceb 100644 --- a/radio/src/translations/da.h +++ b/radio/src/translations/da.h @@ -1027,80 +1027,6 @@ #define TR_WIDGET_VALUE "Værdi" #endif -// Bootloader common - ASCII characters only -#define TR_BL_USB_CONNECTED "USB forbundet" -#define TR_BL_USB_PLUGIN "eller brug USB kabel" -#define TR_BL_USB_MASS_STORE "for USB disk" -#define TR_BL_USB_PLUGIN_MASS_STORE "eller brug USB kabel for USB disk" -#define TR_BL_WRITE_FW "Installer firmware" -#define TR_BL_FORK "Fork:" -#define TR_BL_VERSION "Version:" -#define TR_BL_RADIO "Radio:" -#define TR_BL_EXIT "Forlad" -#define TR_BL_DIR_MISSING " Katalog mangler" -#define TR_BL_DIR_EMPTY " Katalog er tomt" -#define TR_BL_WRITING_FW "Installerer..." -#define TR_BL_WRITING_COMPL "Installation slut" - -#if LCD_W >= 480 - #define TR_BL_INVALID_FIRMWARE "Ikke en installationsfil!" -#elif LCD_W >= 212 - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN_MASS_STORE - #define TR_BL_HOLD_ENTER_TO_START "\012[ENT] for at starte installation" - #define TR_BL_INVALID_FIRMWARE "\011Ikke en installationsfil! " - #define TR_BL_INVALID_EEPROM "\011Ikke en EEPROM fil! " -#else - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN - #define TR_BL_HOLD_ENTER_TO_START "\006[ENT] for at starte" - #define TR_BL_INVALID_FIRMWARE "\004Ikke en installationsfil! " - #define TR_BL_INVALID_EEPROM "\004Ikke en EEPROM fil! " -#endif - -// Bootloader Taranis specific - ASCII characters only -#define TR_BL_RESTORE_EEPROM "Genskab EEPROM" -#define TR_BL_POWER_KEY "Tryk power knap." -#define TR_BL_FLASH_EXIT "Forlad installation tilstand." - -// Bootloader Horus specific - ASCII characters only -#define TR_BL_ERASE_INT_FLASH "Slet intern flash lager" -#define TR_BL_ERASE_FLASH "Slet flash lager" -#define TR_BL_ERASE_FLASH_MSG "Dette kan vare op til 200s" -#define TR_BL_RF_USB_ACCESS "RF USB adgang" -#define TR_BL_CURRENT_FW "Current firmware:" - -#if defined(PCBPL18) - // Bootloader PL18/NB4+ specific - ASCII characters only - #define TR_BL_ENABLE "Aktiver" - #define TR_BL_DISABLE "Deaktiver" - #if defined(RADIO_NV14_FAMILY) - #define TR_BL_SELECT_KEY "[R TRIM] for at bruge fil" - #define TR_BL_FLASH_KEY "Hold [R TRIM] laenge, for at starte" - #define TR_BL_ERASE_KEY "Hold [R TRIM] laenge, for at slette" - #define TR_BL_EXIT_KEY "[L TRIM] for at forlade" - #elif defined(RADIO_NB4P) - #define TR_BL_SELECT_KEY "[SW1A] for at bruge fil" - #define TR_BL_FLASH_KEY "Hold [SW1A] laenge, for at starte" - #define TR_BL_ERASE_KEY "Hold [SW1A] laenge, for at slette" - #define TR_BL_EXIT_KEY "[SW1B] for at forlade" - #else - #define TR_BL_SELECT_KEY "[TR4 Dn] for at bruge fil" - #define TR_BL_FLASH_KEY "Hold [TR4 Dn] laenge, for at starte" - #define TR_BL_ERASE_KEY "Hold [TR4 Dn] laenge, for at slette" - #define TR_BL_EXIT_KEY "[TR4 Up] for at forlade" - #endif -#elif defined(PCBNV14) - #define TR_BL_SELECT_KEY "[R TRIM] for at bruge fil" - #define TR_BL_FLASH_KEY "[R TRIM] laenge, for at starte" - #define TR_BL_EXIT_KEY "[L TRIM] for at forlade" - #define TR_BL_ENABLE "Aktiver" - #define TR_BL_DISABLE "Deaktiver" -#else - #define TR_BL_SELECT_KEY "[ENT] for at bruge fil" - #define TR_BL_FLASH_KEY "Hold [ENT] laenge, for at starte" - #define TR_BL_ERASE_KEY "Hold [ENT] laenge, for at slette" - #define TR_BL_EXIT_KEY "[RTN] for at forlade" -#endif - // About screen #define TR_ABOUTUS TR(" OM ", "OM") diff --git a/radio/src/translations/de.h b/radio/src/translations/de.h index 8593472f6..ca98d5618 100644 --- a/radio/src/translations/de.h +++ b/radio/src/translations/de.h @@ -1015,80 +1015,6 @@ #define TR_WIDGET_VALUE "Wert" #endif -// Bootloader common - ASCII characters only -#define TR_BL_USB_CONNECTED "USB verbunden" -#define TR_BL_USB_PLUGIN "oder USB-Kabel anschl." -#define TR_BL_USB_MASS_STORE "für den SD-Speicher an" -#define TR_BL_USB_PLUGIN_MASS_STORE "Oder schließen Sie ein USB-Kabel für den SD-Speicher an" -#define TR_BL_WRITE_FW "Schreibe Firmware" -#define TR_BL_FORK "Fork:" -#define TR_BL_VERSION "Version:" -#define TR_BL_RADIO "Radio:" -#define TR_BL_EXIT "Beenden" -#define TR_BL_DIR_MISSING " Verzeichnis fehlt" -#define TR_BL_DIR_EMPTY " Verzeichnis leer" -#define TR_BL_WRITING_FW "Schreibe..." -#define TR_BL_WRITING_COMPL TR("Schreiben fertig","Schreiben abgeschlossen") - -#if LCD_W >= 480 - #define TR_BL_INVALID_FIRMWARE "Keine gültige Firmwaredatei" -#elif LCD_W >= 212 - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN_MASS_STORE - #define TR_BL_HOLD_ENTER_TO_START "\012Halte [ENT] gedrückt, um mit dem Schreiben zu beginnen" - #define TR_BL_INVALID_FIRMWARE "\011Keine gültige Firmwaredatei! " - #define TR_BL_INVALID_EEPROM "\011Keine gültige EEPROM Datei! " -#else - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN - #define TR_BL_HOLD_ENTER_TO_START "Zum Starten [ENT] halten" - #define TR_BL_INVALID_FIRMWARE "Keine gültige Firmware!" - #define TR_BL_INVALID_EEPROM "Kein gültiges EEPROM!" -#endif - -// Bootloader Taranis specific - ASCII characters only -#define TR_BL_RESTORE_EEPROM "EEPROM wiederherstellen" -#define TR_BL_POWER_KEY "Drücke den Power Knopf." -#define TR_BL_FLASH_EXIT "Verlasse den Flashmodus." - -// Bootloader Horus specific - ASCII characters only -#define TR_BL_ERASE_INT_FLASH "Erase Internal Flash Storage" -#define TR_BL_ERASE_FLASH "Erase Flash Storage" -#define TR_BL_ERASE_FLASH_MSG "This may take up to 200s" -#define TR_BL_RF_USB_ACCESS "RF USB Zugriff" -#define TR_BL_CURRENT_FW "Aktuelle Firmware:" - -#if defined(PCBPL18) - // Bootloader PL18/NB4+ specific - ASCII characters only - #define TR_BL_ENABLE "Aktivieren" - #define TR_BL_DISABLE "Deaktivieren" - #if defined(RADIO_NV14_FAMILY) - #define TR_BL_SELECT_KEY "[R TRIM] um Datei auszuwählen" - #define TR_BL_FLASH_KEY "Halte [R TRIM] gedrückt, zum schreiben" - #define TR_BL_ERASE_KEY "Halte [R TRIM] gedrückt, to erase" - #define TR_BL_EXIT_KEY "[L TRIM] zum beenden" - #elif defined(RADIO_NB4P) - #define TR_BL_SELECT_KEY "[SW1A] um Datei auszuwählen" - #define TR_BL_FLASH_KEY "Halte [SW1A] gedrückt, zum schreiben" - #define TR_BL_ERASE_KEY "Halte [SW1A] gedrückt, to erase" - #define TR_BL_EXIT_KEY "[SW1B] zum beenden" - #else - #define TR_BL_SELECT_KEY "[TR4 Dn] um Datei auszuwählen" - #define TR_BL_FLASH_KEY "Halte [TR4 Dn] gedrückt, zum schreiben" - #define TR_BL_ERASE_KEY "Halte [TR4 Dn] gedrückt, to erase" - #define TR_BL_EXIT_KEY "[TR4 Up] zum beenden" - #endif -#elif defined(PCBNV14) - #define TR_BL_SELECT_KEY "[R TRIM] um Datei auszuwählen" - #define TR_BL_FLASH_KEY "Halte [R TRIM] gedrückt, zum schreiben" - #define TR_BL_EXIT_KEY " [L TRIM] zum beenden" - #define TR_BL_ENABLE "Aktivieren" - #define TR_BL_DISABLE "Deaktivieren" -#else - #define TR_BL_SELECT_KEY "[ENT] um Datei auszuwählen" - #define TR_BL_FLASH_KEY "Halte [ENT] gedrückt, zum schreiben" - #define TR_BL_ERASE_KEY "Halte [ENT] gedrückt, to erase" - #define TR_BL_EXIT_KEY "[RTN] zum beenden" -#endif - // Taranis Info Zeile Anzeigen #define TR_LIMITS_HEADERS_NAME "Name" #define TR_LIMITS_HEADERS_SUBTRIM "Subtrim" diff --git a/radio/src/translations/en.h b/radio/src/translations/en.h index 045300418..fc974e72d 100644 --- a/radio/src/translations/en.h +++ b/radio/src/translations/en.h @@ -1028,80 +1028,6 @@ #define TR_WIDGET_VALUE "Value" #endif -// Bootloader common - ASCII characters only -#define TR_BL_USB_CONNECTED "USB Connected" -#define TR_BL_USB_PLUGIN "Or plug in a USB cable" -#define TR_BL_USB_MASS_STORE "for mass storage" -#define TR_BL_USB_PLUGIN_MASS_STORE "Or plug in a USB cable for mass storage" -#define TR_BL_WRITE_FW "Write Firmware" -#define TR_BL_FORK "Fork:" -#define TR_BL_VERSION "Version:" -#define TR_BL_RADIO "Radio:" -#define TR_BL_EXIT "Exit" -#define TR_BL_DIR_MISSING " Directory is missing" -#define TR_BL_DIR_EMPTY " Directory is empty" -#define TR_BL_WRITING_FW "Writing..." -#define TR_BL_WRITING_COMPL "Writing complete" - -#if LCD_W >= 480 - #define TR_BL_INVALID_FIRMWARE "Not a valid firmware file" -#elif LCD_W >= 212 - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN_MASS_STORE - #define TR_BL_HOLD_ENTER_TO_START "\012Hold [ENT] to start writing" - #define TR_BL_INVALID_FIRMWARE "\011Not a valid firmware file! " - #define TR_BL_INVALID_EEPROM "\011Not a valid EEPROM file! " -#else - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN - #define TR_BL_HOLD_ENTER_TO_START "\006Hold [ENT] to start" - #define TR_BL_INVALID_FIRMWARE "\004Not a valid firmware! " - #define TR_BL_INVALID_EEPROM "\004Not a valid EEPROM! " -#endif - -// Bootloader Taranis specific - ASCII characters only -#define TR_BL_RESTORE_EEPROM "Restore EEPROM" -#define TR_BL_POWER_KEY "Press the power button." -#define TR_BL_FLASH_EXIT "Exit the flashing mode." - -// Bootloader Horus specific - ASCII characters only -#define TR_BL_ERASE_INT_FLASH "Erase Internal Flash Storage" -#define TR_BL_ERASE_FLASH "Erase Flash Storage" -#define TR_BL_ERASE_FLASH_MSG "This may take up to 200s" -#define TR_BL_RF_USB_ACCESS "RF USB access" -#define TR_BL_CURRENT_FW "Current Firmware:" - -#if defined(PCBPL18) - // Bootloader PL18/NB4+ specific - ASCII characters only - #define TR_BL_ENABLE "Enable" - #define TR_BL_DISABLE "Disable" - #if defined(RADIO_NV14_FAMILY) - #define TR_BL_SELECT_KEY "[R TRIM] to select file" - #define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash" - #define TR_BL_ERASE_KEY "Hold [R TRIM] long to erase" - #define TR_BL_EXIT_KEY "[L TRIM] to exit" - #elif defined(RADIO_NB4P) - #define TR_BL_SELECT_KEY "[SW1A] to select file" - #define TR_BL_FLASH_KEY "Hold [SW1A] long to flash" - #define TR_BL_ERASE_KEY "Hold [SW1A] long to erase" - #define TR_BL_EXIT_KEY "[SW1B] to exit" - #else - #define TR_BL_SELECT_KEY "[TR4 Dn] to select file" - #define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash" - #define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase" - #define TR_BL_EXIT_KEY "[TR4 Up] to exit" - #endif -#elif defined(PCBNV14) - #define TR_BL_SELECT_KEY "[R TRIM] to select file" - #define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash" - #define TR_BL_EXIT_KEY " [L TRIM] to exit" - #define TR_BL_ENABLE "Enable" - #define TR_BL_DISABLE "Disable" -#else - #define TR_BL_SELECT_KEY "[ENT] to select file" - #define TR_BL_FLASH_KEY "Hold [ENT] long to flash" - #define TR_BL_ERASE_KEY "Hold [ENT] long to erase" - #define TR_BL_EXIT_KEY "[RTN] to exit" -#endif - // About screen #define TR_ABOUTUS TR(" ABOUT ", "ABOUT") diff --git a/radio/src/translations/es.h b/radio/src/translations/es.h index 45dc205aa..c59ace681 100644 --- a/radio/src/translations/es.h +++ b/radio/src/translations/es.h @@ -1025,80 +1025,6 @@ #define TR_WIDGET_VALUE "Value" #endif -// Bootloader common - ASCII characters only -#define TR_BL_USB_CONNECTED "USB Connected" -#define TR_BL_USB_PLUGIN "Or plug in a USB cable" -#define TR_BL_USB_MASS_STORE "for mass storage" -#define TR_BL_USB_PLUGIN_MASS_STORE "Or plug in a USB cable for mass storage" -#define TR_BL_WRITE_FW "Write Firmware" -#define TR_BL_FORK "Fork:" -#define TR_BL_VERSION "Version:" -#define TR_BL_RADIO "Radio:" -#define TR_BL_EXIT "Exit" -#define TR_BL_DIR_MISSING " Directory is missing" -#define TR_BL_DIR_EMPTY " Directory is empty" -#define TR_BL_WRITING_FW "Writing..." -#define TR_BL_WRITING_COMPL "Writing complete" - -#if LCD_W >= 480 - #define TR_BL_INVALID_FIRMWARE "Not a valid firmware file" -#elif LCD_W >= 212 - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN_MASS_STORE - #define TR_BL_HOLD_ENTER_TO_START "\012Hold [ENT] to start writing" - #define TR_BL_INVALID_FIRMWARE "\011Not a valid firmware file! " - #define TR_BL_INVALID_EEPROM "\011Not a valid EEPROM file! " -#else - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN - #define TR_BL_HOLD_ENTER_TO_START "\006Hold [ENT] to start" - #define TR_BL_INVALID_FIRMWARE "\004Not a valid firmware! " - #define TR_BL_INVALID_EEPROM "\004Not a valid EEPROM! " -#endif - -// Bootloader Taranis specific - ASCII characters only -#define TR_BL_RESTORE_EEPROM "Restore EEPROM" -#define TR_BL_POWER_KEY "Press the power button." -#define TR_BL_FLASH_EXIT "Exit the flashing mode." - -// Bootloader Horus specific - ASCII characters only -#define TR_BL_ERASE_INT_FLASH "Erase Internal Flash Storage" -#define TR_BL_ERASE_FLASH "Erase Flash Storage" -#define TR_BL_ERASE_FLASH_MSG "This may take up to 200s" -#define TR_BL_RF_USB_ACCESS "RF USB access" -#define TR_BL_CURRENT_FW "Current Firmware:" - -#if defined(PCBPL18) - // Bootloader PL18/NB4+ specific - ASCII characters only - #define TR_BL_ENABLE "Enable" - #define TR_BL_DISABLE "Disable" - #if defined(RADIO_NV14_FAMILY) - #define TR_BL_SELECT_KEY "[R TRIM] to select file" - #define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash" - #define TR_BL_ERASE_KEY "Hold [R TRIM] long to erase" - #define TR_BL_EXIT_KEY "[L TRIM] to exit" - #elif defined(RADIO_NB4P) - #define TR_BL_SELECT_KEY "[SW1A] to select file" - #define TR_BL_FLASH_KEY "Hold [SW1A] long to flash" - #define TR_BL_ERASE_KEY "Hold [SW1A] long to erase" - #define TR_BL_EXIT_KEY "[SW1B] to exit" - #else - #define TR_BL_SELECT_KEY "[TR4 Dn] to select file" - #define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash" - #define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase" - #define TR_BL_EXIT_KEY "[TR4 Up] to exit" - #endif -#elif defined(PCBNV14) - #define TR_BL_SELECT_KEY "[R TRIM] to select file" - #define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash" - #define TR_BL_EXIT_KEY " [L TRIM] to exit" - #define TR_BL_ENABLE "Enable" - #define TR_BL_DISABLE "Disable" -#else - #define TR_BL_SELECT_KEY "[ENT] to select file" - #define TR_BL_FLASH_KEY "Hold [ENT] long to flash" - #define TR_BL_ERASE_KEY "Hold [ENT] long to erase" - #define TR_BL_EXIT_KEY "[RTN] to exit" -#endif - // About screen #define TR_ABOUTUS "Nosotros" diff --git a/radio/src/translations/fi.h b/radio/src/translations/fi.h index c0aa04439..9ebecac58 100644 --- a/radio/src/translations/fi.h +++ b/radio/src/translations/fi.h @@ -1037,80 +1037,6 @@ #define TR_WIDGET_VALUE "Value" #endif -// Bootloader common - ASCII characters only -#define TR_BL_USB_CONNECTED "USB Connected" -#define TR_BL_USB_PLUGIN "Or plug in a USB cable" -#define TR_BL_USB_MASS_STORE "for mass storage" -#define TR_BL_USB_PLUGIN_MASS_STORE "Or plug in a USB cable for mass storage" -#define TR_BL_WRITE_FW "Write Firmware" -#define TR_BL_FORK "Fork:" -#define TR_BL_VERSION "Version:" -#define TR_BL_RADIO "Radio:" -#define TR_BL_EXIT "Exit" -#define TR_BL_DIR_MISSING " Directory is missing" -#define TR_BL_DIR_EMPTY " Directory is empty" -#define TR_BL_WRITING_FW "Writing..." -#define TR_BL_WRITING_COMPL "Writing complete" - -#if LCD_W >= 480 - #define TR_BL_INVALID_FIRMWARE "Not a valid firmware file" -#elif LCD_W >= 212 - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN_MASS_STORE - #define TR_BL_HOLD_ENTER_TO_START "\012Hold [ENT] to start writing" - #define TR_BL_INVALID_FIRMWARE "\011Not a valid firmware file! " - #define TR_BL_INVALID_EEPROM "\011Not a valid EEPROM file! " -#else - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN - #define TR_BL_HOLD_ENTER_TO_START "\006Hold [ENT] to start" - #define TR_BL_INVALID_FIRMWARE "\004Not a valid firmware! " - #define TR_BL_INVALID_EEPROM "\004Not a valid EEPROM! " -#endif - -// Bootloader Taranis specific - ASCII characters only -#define TR_BL_RESTORE_EEPROM "Restore EEPROM" -#define TR_BL_POWER_KEY "Press the power button." -#define TR_BL_FLASH_EXIT "Exit the flashing mode." - -// Bootloader Horus specific - ASCII characters only -#define TR_BL_ERASE_INT_FLASH "Erase Internal Flash Storage" -#define TR_BL_ERASE_FLASH "Erase Flash Storage" -#define TR_BL_ERASE_FLASH_MSG "This may take up to 200s" -#define TR_BL_RF_USB_ACCESS "RF USB access" -#define TR_BL_CURRENT_FW "Current Firmware:" - -#if defined(PCBPL18) - // Bootloader PL18/NB4+ specific - ASCII characters only - #define TR_BL_ENABLE "Enable" - #define TR_BL_DISABLE "Disable" - #if defined(RADIO_NV14_FAMILY) - #define TR_BL_SELECT_KEY "[R TRIM] to select file" - #define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash" - #define TR_BL_ERASE_KEY "Hold [R TRIM] long to erase" - #define TR_BL_EXIT_KEY "[L TRIM] to exit" - #elif defined(RADIO_NB4P) - #define TR_BL_SELECT_KEY "[SW1A] to select file" - #define TR_BL_FLASH_KEY "Hold [SW1A] long to flash" - #define TR_BL_ERASE_KEY "Hold [SW1A] long to erase" - #define TR_BL_EXIT_KEY "[SW1B] to exit" - #else - #define TR_BL_SELECT_KEY "[TR4 Dn] to select file" - #define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash" - #define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase" - #define TR_BL_EXIT_KEY "[TR4 Up] to exit" - #endif -#elif defined(PCBNV14) - #define TR_BL_SELECT_KEY "[R TRIM] to select file" - #define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash" - #define TR_BL_EXIT_KEY " [L TRIM] to exit" - #define TR_BL_ENABLE "Enable" - #define TR_BL_DISABLE "Disable" -#else - #define TR_BL_SELECT_KEY "[ENT] to select file" - #define TR_BL_FLASH_KEY "Hold [ENT] long to flash" - #define TR_BL_ERASE_KEY "Hold [ENT] long to erase" - #define TR_BL_EXIT_KEY "[RTN] to exit" -#endif - // About screen #define TR_ABOUTUS TR(" ABOUT ", "ABOUT") diff --git a/radio/src/translations/fr.h b/radio/src/translations/fr.h index 6d098a3a8..e0d87ed33 100644 --- a/radio/src/translations/fr.h +++ b/radio/src/translations/fr.h @@ -1038,80 +1038,6 @@ #define TR_WIDGET_VALUE "Valeur" #endif -// Bootloader common - ASCII characters only -#define TR_BL_USB_CONNECTED "USB Connecte" -#define TR_BL_USB_PLUGIN "ou branchez cable USB" -#define TR_BL_USB_MASS_STORE "pour stockage de masse" -#define TR_BL_USB_PLUGIN_MASS_STORE "ou branchez cable USB pour stockage de masse" -#define TR_BL_WRITE_FW "Ecriture Firmware" -#define TR_BL_FORK "Fork:" -#define TR_BL_VERSION "Version:" -#define TR_BL_RADIO "Radio:" -#define TR_BL_EXIT "Quitter" -#define TR_BL_DIR_MISSING " Repertoire absent" -#define TR_BL_DIR_EMPTY " Repertoire vide" -#define TR_BL_WRITING_FW "Ecriture Firmware ..." -#define TR_BL_WRITING_COMPL "Ecriture terminée" - -#if LCD_W >= 480 - #define TR_BL_INVALID_FIRMWARE "Fichier firmware non valide" -#elif LCD_W >= 212 - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN_MASS_STORE - #define TR_BL_HOLD_ENTER_TO_START "\012Appui [ENT] pour demarrer ecriture" - #define TR_BL_INVALID_FIRMWARE "\011 Fichier firmware non valide! " - #define TR_BL_INVALID_EEPROM "\011Fichier EEPROM non valide ! " -#else - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN - #define TR_BL_HOLD_ENTER_TO_START "\006Appui [ENT] pour demarrer" - #define TR_BL_INVALID_FIRMWARE "\004Firmware non valide! " - #define TR_BL_INVALID_EEPROM "\004EEPROM non valide ! " -#endif - -// Bootloader Taranis specific - ASCII characters only -#define TR_BL_RESTORE_EEPROM "Restaurer EEPROM" -#define TR_BL_POWER_KEY "Appuyez sur le bouton power." -#define TR_BL_FLASH_EXIT "Quitter mode flashage." - -// Bootloader Horus specific - ASCII characters only -#define TR_BL_ERASE_INT_FLASH "Erase Internal Flash Storage" -#define TR_BL_ERASE_FLASH "Erase Flash Storage" -#define TR_BL_ERASE_FLASH_MSG "This may take up to 200s" -#define TR_BL_RF_USB_ACCESS "RF USB access" -#define TR_BL_CURRENT_FW "Firmware actuel:" - -#if defined(PCBPL18) - // Bootloader PL18/NB4+ specific - ASCII characters only - #define TR_BL_ENABLE "Activer" - #define TR_BL_DISABLE "Désactiver" - #if defined(RADIO_NV14_FAMILY) - #define TR_BL_SELECT_KEY "[R TRIM] pour sélect. fichier" - #define TR_BL_FLASH_KEY "Appui long [R TRIM] pour flasher" - #define TR_BL_ERASE_KEY "Appui long [R TRIM] to erase" - #define TR_BL_EXIT_KEY "[L TRIM] pour quitter" - #elif defined(RADIO_NB4P) - #define TR_BL_SELECT_KEY "[SW1A] pour sélect. fichier" - #define TR_BL_FLASH_KEY "Appui long [SW1A] pour flasher" - #define TR_BL_ERASE_KEY "Appui long [SW1A] to erase" - #define TR_BL_EXIT_KEY "[SW1B] pour quitter" - #else - #define TR_BL_SELECT_KEY "[TR4 Dn] pour sélect. fichier" - #define TR_BL_FLASH_KEY "Appui long [TR4 Dn] pour flasher" - #define TR_BL_ERASE_KEY "Appui long [TR4 Dn] to erase" - #define TR_BL_EXIT_KEY "[TR4 U] pour quitter" - #endif -#elif defined(PCBNV14) - #define TR_BL_SELECT_KEY "[R TRIM] pour sélect. fichier" - #define TR_BL_FLASH_KEY "Appui long [R TRIM] pour flasher" - #define TR_BL_EXIT_KEY " [L TRIM] pour quitter" - #define TR_BL_ENABLE "Activer" - #define TR_BL_DISABLE "Désactiver" -#else - #define TR_BL_SELECT_KEY "[ENT] pour select. fichier" - #define TR_BL_FLASH_KEY "Appui long [ENT] pour flasher" - #define TR_BL_ERASE_KEY "Appui long [ENT] to erase" - #define TR_BL_EXIT_KEY "[RTN] pour quitter" -#endif - // About screen #define TR_ABOUTUS TR(" A PROPOS ", "A PROPOS") diff --git a/radio/src/translations/he.h b/radio/src/translations/he.h index a1b43ca0d..482583f5a 100644 --- a/radio/src/translations/he.h +++ b/radio/src/translations/he.h @@ -1027,80 +1027,6 @@ #define TR_WIDGET_VALUE "ערך" #endif -// Bootloader common - ASCII characters only -#define TR_BL_USB_CONNECTED "USB Connected" -#define TR_BL_USB_PLUGIN "Or plug in a USB cable" -#define TR_BL_USB_MASS_STORE "for mass storage" -#define TR_BL_USB_PLUGIN_MASS_STORE "Or plug in a USB cable for mass storage" -#define TR_BL_WRITE_FW "Write Firmware" -#define TR_BL_FORK "Fork:" -#define TR_BL_VERSION "Version:" -#define TR_BL_RADIO "Radio:" -#define TR_BL_EXIT "Exit" -#define TR_BL_DIR_MISSING " Directory is missing" -#define TR_BL_DIR_EMPTY " Directory is empty" -#define TR_BL_WRITING_FW "Writing..." -#define TR_BL_WRITING_COMPL "Writing complete" - -#if LCD_W >= 480 - #define TR_BL_INVALID_FIRMWARE "Not a valid firmware file" -#elif LCD_W >= 212 - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN_MASS_STORE - #define TR_BL_HOLD_ENTER_TO_START "\012Hold [ENT] to start writing" - #define TR_BL_INVALID_FIRMWARE "\011Not a valid firmware file! " - #define TR_BL_INVALID_EEPROM "\011Not a valid EEPROM file! " -#else - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN - #define TR_BL_HOLD_ENTER_TO_START "\006Hold [ENT] to start" - #define TR_BL_INVALID_FIRMWARE "\004Not a valid firmware! " - #define TR_BL_INVALID_EEPROM "\004Not a valid EEPROM! " -#endif - -// Bootloader Taranis specific - ASCII characters only -#define TR_BL_RESTORE_EEPROM "Restore EEPROM" -#define TR_BL_POWER_KEY "Press the power button." -#define TR_BL_FLASH_EXIT "Exit the flashing mode." - -// Bootloader Horus specific - ASCII characters only -#define TR_BL_ERASE_INT_FLASH "Erase Internal Flash Storage" -#define TR_BL_ERASE_FLASH "Erase Flash Storage" -#define TR_BL_ERASE_FLASH_MSG "This may take up to 200s" -#define TR_BL_RF_USB_ACCESS "RF USB access" -#define TR_BL_CURRENT_FW "Current Firmware:" - -#if defined(PCBPL18) - // Bootloader PL18/NB4+ specific - ASCII characters only - #define TR_BL_ENABLE "Enable" - #define TR_BL_DISABLE "Disable" - #if defined(RADIO_NV14_FAMILY) - #define TR_BL_SELECT_KEY "[R TRIM] to select file" - #define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash" - #define TR_BL_ERASE_KEY "Hold [R TRIM] long to erase" - #define TR_BL_EXIT_KEY "[L TRIM] to exit" - #elif defined(RADIO_NB4P) - #define TR_BL_SELECT_KEY "[SW1A] to select file" - #define TR_BL_FLASH_KEY "Hold [SW1A] long to flash" - #define TR_BL_ERASE_KEY "Hold [SW1A] long to erase" - #define TR_BL_EXIT_KEY "[SW1B] to exit" - #else - #define TR_BL_SELECT_KEY "[TR4 Dn] to select file" - #define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash" - #define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase" - #define TR_BL_EXIT_KEY "[TR4 Up] to exit" - #endif -#elif defined(PCBNV14) - #define TR_BL_SELECT_KEY "[R TRIM] to select file" - #define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash" - #define TR_BL_EXIT_KEY " [L TRIM] to exit" - #define TR_BL_ENABLE "Enable" - #define TR_BL_DISABLE "Disable" -#else - #define TR_BL_SELECT_KEY "[ENT] to select file" - #define TR_BL_FLASH_KEY "Hold [ENT] long to flash" - #define TR_BL_ERASE_KEY "Hold [ENT] long to erase" - #define TR_BL_EXIT_KEY "[RTN] to exit" -#endif - // About screen #define TR_ABOUTUS TR(" ABOUT ", "ABOUT") diff --git a/radio/src/translations/it.h b/radio/src/translations/it.h index e74be7320..c65720acc 100644 --- a/radio/src/translations/it.h +++ b/radio/src/translations/it.h @@ -1022,79 +1022,6 @@ #define TR_WIDGET_VALUE "Valore" #endif -// Bootloader common -#define TR_BL_USB_CONNECTED "USB Connessa" -#define TR_BL_USB_PLUGIN "O connetti il cavo USB" -#define TR_BL_USB_MASS_STORE "per memoria di massa" -#define TR_BL_USB_PLUGIN_MASS_STORE "O connetti il cavo USB per memoria di massa" -#define TR_BL_WRITE_FW "Scrivo il Firmware" -#define TR_BL_FORK "Fork:" -#define TR_BL_VERSION "Versione:" -#define TR_BL_RADIO "Radio:" -#define TR_BL_EXIT "Esci" -#define TR_BL_DIR_MISSING " Cartella non trovata" -#define TR_BL_DIR_EMPTY " Cartella vuota" -#define TR_BL_WRITING_FW "Scrittura Firmware..." -#define TR_BL_WRITING_COMPL "Scrittura completata" - -#if LCD_W >= 480 - #define TR_BL_INVALID_FIRMWARE "Firmware non valido" -#elif LCD_W >= 212 - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN_MASS_STORE - #define TR_BL_HOLD_ENTER_TO_START "\012Premi [ENT] per iniziare la scrittura" - #define TR_BL_INVALID_FIRMWARE "\011Non è un file Firmware valido! " - #define TR_BL_INVALID_EEPROM "\011Non è un file EEPROM valido! " -#else - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN - #define TR_BL_HOLD_ENTER_TO_START "\006Premi [ENT] per partire" - #define TR_BL_INVALID_FIRMWARE "\00Non è un file Firmware valido!" - #define TR_BL_INVALID_EEPROM "\004Non è un file EEPROM valido! " -#endif - -// Bootloader Taranis specific - ASCII characters only -#define TR_BL_RESTORE_EEPROM "Ripristino EEPROM" -#define TR_BL_POWER_KEY "Premi il bottone d'accensione" -#define TR_BL_FLASH_EXIT "Esci dal modo scrittura." - -// Bootloader Horus specific - ASCII characters only -#define TR_BL_ERASE_INT_FLASH "Erase Internal Flash Storage" -#define TR_BL_ERASE_FLASH "Erase Flash Storage" -#define TR_BL_ERASE_FLASH_MSG "This may take up to 200s" -#define TR_BL_RF_USB_ACCESS "RF USB access" - -#if defined(PCBPL18) - // Bootloader PL18/NB4+ specific - ASCII characters only - #define TR_BL_ENABLE "Abilita" - #define TR_BL_DISABLE "Disabilita" - #if defined(RADIO_NV14_FAMILY) - #define TR_BL_SELECT_KEY "[R TRIM] per scegliere il file" - #define TR_BL_FLASH_KEY "Tener premuto [R TRIM] per scrivere" - #define TR_BL_ERASE_KEY "Tener premuto [R TRIM] to erase" - #define TR_BL_EXIT_KEY "[L TRIM] per uscire" - #elif defined(RADIO_NB4P) - #define TR_BL_SELECT_KEY "[SW1A] per scegliere il file" - #define TR_BL_FLASH_KEY "Tener premuto [SW1A] per scrivere" - #define TR_BL_ERASE_KEY "Tener premuto [SW1A] to erase" - #define TR_BL_EXIT_KEY "[SW1B] per uscire" - #else - #define TR_BL_SELECT_KEY "[TR4 Dn] per scegliere il file" - #define TR_BL_FLASH_KEY "Tener premuto [TR4 Dn] per scrivere" - #define TR_BL_ERASE_KEY "Tener premuto [TR4 Dn] to erase" - #define TR_BL_EXIT_KEY "[TR4 Up] per uscire" - #endif -#elif defined(PCBNV14) - #define TR_BL_SELECT_KEY "[R TRIM] per scegliere il file" - #define TR_BL_FLASH_KEY "Tener premuto [R TRIM] per scrivere" - #define TR_BL_EXIT_KEY " [L TRIM] per uscire" - #define TR_BL_ENABLE "Abilita" - #define TR_BL_DISABLE "Disabilita" -#else - #define TR_BL_SELECT_KEY "[ENT] per scegliere il file" - #define TR_BL_FLASH_KEY "Tenere premuto [ENT] per scrivere" - #define TR_BL_ERASE_KEY "Hold [ENT] long to erase" - #define TR_BL_EXIT_KEY "[RTN] per uscire" -#endif - // About screen #define TR_ABOUTUS TR(" INFO ", "INFO SU") diff --git a/radio/src/translations/jp.h b/radio/src/translations/jp.h index 7f8c8b8d0..08301cf5f 100644 --- a/radio/src/translations/jp.h +++ b/radio/src/translations/jp.h @@ -1027,80 +1027,6 @@ #define TR_WIDGET_VALUE "値" #endif -// Bootloader common - ASCII characters only -#define TR_BL_USB_CONNECTED "USB Connected" -#define TR_BL_USB_PLUGIN "Or plug in a USB cable" -#define TR_BL_USB_MASS_STORE "for mass storage" -#define TR_BL_USB_PLUGIN_MASS_STORE "Or plug in a USB cable for mass storage" -#define TR_BL_WRITE_FW "Write Firmware" -#define TR_BL_FORK "Fork:" -#define TR_BL_VERSION "Version:" -#define TR_BL_RADIO "Radio:" -#define TR_BL_EXIT "Exit" -#define TR_BL_DIR_MISSING " Directory is missing" -#define TR_BL_DIR_EMPTY " Directory is empty" -#define TR_BL_WRITING_FW "Writing..." -#define TR_BL_WRITING_COMPL "Writing complete" - -#if LCD_W >= 480 - #define TR_BL_INVALID_FIRMWARE "Not a valid firmware file" -#elif LCD_W >= 212 - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN_MASS_STORE - #define TR_BL_HOLD_ENTER_TO_START "\012Hold [ENT] to start writing" - #define TR_BL_INVALID_FIRMWARE "\011Not a valid firmware file! " - #define TR_BL_INVALID_EEPROM "\011Not a valid EEPROM file! " -#else - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN - #define TR_BL_HOLD_ENTER_TO_START "\006Hold [ENT] to start" - #define TR_BL_INVALID_FIRMWARE "\004Not a valid firmware! " - #define TR_BL_INVALID_EEPROM "\004Not a valid EEPROM! " -#endif - -// Bootloader Taranis specific - ASCII characters only -#define TR_BL_RESTORE_EEPROM "Restore EEPROM" -#define TR_BL_POWER_KEY "Press the power button." -#define TR_BL_FLASH_EXIT "Exit the flashing mode." - -// Bootloader Horus specific - ASCII characters only -#define TR_BL_ERASE_INT_FLASH "Erase Internal Flash Storage" -#define TR_BL_ERASE_FLASH "Erase Flash Storage" -#define TR_BL_ERASE_FLASH_MSG "This may take up to 200s" -#define TR_BL_RF_USB_ACCESS "RF USB access" -#define TR_BL_CURRENT_FW "Current Firmware:" - -#if defined(PCBPL18) - // Bootloader PL18/NB4+ specific - ASCII characters only - #define TR_BL_ENABLE "Enable" - #define TR_BL_DISABLE "Disable" - #if defined(RADIO_NV14_FAMILY) - #define TR_BL_SELECT_KEY "[R TRIM] to select file" - #define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash" - #define TR_BL_ERASE_KEY "Hold [R TRIM] long to erase" - #define TR_BL_EXIT_KEY "[L TRIM] to exit" - #elif defined(RADIO_NB4P) - #define TR_BL_SELECT_KEY "[SW1A] to select file" - #define TR_BL_FLASH_KEY "Hold [SW1A] long to flash" - #define TR_BL_ERASE_KEY "Hold [SW1A] long to erase" - #define TR_BL_EXIT_KEY "[SW1B] to exit" - #else - #define TR_BL_SELECT_KEY "[TR4 Dn] to select file" - #define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash" - #define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase" - #define TR_BL_EXIT_KEY "[TR4 Up] to exit" - #endif -#elif defined(PCBNV14) - #define TR_BL_SELECT_KEY "[R TRIM] to select file" - #define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash" - #define TR_BL_EXIT_KEY " [L TRIM] to exit" - #define TR_BL_ENABLE "Enable" - #define TR_BL_DISABLE "Disable" -#else - #define TR_BL_SELECT_KEY "[ENT] to select file" - #define TR_BL_FLASH_KEY "Hold [ENT] long to flash" - #define TR_BL_ERASE_KEY "Hold [ENT] long to erase" - #define TR_BL_EXIT_KEY "[RTN] to exit" -#endif - // About screen #define TR_ABOUTUS TR(" 概要 ", "概要") diff --git a/radio/src/translations/ko.h b/radio/src/translations/ko.h index 87a40550a..66e8b5698 100644 --- a/radio/src/translations/ko.h +++ b/radio/src/translations/ko.h @@ -1089,80 +1089,6 @@ #define TR_WIDGET_VALUE "값" #endif -// Bootloader common - ASCII characters only -#define TR_BL_USB_CONNECTED "USB Connected" -#define TR_BL_USB_PLUGIN "Or plug in a USB cable" -#define TR_BL_USB_MASS_STORE "for mass storage" -#define TR_BL_USB_PLUGIN_MASS_STORE "Or plug in a USB cable for mass storage" -#define TR_BL_WRITE_FW "Write Firmware" -#define TR_BL_FORK "Fork:" -#define TR_BL_VERSION "Version:" -#define TR_BL_RADIO "Radio:" -#define TR_BL_EXIT "Exit" -#define TR_BL_DIR_MISSING " Directory is missing" -#define TR_BL_DIR_EMPTY " Directory is empty" -#define TR_BL_WRITING_FW "Writing..." -#define TR_BL_WRITING_COMPL "Writing complete" - -#if LCD_W >= 480 - #define TR_BL_INVALID_FIRMWARE "Not a valid firmware file" -#elif LCD_W >= 212 - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN_MASS_STORE - #define TR_BL_HOLD_ENTER_TO_START "\012Hold [ENT] to start writing" - #define TR_BL_INVALID_FIRMWARE "\011Not a valid firmware file! " - #define TR_BL_INVALID_EEPROM "\011Not a valid EEPROM file! " -#else - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN - #define TR_BL_HOLD_ENTER_TO_START "\006Hold [ENT] to start" - #define TR_BL_INVALID_FIRMWARE "\004Not a valid firmware! " - #define TR_BL_INVALID_EEPROM "\004Not a valid EEPROM! " -#endif - -// Bootloader Taranis specific - ASCII characters only -#define TR_BL_RESTORE_EEPROM "Restore EEPROM" -#define TR_BL_POWER_KEY "Press the power button." -#define TR_BL_FLASH_EXIT "Exit the flashing mode." - -// Bootloader Horus specific - ASCII characters only -#define TR_BL_ERASE_INT_FLASH "Erase Internal Flash Storage" -#define TR_BL_ERASE_FLASH "Erase Flash Storage" -#define TR_BL_ERASE_FLASH_MSG "This may take up to 200s" -#define TR_BL_RF_USB_ACCESS "RF USB access" -#define TR_BL_CURRENT_FW "Current Firmware:" - -#if defined(PCBPL18) - // Bootloader PL18/NB4+ specific - ASCII characters only - #define TR_BL_ENABLE "Enable" - #define TR_BL_DISABLE "Disable" - #if defined(RADIO_NV14_FAMILY) - #define TR_BL_SELECT_KEY "[R TRIM] to select file" - #define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash" - #define TR_BL_ERASE_KEY "Hold [R TRIM] long to erase" - #define TR_BL_EXIT_KEY "[L TRIM] to exit" - #elif defined(RADIO_NB4P) - #define TR_BL_SELECT_KEY "[SW1A] to select file" - #define TR_BL_FLASH_KEY "Hold [SW1A] long to flash" - #define TR_BL_ERASE_KEY "Hold [SW1A] long to erase" - #define TR_BL_EXIT_KEY "[SW1B] to exit" - #else - #define TR_BL_SELECT_KEY "[TR4 Dn] to select file" - #define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash" - #define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase" - #define TR_BL_EXIT_KEY "[TR4 Up] to exit" - #endif -#elif defined(PCBNV14) - #define TR_BL_SELECT_KEY "[R TRIM] to select file" - #define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash" - #define TR_BL_EXIT_KEY " [L TRIM] to exit" - #define TR_BL_ENABLE "Enable" - #define TR_BL_DISABLE "Disable" -#else - #define TR_BL_SELECT_KEY "[ENT] to select file" - #define TR_BL_FLASH_KEY "Hold [ENT] long to flash" - #define TR_BL_ERASE_KEY "Hold [ENT] long to erase" - #define TR_BL_EXIT_KEY "[RTN] to exit" -#endif - // About screen #define TR_ABOUTUS TR(" 정보 ", "정보") #define TR_CHR_HOUR 'h' diff --git a/radio/src/translations/nl.h b/radio/src/translations/nl.h index 633167f59..2e4f8ed65 100644 --- a/radio/src/translations/nl.h +++ b/radio/src/translations/nl.h @@ -1030,80 +1030,6 @@ #define TR_WIDGET_VALUE "Value" #endif -// Bootloader common - ASCII characters only -#define TR_BL_USB_CONNECTED "USB Connected" -#define TR_BL_USB_PLUGIN "Or plug in a USB cable" -#define TR_BL_USB_MASS_STORE "for mass storage" -#define TR_BL_USB_PLUGIN_MASS_STORE "Or plug in a USB cable for mass storage" -#define TR_BL_WRITE_FW "Write Firmware" -#define TR_BL_FORK "Fork:" -#define TR_BL_VERSION "Version:" -#define TR_BL_RADIO "Radio:" -#define TR_BL_EXIT "Exit" -#define TR_BL_DIR_MISSING " Directory is missing" -#define TR_BL_DIR_EMPTY " Directory is empty" -#define TR_BL_WRITING_FW "Writing Firmware ..." -#define TR_BL_WRITING_COMPL "Writing Complete" - -#if LCD_W >= 480 - #define TR_BL_INVALID_FIRMWARE "Not a valid firmware file" -#elif LCD_W >= 212 - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN_MASS_STORE - #define TR_BL_HOLD_ENTER_TO_START "\012Hold [ENT] to start writing" - #define TR_BL_INVALID_FIRMWARE "\011Not a valid firmware file! " - #define TR_BL_INVALID_EEPROM "\011Not a valid EEPROM file! " -#else - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN - #define TR_BL_HOLD_ENTER_TO_START "\006Hold [ENT] to start" - #define TR_BL_INVALID_FIRMWARE "\004Not a valid firmware! " - #define TR_BL_INVALID_EEPROM "\004Not a valid EEPROM! " -#endif - -// Bootloader Taranis specific - ASCII characters only -#define TR_BL_RESTORE_EEPROM "Restore EEPROM" -#define TR_BL_POWER_KEY "Press the power button." -#define TR_BL_FLASH_EXIT "Exit the flashing mode." - -// Bootloader Horus specific - ASCII characters only -#define TR_BL_ERASE_INT_FLASH "Erase Internal Flash Storage" -#define TR_BL_ERASE_FLASH "Erase Flash Storage" -#define TR_BL_ERASE_FLASH_MSG "This may take up to 200s" -#define TR_BL_RF_USB_ACCESS "RF USB access" -#define TR_BL_CURRENT_FW "Current Firmware:" - -#if defined(PCBPL18) - // Bootloader PL18/NB4+ specific - ASCII characters only - #define TR_BL_ENABLE "Enable" - #define TR_BL_DISABLE "Disable" - #if defined(RADIO_NV14_FAMILY) - #define TR_BL_SELECT_KEY "[R TRIM] to select file" - #define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash" - #define TR_BL_ERASE_KEY "Hold [R TRIM] long to erase" - #define TR_BL_EXIT_KEY "[L TRIM] to exit" - #elif defined(RADIO_NB4P) - #define TR_BL_SELECT_KEY "[SW1A] to select file" - #define TR_BL_FLASH_KEY "Hold [SW1A] long to flash" - #define TR_BL_ERASE_KEY "Hold [SW1A] long to erase" - #define TR_BL_EXIT_KEY "[SW1B] to exit" - #else - #define TR_BL_SELECT_KEY "[TR4 Dn] to select file" - #define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash" - #define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase" - #define TR_BL_EXIT_KEY "[TR4 Up] to exit" - #endif -#elif defined(PCBNV14) - #define TR_BL_SELECT_KEY "[R TRIM] to select file" - #define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash" - #define TR_BL_EXIT_KEY " [L TRIM] to exit" - #define TR_BL_ENABLE "Enable" - #define TR_BL_DISABLE "Disable" -#else - #define TR_BL_SELECT_KEY "[ENT] to select file" - #define TR_BL_FLASH_KEY "Hold [ENT] long to flash" - #define TR_BL_ERASE_KEY "Hold [ENT] long to erase" - #define TR_BL_EXIT_KEY "[RTN] to exit" -#endif - // About screen #define TR_ABOUTUS TR(" ABOUT ", "ABOUT") diff --git a/radio/src/translations/pl.h b/radio/src/translations/pl.h index a4f17412f..9e220a0ed 100644 --- a/radio/src/translations/pl.h +++ b/radio/src/translations/pl.h @@ -1024,80 +1024,6 @@ #define TR_WIDGET_VALUE "Wartość" #endif -// Bootloader common - ASCII characters only -#define TR_BL_USB_CONNECTED "USB polaczone" -#define TR_BL_USB_PLUGIN "lub podlacz kabel USB" -#define TR_BL_USB_MASS_STORE "dla trybu danych" -#define TR_BL_USB_PLUGIN_MASS_STORE "lub podlacz kabel USB dla trybu danych" -#define TR_BL_WRITE_FW "Zapis firmware" -#define TR_BL_FORK "Fork:" -#define TR_BL_VERSION "Wersja:" -#define TR_BL_RADIO "Radio:" -#define TR_BL_EXIT "Wyjdz" -#define TR_BL_DIR_MISSING " Brak katalogu" -#define TR_BL_DIR_EMPTY " Katalog jest pusty" -#define TR_BL_WRITING_FW "Zapis firmware ..." -#define TR_BL_WRITING_COMPL "Zapis ukonczony" - -#if LCD_W >= 480 - #define TR_BL_INVALID_FIRMWARE "Nieprawidlowy plik firmware" -#elif LCD_W >= 212 - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN_MASS_STORE - #define TR_BL_HOLD_ENTER_TO_START "\012Przytrzymaj [ENT] by zaczac zapis" - #define TR_BL_INVALID_FIRMWARE "\011Nieprawidlowy plik firmware! " - #define TR_BL_INVALID_EEPROM "\011Nieprawidlowy plik EEPROM! " -#else - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN - #define TR_BL_HOLD_ENTER_TO_START "\006Przytrzymaj [ENT] by zaczac" - #define TR_BL_INVALID_FIRMWARE "\004011Nieprawidlowy firmware! " - #define TR_BL_INVALID_EEPROM "\004011Nieprawidlowy EEPROM! " -#endif - -// Bootloader Taranis specific - ASCII characters only -#define TR_BL_RESTORE_EEPROM "Przywroc EEPROM" -#define TR_BL_POWER_KEY "Nacisnij przycisk Power" -#define TR_BL_FLASH_EXIT "Wyjdz z trybu flashowania" - -// Bootloader Horus specific - ASCII characters only -#define TR_BL_ERASE_INT_FLASH "Erase Internal Flash Storage" -#define TR_BL_ERASE_FLASH "Erase Flash Storage" -#define TR_BL_ERASE_FLASH_MSG "This may take up to 200s" -#define TR_BL_RF_USB_ACCESS "RF USB access" -#define TR_BL_CURRENT_FW "Obecny firmware:" - -#if defined(PCBPL18) - // Bootloader PL18/NB4+ specific - ASCII characters only - #define TR_BL_ENABLE "Enable" - #define TR_BL_DISABLE "Disable" - #if defined(RADIO_NV14_FAMILY) - #define TR_BL_SELECT_KEY "[R TRIM] aby wybrac plik" - #define TR_BL_FLASH_KEY "Przytrzymaj [R TRIM] aby flashowac" - #define TR_BL_ERASE_KEY "Przytrzymaj [R TRIM] to erase" - #define TR_BL_EXIT_KEY "[L TRIM] aby wyjsc" - #elif defined(RADIO_NB4P) - #define TR_BL_SELECT_KEY "[SW1A] aby wybrac plik" - #define TR_BL_FLASH_KEY "Przytrzymaj [SW1A] aby flashowac" - #define TR_BL_ERASE_KEY "Przytrzymaj [SW1A] to erase" - #define TR_BL_EXIT_KEY "[SW1B] aby wyjsc" - #else - #define TR_BL_SELECT_KEY "[TR4 Dn] aby wybrac plik" - #define TR_BL_FLASH_KEY "Przytrzymaj [TR4 Dn] aby flashowac" - #define TR_BL_ERASE_KEY "Przytrzymaj [TR4 Dn] to erase" - #define TR_BL_EXIT_KEY "[TR4 Up] aby wyjsc" - #endif -#elif defined(PCBNV14) - #define TR_BL_SELECT_KEY "[R TRIM] aby wybrac plik" - #define TR_BL_FLASH_KEY "Przytrzymaj [R TRIM] aby flashowac" - #define TR_BL_EXIT_KEY " [L TRIM] aby wyjsc" - #define TR_BL_ENABLE "Enable" - #define TR_BL_DISABLE "Disable" -#else - #define TR_BL_SELECT_KEY "[ENT] aby wybrac plik" - #define TR_BL_FLASH_KEY "Przytrzymaj [ENT] aby flashowac" - #define TR_BL_ERASE_KEY "Przytrzymaj [ENT] long to erase" - #define TR_BL_EXIT_KEY "[RTN] aby wyjsc" -#endif - // About screen #define TR_ABOUTUS TR(" O ", " O ") diff --git a/radio/src/translations/pt.h b/radio/src/translations/pt.h index 799a2a934..5483994df 100644 --- a/radio/src/translations/pt.h +++ b/radio/src/translations/pt.h @@ -1031,80 +1031,6 @@ #define TR_WIDGET_VALUE "Value" #endif -// Bootloader common - ASCII characters only -#define TR_BL_USB_CONNECTED "USB Connected" -#define TR_BL_USB_PLUGIN "Or plug in a USB cable" -#define TR_BL_USB_MASS_STORE "for mass storage" -#define TR_BL_USB_PLUGIN_MASS_STORE "Or plug in a USB cable for mass storage" -#define TR_BL_WRITE_FW "Write Firmware" -#define TR_BL_FORK "Fork:" -#define TR_BL_VERSION "Version:" -#define TR_BL_RADIO "Radio:" -#define TR_BL_EXIT "Exit" -#define TR_BL_DIR_MISSING " Directory is missing" -#define TR_BL_DIR_EMPTY " Directory is empty" -#define TR_BL_WRITING_FW "Gravando..." -#define TR_BL_WRITING_COMPL "Grav. Completa" - -#if LCD_W >= 480 - #define TR_BL_INVALID_FIRMWARE "Not a valid firmware file" -#elif LCD_W >= 212 - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN_MASS_STORE - #define TR_BL_HOLD_ENTER_TO_START "\012Hold [ENT] to start writing" - #define TR_BL_INVALID_FIRMWARE "\011Not a valid firmware file! " - #define TR_BL_INVALID_EEPROM "\011Not a valid EEPROM file! " -#else - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN - #define TR_BL_HOLD_ENTER_TO_START "\006Hold [ENT] to start" - #define TR_BL_INVALID_FIRMWARE "\004Not a valid firmware! " - #define TR_BL_INVALID_EEPROM "\004Not a valid EEPROM! " -#endif - -// Bootloader Taranis specific - ASCII characters only -#define TR_BL_RESTORE_EEPROM "Restore EEPROM" -#define TR_BL_POWER_KEY "Press the power button." -#define TR_BL_FLASH_EXIT "Exit the flashing mode." - -// Bootloader Horus specific - ASCII characters only -#define TR_BL_ERASE_INT_FLASH "Erase Internal Flash Storage" -#define TR_BL_ERASE_FLASH "Erase Flash Storage" -#define TR_BL_ERASE_FLASH_MSG "This may take up to 200s" -#define TR_BL_RF_USB_ACCESS "RF USB access" -#define TR_BL_CURRENT_FW "Current Firmware:" - -#if defined(PCBPL18) - // Bootloader PL18/NB4+ specific - ASCII characters only - #define TR_BL_ENABLE "Enable" - #define TR_BL_DISABLE "Disable" - #if defined(RADIO_NV14_FAMILY) - #define TR_BL_SELECT_KEY "[R TRIM] to select file" - #define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash" - #define TR_BL_ERASE_KEY "Hold [R TRIM] long to erase" - #define TR_BL_EXIT_KEY "[L TRIM] to exit" - #elif defined(RADIO_NB4P) - #define TR_BL_SELECT_KEY "[SW1A] to select file" - #define TR_BL_FLASH_KEY "Hold [SW1A] long to flash" - #define TR_BL_ERASE_KEY "Hold [SW1A] long to erase" - #define TR_BL_EXIT_KEY "[SW1B] to exit" - #else - #define TR_BL_SELECT_KEY "[TR4 Dn] to select file" - #define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash" - #define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase" - #define TR_BL_EXIT_KEY "[TR4 Up] to exit" - #endif -#elif defined(PCBNV14) - #define TR_BL_SELECT_KEY "[R TRIM] to select file" - #define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash" - #define TR_BL_EXIT_KEY " [L TRIM] to exit" - #define TR_BL_ENABLE "Enable" - #define TR_BL_DISABLE "Disable" -#else - #define TR_BL_SELECT_KEY "[ENT] to select file" - #define TR_BL_FLASH_KEY "Hold [ENT] long to flash" - #define TR_BL_ERASE_KEY "Hold [ENT] long to erase" - #define TR_BL_EXIT_KEY "[RTN] to exit" -#endif - // About screen #define TR_ABOUTUS TR(" ABOUT ", "ABOUT") diff --git a/radio/src/translations/ru.h b/radio/src/translations/ru.h index 70a2ed914..b774b4bd6 100644 --- a/radio/src/translations/ru.h +++ b/radio/src/translations/ru.h @@ -1030,80 +1030,6 @@ #define TR_WIDGET_VALUE "Значение" #endif -// Bootloader common - ASCII characters only -#define TR_BL_USB_CONNECTED "USB Connected" -#define TR_BL_USB_PLUGIN "Or plug in a USB cable" -#define TR_BL_USB_MASS_STORE "for mass storage" -#define TR_BL_USB_PLUGIN_MASS_STORE "Or plug in a USB cable for mass storage" -#define TR_BL_WRITE_FW "Write Firmware" -#define TR_BL_FORK "Fork:" -#define TR_BL_VERSION "Version:" -#define TR_BL_RADIO "Radio:" -#define TR_BL_EXIT "Exit" -#define TR_BL_DIR_MISSING " Directory is missing" -#define TR_BL_DIR_EMPTY " Directory is empty" -#define TR_BL_WRITING_FW "Writing..." -#define TR_BL_WRITING_COMPL "Writing complete" - -#if LCD_W >= 480 - #define TR_BL_INVALID_FIRMWARE "Not a valid firmware file" -#elif LCD_W >= 212 - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN_MASS_STORE - #define TR_BL_HOLD_ENTER_TO_START "\012Hold [ENT] to start writing" - #define TR_BL_INVALID_FIRMWARE "\011Not a valid firmware file! " - #define TR_BL_INVALID_EEPROM "\011Not a valid EEPROM file! " -#else - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN - #define TR_BL_HOLD_ENTER_TO_START "\006Hold [ENT] to start" - #define TR_BL_INVALID_FIRMWARE "\004Not a valid firmware! " - #define TR_BL_INVALID_EEPROM "\004Not a valid EEPROM! " -#endif - -// Bootloader Taranis specific - ASCII characters only -#define TR_BL_RESTORE_EEPROM "Restore EEPROM" -#define TR_BL_POWER_KEY "Press the power button." -#define TR_BL_FLASH_EXIT "Exit the flashing mode." - -// Bootloader Horus specific - ASCII characters only -#define TR_BL_ERASE_INT_FLASH "Erase Internal Flash Storage" -#define TR_BL_ERASE_FLASH "Erase Flash Storage" -#define TR_BL_ERASE_FLASH_MSG "This may take up to 200s" -#define TR_BL_RF_USB_ACCESS "RF USB access" -#define TR_BL_CURRENT_FW "Current Firmware:" - -#if defined(PCBPL18) - // Bootloader PL18/NB4+ specific - ASCII characters only - #define TR_BL_ENABLE "Enable" - #define TR_BL_DISABLE "Disable" - #if defined(RADIO_NV14_FAMILY) - #define TR_BL_SELECT_KEY "[R TRIM] to select file" - #define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash" - #define TR_BL_ERASE_KEY "Hold [R TRIM] long to erase" - #define TR_BL_EXIT_KEY "[L TRIM] to exit" - #elif defined(RADIO_NB4P) - #define TR_BL_SELECT_KEY "[SW1A] to select file" - #define TR_BL_FLASH_KEY "Hold [SW1A] long to flash" - #define TR_BL_ERASE_KEY "Hold [SW1A] long to erase" - #define TR_BL_EXIT_KEY "[SW1B] to exit" - #else - #define TR_BL_SELECT_KEY "[TR4 Dn] to select file" - #define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash" - #define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase" - #define TR_BL_EXIT_KEY "[TR4 Up] to exit" - #endif -#elif defined(PCBNV14) - #define TR_BL_SELECT_KEY "[R TRIM] to select file" - #define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash" - #define TR_BL_EXIT_KEY " [L TRIM] to exit" - #define TR_BL_ENABLE "Enable" - #define TR_BL_DISABLE "Disable" -#else - #define TR_BL_SELECT_KEY "[ENT] to select file" - #define TR_BL_FLASH_KEY "Hold [ENT] long to flash" - #define TR_BL_ERASE_KEY "Hold [ENT] long to erase" - #define TR_BL_EXIT_KEY "[RTN] to exit" -#endif - // About screen #define TR_ABOUTUS TR("ИНФОРМАЦИЯ", "ИНФОРМАЦИЯ") diff --git a/radio/src/translations/se.h b/radio/src/translations/se.h index 4d2d69077..c2f6ac282 100644 --- a/radio/src/translations/se.h +++ b/radio/src/translations/se.h @@ -1053,80 +1053,6 @@ #define TR_WIDGET_VALUE "Värde" #endif -// Bootloader common -#define TR_BL_USB_CONNECTED "USB ansluten" -#define TR_BL_USB_PLUGIN "Eller anslut med USB-kabel" -#define TR_BL_USB_MASS_STORE "foer masslagring" -#define TR_BL_USB_PLUGIN_MASS_STORE "Eller anslut med USB-kabel foer masslagring" -#define TR_BL_WRITE_FW "Skriv firmware" -#define TR_BL_FORK "Gren:" -#define TR_BL_VERSION "Version:" -#define TR_BL_RADIO "Radio:" -#define TR_BL_EXIT "Avsluta" -#define TR_BL_DIR_MISSING " Katalogen saknas" -#define TR_BL_DIR_EMPTY " Katalogen aer tom" -#define TR_BL_WRITING_FW "Skriver..." -#define TR_BL_WRITING_COMPL "Skrivning klar" - -#if LCD_W >= 480 - #define TR_BL_INVALID_FIRMWARE "Ej en giltig firmwarefil" -#elif LCD_W >= 212 - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN_MASS_STORE - #define TR_BL_HOLD_ENTER_TO_START "\012Tryck [ENT] foer att boerja skriva " - #define TR_BL_INVALID_FIRMWARE "\011Ej en giltig firmwarefil! " - #define TR_BL_INVALID_EEPROM "\011Ej en giltig EEPROM-fil! " -#else - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN - #define TR_BL_HOLD_ENTER_TO_START "\006Tryck [ENT] för att boerja " - #define TR_BL_INVALID_FIRMWARE "\004Ej en giltig firmware! " - #define TR_BL_INVALID_EEPROM "\004Ej en giltig EEPROM! " -#endif - -// Bootloader Taranis specific - ASCII characters only -#define TR_BL_RESTORE_EEPROM "Aaterstaell EEPROM" -#define TR_BL_POWER_KEY "Tryck paa startknappen." -#define TR_BL_FLASH_EXIT "Avsluta flashningslaeget." - -// Bootloader Horus specific - ASCII characters only -#define TR_BL_ERASE_INT_FLASH "Radera interna flashminnet" -#define TR_BL_ERASE_FLASH "Radera flashminnet" -#define TR_BL_ERASE_FLASH_MSG "Detta kan ta upp till 200s" -#define TR_BL_RF_USB_ACCESS "RF USB-access" -#define TR_BL_CURRENT_FW "Nuvarande firmware:" - -#if defined(PCBPL18) - // Bootloader PL18/NB4+ specific - ASCII characters only - #define TR_BL_ENABLE "Aktivera" - #define TR_BL_DISABLE "Inaktivera" - #if defined(RADIO_NV14_FAMILY) - #define TR_BL_SELECT_KEY "[R TRIM] foer att vaelja fil" - #define TR_BL_FLASH_KEY "Haall ner [R TRIM] foer att flasha" - #define TR_BL_ERASE_KEY "Haall ner [R TRIM] foer att radera" - #define TR_BL_EXIT_KEY "[L TRIM] foer att avsluta" - #elif defined(RADIO_NB4P) - #define TR_BL_SELECT_KEY "[SW1A] foer att vaelja fil" - #define TR_BL_FLASH_KEY "Haall ner [SW1A] foer att flasha" - #define TR_BL_ERASE_KEY "Haall ner [SW1A] foer att radera" - #define TR_BL_EXIT_KEY "[SW1B] foer att avsluta" - #else - #define TR_BL_SELECT_KEY "[TR4 Dn] foer att vaelja fil" - #define TR_BL_FLASH_KEY "Haall ner [TR4 Dn] foer att flasha" - #define TR_BL_ERASE_KEY "Haall ner [TR4 Dn] foer att radera" - #define TR_BL_EXIT_KEY "[TR4 Up] foer att avsluta" - #endif -#elif defined(PCBNV14) - #define TR_BL_SELECT_KEY "[R TRIM] foer att vaelja fil" - #define TR_BL_FLASH_KEY "[R TRIM] foer att flasha" - #define TR_BL_EXIT_KEY " [L TRIM] foer att avbryta" - #define TR_BL_ENABLE "Aktivera" - #define TR_BL_DISABLE "Inaktivera" -#else - #define TR_BL_SELECT_KEY "[ENT] foer att vaelja fil" - #define TR_BL_FLASH_KEY "Haall ner [ENT] foer att flasha" - #define TR_BL_ERASE_KEY "Haall ner [ENT] foer att radera" - #define TR_BL_EXIT_KEY "[RTN] foer att avbryta" -#endif - // About screen #define TR_ABOUTUS "Om oss" diff --git a/radio/src/translations/tw.h b/radio/src/translations/tw.h index 15aaacf4c..7e1d1395c 100644 --- a/radio/src/translations/tw.h +++ b/radio/src/translations/tw.h @@ -1029,80 +1029,6 @@ #define TR_WIDGET_VALUE "數值" #endif -// Bootloader common - ASCII characters only -#define TR_BL_USB_CONNECTED "USB Connected" -#define TR_BL_USB_PLUGIN "Or plug in a USB cable" -#define TR_BL_USB_MASS_STORE "for mass storage" -#define TR_BL_USB_PLUGIN_MASS_STORE "Or plug in a USB cable for mass storage" -#define TR_BL_WRITE_FW "Write Firmware" -#define TR_BL_FORK "Fork:" -#define TR_BL_VERSION "Version:" -#define TR_BL_RADIO "Radio:" -#define TR_BL_EXIT "Exit" -#define TR_BL_DIR_MISSING " Directory is missing" -#define TR_BL_DIR_EMPTY " Directory is empty" -#define TR_BL_WRITING_FW "Writing Firmware ..." -#define TR_BL_WRITING_COMPL "Writing Completed" - -#if LCD_W >= 480 - #define TR_BL_INVALID_FIRMWARE "Not a valid firmware file" -#elif LCD_W >= 212 - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN_MASS_STORE - #define TR_BL_HOLD_ENTER_TO_START "\012Hold [ENT] to start writing" - #define TR_BL_INVALID_FIRMWARE "\011Not a valid firmware file! " - #define TR_BL_INVALID_EEPROM "\011Not a valid EEPROM file! " -#else - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN - #define TR_BL_HOLD_ENTER_TO_START "\006Hold [ENT] to start" - #define TR_BL_INVALID_FIRMWARE "\004Not a valid firmware! " - #define TR_BL_INVALID_EEPROM "\004Not a valid EEPROM! " -#endif - -// Bootloader Taranis specific - ASCII characters only -#define TR_BL_RESTORE_EEPROM "Restore EEPROM" -#define TR_BL_POWER_KEY "Press the power button." -#define TR_BL_FLASH_EXIT "Exit the flashing mode." - -// Bootloader Horus specific - ASCII characters only -#define TR_BL_ERASE_INT_FLASH "Erase Internal Flash Storage" -#define TR_BL_ERASE_FLASH "Erase Flash Storage" -#define TR_BL_ERASE_FLASH_MSG "This may take up to 200s" -#define TR_BL_RF_USB_ACCESS "RF USB access" -#define TR_BL_CURRENT_FW "Current Firmware:" - -#if defined(PCBPL18) - // Bootloader PL18/NB4+ specific - ASCII characters only - #define TR_BL_ENABLE "Enable" - #define TR_BL_DISABLE "Disable" - #if defined(RADIO_NV14_FAMILY) - #define TR_BL_SELECT_KEY "[R TRIM] to select file" - #define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash" - #define TR_BL_ERASE_KEY "Hold [R TRIM] long to erase" - #define TR_BL_EXIT_KEY "[L TRIM] to exit" - #elif defined(RADIO_NB4P) - #define TR_BL_SELECT_KEY "[SW1A] to select file" - #define TR_BL_FLASH_KEY "Hold [SW1A] long to flash" - #define TR_BL_ERASE_KEY "Hold [SW1A] long to erase" - #define TR_BL_EXIT_KEY "[SW1B] to exit" - #else - #define TR_BL_SELECT_KEY "[TR4 Dn] to select file" - #define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash" - #define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase" - #define TR_BL_EXIT_KEY "[TR4 Up] to exit" - #endif -#elif defined(PCBNV14) - #define TR_BL_SELECT_KEY "[R TRIM] to select file" - #define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash" - #define TR_BL_EXIT_KEY " [L TRIM] to exit" - #define TR_BL_ENABLE "Enable" - #define TR_BL_DISABLE "Disable" -#else - #define TR_BL_SELECT_KEY "[ENT] to select file" - #define TR_BL_FLASH_KEY "Hold [ENT] long to flash" - #define TR_BL_ERASE_KEY "Hold [ENT] long to erase" - #define TR_BL_EXIT_KEY "[RTN] to exit" -#endif - // About screen #define TR_ABOUTUS TR(" 關於 ", "關於") diff --git a/radio/src/translations/ua.h b/radio/src/translations/ua.h index e4c7b9080..b69229b9f 100644 --- a/radio/src/translations/ua.h +++ b/radio/src/translations/ua.h @@ -1030,80 +1030,6 @@ #define TR_WIDGET_VALUE "Значення" #endif -// Bootloader common - ASCII characters only -#define TR_BL_USB_CONNECTED "USB Connected" -#define TR_BL_USB_PLUGIN "Or plug in a USB cable" -#define TR_BL_USB_MASS_STORE "for mass storage" -#define TR_BL_USB_PLUGIN_MASS_STORE "Or plug in a USB cable for mass storage" -#define TR_BL_WRITE_FW "Write Firmware" -#define TR_BL_FORK "Fork:" -#define TR_BL_VERSION "Version:" -#define TR_BL_RADIO "Radio:" -#define TR_BL_EXIT "Exit" -#define TR_BL_DIR_MISSING " Directory is missing" -#define TR_BL_DIR_EMPTY " Directory is empty" -#define TR_BL_WRITING_FW "Writing..." -#define TR_BL_WRITING_COMPL "Writing complete" - -#if LCD_W >= 480 - #define TR_BL_INVALID_FIRMWARE "Not a valid firmware file" -#elif LCD_W >= 212 - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN_MASS_STORE - #define TR_BL_HOLD_ENTER_TO_START "\012Hold [ENT] to start writing" - #define TR_BL_INVALID_FIRMWARE "\011Not a valid firmware file! " - #define TR_BL_INVALID_EEPROM "\011Not a valid EEPROM file! " -#else - #define TR_BL_OR_PLUGIN_USB_CABLE TR_BL_USB_PLUGIN - #define TR_BL_HOLD_ENTER_TO_START "\006Hold [ENT] to start" - #define TR_BL_INVALID_FIRMWARE "\004Not a valid firmware! " - #define TR_BL_INVALID_EEPROM "\004Not a valid EEPROM! " -#endif - -// Bootloader Taranis specific - ASCII characters only -#define TR_BL_RESTORE_EEPROM "Restore EEPROM" -#define TR_BL_POWER_KEY "Press the power button." -#define TR_BL_FLASH_EXIT "Exit the flashing mode." - -// Bootloader Horus specific - ASCII characters only -#define TR_BL_ERASE_INT_FLASH "Erase Internal Flash Storage" -#define TR_BL_ERASE_FLASH "Erase Flash Storage" -#define TR_BL_ERASE_FLASH_MSG "This may take up to 200s" -#define TR_BL_RF_USB_ACCESS "RF USB access" -#define TR_BL_CURRENT_FW "Current Firmware:" - -#if defined(PCBPL18) - // Bootloader PL18/NB4+ specific - Ascii only - #define TR_BL_ENABLE "Enable" - #define TR_BL_DISABLE "Disable" - #if defined(RADIO_NV14_FAMILY) - #define TR_BL_SELECT_KEY "[R TRIM] to select file" - #define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash" - #define TR_BL_ERASE_KEY "Hold [R TRIM] long to erase" - #define TR_BL_EXIT_KEY "[L TRIM] to exit" - #elif defined(RADIO_NB4P) - #define TR_BL_SELECT_KEY "[SW1A] to select file" - #define TR_BL_FLASH_KEY "Hold [SW1A] long to flash" - #define TR_BL_ERASE_KEY "Hold [SW1A] long to erase" - #define TR_BL_EXIT_KEY "[SW1B] to exit" - #else - #define TR_BL_SELECT_KEY "[TR4 Dn] to select file" - #define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash" - #define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase" - #define TR_BL_EXIT_KEY "[TR4 Up] to exit" - #endif -#elif defined(PCBNV14) - #define TR_BL_SELECT_KEY "[R TRIM] to select file" - #define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash" - #define TR_BL_EXIT_KEY " [L TRIM] to exit" - #define TR_BL_ENABLE "Enable" - #define TR_BL_DISABLE "Disable" -#else - #define TR_BL_SELECT_KEY "[ENT] to select file" - #define TR_BL_FLASH_KEY "Hold [ENT] long to flash" - #define TR_BL_ERASE_KEY "Hold [ENT] long to erase" - #define TR_BL_EXIT_KEY "[RTN] to exit" -#endif - // About screen #define TR_ABOUTUS TR(" ПРО... ", "ПРО...")