chore(radio): unify the bootloader UI code (#6189)

Co-authored-by: Richard Li <richard.li@ces.hk>
This commit is contained in:
philmoz
2025-05-23 11:06:20 +10:00
committed by GitHub
co-authored by Richard Li
parent bb4fb456a6
commit dc0d85d035
53 changed files with 2159 additions and 3957 deletions
+2 -2
View File
@@ -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()
@@ -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;
+52
View File
@@ -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();
}
@@ -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;
@@ -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
}
}
}
@@ -23,22 +23,20 @@
#include <FatFs/ff.h>
#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);
Binary file not shown.
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -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"
+323 -349
View File
@@ -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,
};
/*--------------------
File diff suppressed because it is too large Load Diff
+448
View File
@@ -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 <lvgl/lvgl.h>
#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
@@ -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) {
+4 -4
View File
@@ -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
};
+4 -10
View File
@@ -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'З',
+5
View File
@@ -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)
{
@@ -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();
}
+2 -2
View File
@@ -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} $<TARGET_OBJECTS:board_bl>)
@@ -348,7 +348,7 @@ endif()
set(FIRMWARE_SRC
${FIRMWARE_SRC}
targets/common/arm/loadboot.cpp
bootloader/loadboot.cpp
)
if (MULTIMODULE)
@@ -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 <lvgl/lvgl.h>
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();
}
+2 -2
View File
@@ -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} $<TARGET_OBJECTS:board_bl>)
@@ -142,7 +142,7 @@ set(FIRMWARE_SRC ${FIRMWARE_SRC} $<TARGET_OBJECTS:board>)
set(FIRMWARE_SRC
${FIRMWARE_SRC}
targets/common/arm/loadboot.cpp
bootloader/loadboot.cpp
)
set(SRC ${SRC}
@@ -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 <lvgl/lvgl.h>
#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();
}
+2 -2
View File
@@ -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} $<TARGET_OBJECTS:board_bl>)
@@ -223,7 +223,7 @@ endif()
set(FIRMWARE_SRC
${FIRMWARE_SRC}
targets/common/arm/loadboot.cpp
bootloader/loadboot.cpp
)
set(SRC ${SRC}
@@ -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 <lvgl/lvgl.h>
#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();
}
+4 -3
View File
@@ -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()
+2 -2
View File
@@ -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()
@@ -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 <lvgl/lvgl.h>
#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();
}
@@ -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} $<TARGET_OBJECTS:board_bl>)
@@ -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()
@@ -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 <lvgl/lvgl.h>
#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();
}
+2 -2
View File
@@ -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} $<TARGET_OBJECTS:board_bl>)
@@ -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})
+425
View File
@@ -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"
-74
View File
@@ -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(" 关于 ", "关于")
-74
View File
@@ -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"
-74
View File
@@ -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")
-74
View File
@@ -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"
-74
View File
@@ -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")
-74
View File
@@ -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"
-74
View File
@@ -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")
-74
View File
@@ -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")
-74
View File
@@ -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")
-73
View File
@@ -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")
-74
View File
@@ -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(" 概要 ", "概要")
-74
View File
@@ -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'
-74
View File
@@ -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")
-74
View File
@@ -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 ")
-74
View File
@@ -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")
-74
View File
@@ -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("ИНФОРМАЦИЯ", "ИНФОРМАЦИЯ")
-74
View File
@@ -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"
-74
View File
@@ -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(" 關於 ", "關於")
-74
View File
@@ -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(" ПРО... ", "ПРО...")