Fixed compiling NV14
This commit is contained in:
committed by
Raphael Coeffic
parent
99270482dc
commit
f768bbea41
+1
-12
@@ -324,7 +324,6 @@ void getSwitchAudioFile(char * filename, swsrc_t index)
|
||||
{
|
||||
char * str = getModelAudioPath(filename);
|
||||
|
||||
#if defined(PCBFRSKY)
|
||||
if (index <= SWSRC_LAST_SWITCH) {
|
||||
div_t swinfo = switchInfo(index);
|
||||
*str++ = 'S';
|
||||
@@ -332,6 +331,7 @@ void getSwitchAudioFile(char * filename, swsrc_t index)
|
||||
const char * positions[] = { "-up", "-mid", "-down" };
|
||||
strcpy(str, positions[swinfo.rem]);
|
||||
}
|
||||
#if NUM_XPOTS > 0
|
||||
else {
|
||||
div_t swinfo = div(int(index - SWSRC_FIRST_MULTIPOS_SWITCH), XPOTS_MULTIPOS_COUNT);
|
||||
*str++ = 'S';
|
||||
@@ -339,11 +339,6 @@ void getSwitchAudioFile(char * filename, swsrc_t index)
|
||||
*str++ = '1' + swinfo.rem;
|
||||
*str = '\0';
|
||||
}
|
||||
#else
|
||||
int len = STR_VSWITCHES[0];
|
||||
strncpy(str, &STR_VSWITCHES[1+(len*index)], len);
|
||||
str += len;
|
||||
*str = '\0';
|
||||
#endif
|
||||
strcat(str, SOUNDS_EXT);
|
||||
}
|
||||
@@ -352,7 +347,6 @@ void getLogicalSwitchAudioFile(char * filename, int index, unsigned int event)
|
||||
{
|
||||
char * str = getModelAudioPath(filename);
|
||||
|
||||
#if defined(PCBFRSKY)
|
||||
*str++ = 'L';
|
||||
if (index >= 9) {
|
||||
div_t qr = div(index+1, 10);
|
||||
@@ -362,11 +356,6 @@ void getLogicalSwitchAudioFile(char * filename, int index, unsigned int event)
|
||||
else {
|
||||
*str++ = '1' + index;
|
||||
}
|
||||
#else
|
||||
int len = STR_VSWITCHES[0];
|
||||
strncpy(str, &STR_VSWITCHES[1+len*(index+SWSRC_FIRST_LOGICAL_SWITCH)], len);
|
||||
str += len;
|
||||
#endif
|
||||
|
||||
strcpy(str, suffixes[event]);
|
||||
strcat(str, SOUNDS_EXT);
|
||||
|
||||
@@ -396,12 +396,15 @@ uint32_t pwrPressedDuration();;
|
||||
const etx_serial_port_t* auxSerialGetPort(int port_nr);
|
||||
|
||||
// LCD driver
|
||||
#define LCD_W 480
|
||||
#define LCD_H 320
|
||||
#define LCD_W 320
|
||||
#define LCD_H 480
|
||||
|
||||
#define LCD_PHYS_W 320
|
||||
#define LCD_PHYS_H 480
|
||||
|
||||
#define LCD_DEPTH 16
|
||||
#define LCD_CONTRAST_DEFAULT 20
|
||||
|
||||
void lcdInit();
|
||||
void lcdCopy(void * dest, void * src);
|
||||
void DMAFillRect(uint16_t * dest, uint16_t destw, uint16_t desth, uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint16_t color);
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
|
||||
#include "board.h"
|
||||
#include "fw_version.h"
|
||||
#include "lcd.h"
|
||||
|
||||
#include "../../common/arm/stm32/bootloader/boot.h"
|
||||
#include "../../common/arm/stm32/bootloader/bin_files.h"
|
||||
@@ -47,26 +48,10 @@ const uint8_t __bmp_background_rle[] {
|
||||
};
|
||||
RLEBitmap BMP_BACKGROUND(BMP_ARGB4444, __bmp_background_rle);
|
||||
|
||||
const uint8_t LBM_FLASH[] = {
|
||||
#include "icon_flash.lbm"
|
||||
};
|
||||
|
||||
const uint8_t LBM_EXIT[] = {
|
||||
#include "icon_exit.lbm"
|
||||
};
|
||||
|
||||
const uint8_t LBM_SD[] = {
|
||||
#include "icon_sd.lbm"
|
||||
};
|
||||
|
||||
const uint8_t LBM_FILE[] = {
|
||||
#include "icon_file.lbm"
|
||||
};
|
||||
|
||||
const uint8_t LBM_ERROR[] = {
|
||||
#include "icon_error.lbm"
|
||||
};
|
||||
|
||||
const uint8_t LBM_OK[] = {
|
||||
#include "icon_ok.lbm"
|
||||
};
|
||||
@@ -77,69 +62,12 @@ const uint8_t LBM_OK[] = {
|
||||
#define BL_FOREGROUND COLOR2FLAGS(WHITE)
|
||||
#define BL_SELECTED COLOR2FLAGS(RGB(11, 65, 244)) // deep blue
|
||||
|
||||
extern BitmapBuffer * lcdFront;
|
||||
extern BitmapBuffer * lcd;
|
||||
|
||||
static lv_disp_t* disp = nullptr;
|
||||
static lv_disp_drv_t disp_drv;
|
||||
static lv_disp_draw_buf_t disp_buf;
|
||||
|
||||
void newLcdRefresh(uint16_t* buffer, const rect_t& copy_area);
|
||||
static void flushLcd(lv_disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p)
|
||||
{
|
||||
lv_area_t refr_area;
|
||||
lv_area_copy(&refr_area, area);
|
||||
|
||||
#if defined(LCD_VERTICAL_INVERT)
|
||||
lv_coord_t tmp_coord;
|
||||
tmp_coord = refr_area.y2;
|
||||
refr_area.y2 = LCD_H - refr_area.y1 - 1;
|
||||
refr_area.y1 = LCD_H - tmp_coord - 1;
|
||||
tmp_coord = refr_area.x2;
|
||||
refr_area.x2 = LCD_W - refr_area.x1 - 1;
|
||||
refr_area.x1 = LCD_W - tmp_coord - 1;
|
||||
#endif
|
||||
|
||||
if (refr_area.x1 != 0 || refr_area.x2 != 479 || refr_area.y1 != 0 ||
|
||||
refr_area.y2 != 271) {
|
||||
TRACE("partial refresh @ 0x%p {%d,%d,%d,%d}", color_p, refr_area.x1,
|
||||
refr_area.y1, refr_area.x2, refr_area.y2);
|
||||
} else {
|
||||
TRACE("full refresh @ 0x%p", color_p);
|
||||
}
|
||||
|
||||
rect_t copy_area = {refr_area.x1, refr_area.y1,
|
||||
refr_area.x2 - refr_area.x1 + 1,
|
||||
refr_area.y2 - refr_area.y1 + 1};
|
||||
|
||||
newLcdRefresh((uint16_t*)color_p, copy_area);
|
||||
lv_disp_flush_ready(disp_drv);
|
||||
}
|
||||
|
||||
static void init_disp_drv()
|
||||
{
|
||||
lv_disp_draw_buf_init(&disp_buf, lcdFront->getData(), lcd->getData(), LCD_W*LCD_H);
|
||||
lv_disp_drv_init(&disp_drv); /*Basic initialization*/
|
||||
disp_drv.draw_buf = &disp_buf; /*Set an initialized buffer*/
|
||||
disp_drv.flush_cb = flushLcd; /*Set a flush callback to draw to the display*/
|
||||
disp_drv.hor_res = LCD_W; /*Set the horizontal resolution in pixels*/
|
||||
disp_drv.ver_res = LCD_H; /*Set the vertical resolution in pixels*/
|
||||
disp_drv.full_refresh = 0;
|
||||
disp_drv.direct_mode = 0;
|
||||
#if defined (LCD_VERTICAL_INVERT)
|
||||
disp_drv.rotated = LV_DISP_ROT_180;
|
||||
#endif
|
||||
disp_drv.sw_rotate = 1;
|
||||
|
||||
// Register the driver and save the created display objects
|
||||
disp = lv_disp_drv_register(&disp_drv);
|
||||
}
|
||||
|
||||
void bootloaderInitScreen()
|
||||
{
|
||||
backlightEnable(BACKLIGHT_LEVEL_MAX);
|
||||
lv_init();
|
||||
init_disp_drv();
|
||||
lcdInitDisplayDriver();
|
||||
}
|
||||
|
||||
static void bootloaderDrawTitle(const char* text)
|
||||
@@ -180,7 +108,7 @@ static void bootloaderDrawBackground()
|
||||
|
||||
void bootloaderDrawScreen(BootloaderState st, int opt, const char* str)
|
||||
{
|
||||
// clear screen
|
||||
lcdInitDirectDrawing();
|
||||
bootloaderDrawBackground();
|
||||
|
||||
int center = LCD_W/2;
|
||||
@@ -188,105 +116,117 @@ void bootloaderDrawScreen(BootloaderState st, int opt, const char* str)
|
||||
|
||||
bootloaderDrawTitle(BOOTLOADER_TITLE);
|
||||
|
||||
lcd->drawBitmapPattern(50, 72, LBM_FLASH, BL_FOREGROUND);
|
||||
lcd->drawText(84, 75, "Write Firmware", BL_FOREGROUND);
|
||||
lcd->drawText(62, 75, LV_SYMBOL_CHARGE, BL_FOREGROUND);
|
||||
coord_t pos = lcd->drawText(84, 75, "Write Firmware", BL_FOREGROUND);
|
||||
pos += 8;
|
||||
|
||||
lcd->drawBitmapPattern(50, 107, LBM_EXIT, BL_FOREGROUND);
|
||||
lcd->drawText(60, 110, LV_SYMBOL_NEW_LINE, BL_FOREGROUND);
|
||||
lcd->drawText(84, 110, "Exit", BL_FOREGROUND);
|
||||
|
||||
lcd->drawSolidRect(79, (opt == 0) ? 72 : 107, LCD_W - 79 - 28, 26, 2, BL_SELECTED);
|
||||
pos -= 79;
|
||||
lcd->drawSolidRect(79, (opt == 0) ? 72 : 107, pos, 26, 2, BL_SELECTED);
|
||||
|
||||
lcd->drawBitmap(center - 55, 165, &BMP_PLUG_USB);
|
||||
lcd->drawText(center, 250, "Or plug in a USB cable", CENTERED | BL_FOREGROUND);
|
||||
lcd->drawText(center, 275, "for mass storage", CENTERED | BL_FOREGROUND);
|
||||
|
||||
bootloaderDrawFooter();
|
||||
lcd->drawText(center, LCD_H - DOUBLE_PADDING, "Current Firmware:", CENTERED | BL_FOREGROUND);
|
||||
lcd->drawText(center, LCD_H - DEFAULT_PADDING, getFirmwareVersion(nullptr), CENTERED | BL_FOREGROUND);
|
||||
}
|
||||
else if (st == ST_USB) {
|
||||
lcd->drawBitmap(center - 26, 98, &BMP_USB_PLUGGED);
|
||||
lcd->drawText(center, 168, "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) {
|
||||
lcd->drawText(center, LCD_H - DOUBLE_PADDING,
|
||||
"Current Firmware:", CENTERED | BL_FOREGROUND);
|
||||
lcd->drawText(center, LCD_H - DEFAULT_PADDING,
|
||||
getFirmwareVersion(nullptr), CENTERED | BL_FOREGROUND);
|
||||
} else if (st == ST_USB) {
|
||||
lcd->drawBitmap(center - 26, 98, &BMP_USB_PLUGGED);
|
||||
lcd->drawText(center, 168, "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("SD>FIRMWARE");
|
||||
lcd->drawBitmapPattern(DEFAULT_PADDING, 16, LBM_SD, BL_FOREGROUND);
|
||||
bootloaderDrawTitle(LV_SYMBOL_SD_CARD " /FIRMWARE");
|
||||
|
||||
if (st == ST_FLASHING || st == ST_FLASH_DONE) {
|
||||
if (st == ST_FLASHING || st == ST_FLASH_DONE) {
|
||||
LcdFlags color = BL_RED; // red
|
||||
|
||||
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, "Directory is missing", BL_FOREGROUND);
|
||||
}
|
||||
else {
|
||||
lcd->drawText(20, MESSAGE_TOP, "Directory is empty", BL_FOREGROUND);
|
||||
}
|
||||
|
||||
lcd->drawBitmapPattern(LCD_W - DOUBLE_PADDING, MESSAGE_TOP-10, LBM_ERROR, BL_RED);
|
||||
}
|
||||
else if (st == ST_FLASH_CHECK) {
|
||||
|
||||
bootloaderDrawFilename(str, 0, true);
|
||||
|
||||
if (opt == FC_ERROR) {
|
||||
lcd->drawText(20, MESSAGE_TOP, STR_INVALID_FIRMWARE, BL_FOREGROUND);
|
||||
lcd->drawBitmapPattern(LCD_W - DOUBLE_PADDING, MESSAGE_TOP-10, LBM_ERROR, BL_RED);
|
||||
}
|
||||
else if (opt == FC_OK) {
|
||||
VersionTag tag;
|
||||
memset(&tag, 0, sizeof(tag));
|
||||
extractFirmwareVersion(&tag);
|
||||
|
||||
lcd->drawText(LCD_W/4 + DEFAULT_PADDING, MESSAGE_TOP - DEFAULT_PADDING, "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, "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, "Radio:", RIGHT | BL_FOREGROUND);
|
||||
lcd->drawText(LCD_W/4 + 6 + DEFAULT_PADDING, MESSAGE_TOP + DEFAULT_PADDING, tag.flavour, BL_FOREGROUND);
|
||||
|
||||
lcd->drawBitmapPattern(LCD_W - DOUBLE_PADDING, MESSAGE_TOP-10, LBM_OK, BL_GREEN);
|
||||
}
|
||||
}
|
||||
|
||||
bootloaderDrawFooter();
|
||||
|
||||
if ( st != ST_DIR_CHECK && (st != ST_FLASH_CHECK || opt == FC_OK)) {
|
||||
|
||||
lcd->drawBitmapPattern(DEFAULT_PADDING, LCD_H - DOUBLE_PADDING - 2, LBM_FLASH, BL_FOREGROUND);
|
||||
|
||||
if (st == ST_FILE_LIST) {
|
||||
lcd->drawText(DOUBLE_PADDING, LCD_H - DOUBLE_PADDING, "[R TRIM] to select file", BL_FOREGROUND);
|
||||
}
|
||||
else if (st == ST_FLASH_CHECK && opt == FC_OK) {
|
||||
lcd->drawText(DOUBLE_PADDING, LCD_H - DOUBLE_PADDING, "Hold [R TRIM] long to flash", BL_FOREGROUND);
|
||||
}
|
||||
else if (st == ST_FLASHING) {
|
||||
lcd->drawText(DOUBLE_PADDING, LCD_H - DOUBLE_PADDING, "Writing Firmware ...", BL_FOREGROUND);
|
||||
}
|
||||
else if (st == ST_FLASH_DONE) {
|
||||
lcd->drawText(DOUBLE_PADDING, LCD_H - DOUBLE_PADDING, "Writing Completed", BL_FOREGROUND);
|
||||
}
|
||||
if (st == ST_FLASH_DONE) {
|
||||
color = BL_GREEN /* green */;
|
||||
opt = 100; // Completed > 100%
|
||||
}
|
||||
|
||||
if (st != ST_FLASHING) {
|
||||
lcd->drawBitmapPattern(DEFAULT_PADDING, LCD_H - DEFAULT_PADDING - 2, LBM_EXIT, BL_FOREGROUND);
|
||||
lcd->drawText(DOUBLE_PADDING, LCD_H - DEFAULT_PADDING, "[L TRIM] to exit", BL_FOREGROUND);
|
||||
}
|
||||
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 " Directory is missing", BL_FOREGROUND);
|
||||
} else {
|
||||
lcd->drawText(20, MESSAGE_TOP, LV_SYMBOL_CLOSE " Directory is 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 " " STR_INVALID_FIRMWARE,
|
||||
BL_FOREGROUND);
|
||||
} else if (opt == FC_OK) {
|
||||
VersionTag tag;
|
||||
memset(&tag, 0, sizeof(tag));
|
||||
extractFirmwareVersion(&tag);
|
||||
|
||||
lcd->drawText(LCD_W / 4 + DEFAULT_PADDING,
|
||||
MESSAGE_TOP - DEFAULT_PADDING,
|
||||
"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,
|
||||
"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,
|
||||
"Radio:", RIGHT | BL_FOREGROUND);
|
||||
lcd->drawText(LCD_W / 4 + 6 + DEFAULT_PADDING,
|
||||
MESSAGE_TOP + DEFAULT_PADDING, tag.flavour,
|
||||
BL_FOREGROUND);
|
||||
|
||||
lcd->drawBitmapPattern(LCD_W - DOUBLE_PADDING, MESSAGE_TOP - 10,
|
||||
LBM_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,
|
||||
"[R TRIM] to select file", BL_FOREGROUND);
|
||||
} else if (st == ST_FLASH_CHECK && opt == FC_OK) {
|
||||
lcd->drawText(DOUBLE_PADDING, LCD_H - DOUBLE_PADDING,
|
||||
"Hold [R TRIM] long to flash", BL_FOREGROUND);
|
||||
} else if (st == ST_FLASHING) {
|
||||
lcd->drawText(DOUBLE_PADDING, LCD_H - DOUBLE_PADDING,
|
||||
"Writing Firmware ...", BL_FOREGROUND);
|
||||
} else if (st == ST_FLASH_DONE) {
|
||||
lcd->drawText(DOUBLE_PADDING, LCD_H - DOUBLE_PADDING,
|
||||
"Writing Completed", BL_FOREGROUND);
|
||||
}
|
||||
}
|
||||
|
||||
if (st != ST_FLASHING) {
|
||||
lcd->drawText(DOUBLE_PADDING, LCD_H - DEFAULT_PADDING,
|
||||
LV_SYMBOL_NEW_LINE " [L TRIM] to exit", BL_FOREGROUND);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -972,7 +972,7 @@ const char STR_PROTOCOL[] = TR_PROTOCOL;
|
||||
const char STR_RACING_MODE[] = TR_RACING_MODE;
|
||||
|
||||
#if defined(PCBNV14)
|
||||
const char STR_RFPOWER_AFHDS2[] = TR_RFPOWER_AFHDS2;
|
||||
ISTR(RFPOWER_AFHDS2);
|
||||
#endif
|
||||
|
||||
const char STR_USE_THEME_COLOR[] = TR_USE_THEME_COLOR;
|
||||
|
||||
Reference in New Issue
Block a user