Harden charge UI draw when ExtFlash asset missing.
Fill dark background first, overlay % at size 24, and fall back if charge bitmap is erased. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
d960d88147
commit
0e57fa452f
|
|
@ -279,6 +279,24 @@ uint8_t app_log_try_command(const char *cmd)
|
||||||
SEGGER_RTT_WriteString(APP_LOG_RTT_CHANNEL, "UI_BOOT_OK\n");
|
SEGGER_RTT_WriteString(APP_LOG_RTT_CHANNEL, "UI_BOOT_OK\n");
|
||||||
return 1U;
|
return 1U;
|
||||||
}
|
}
|
||||||
|
if (strncmp(cmd, "ui charge", 9) == 0) {
|
||||||
|
uint8_t peek[4];
|
||||||
|
LCD_BLK_Set();
|
||||||
|
LCD_FillByColor(0, 0, 240, 320, UI0902_BG_COLOR);
|
||||||
|
W25Q128_Read(peek, UI0902_CHARGE_SCREEN_ADDR, 4);
|
||||||
|
if (peek[0] != 0xFF || peek[1] != 0xFF) {
|
||||||
|
LCD_WR_PIC_FROM_FLASH(0, 0, UI0902_CHARGE_SCREEN_W, UI0902_CHARGE_SCREEN_H,
|
||||||
|
UI0902_CHARGE_SCREEN_ADDR);
|
||||||
|
SEGGER_RTT_WriteString(APP_LOG_RTT_CHANNEL, "UI_CHARGE_OK\n");
|
||||||
|
} else {
|
||||||
|
Draw_Charging_Icon(120, 150, 2, 0x3D7F);
|
||||||
|
SEGGER_RTT_WriteString(APP_LOG_RTT_CHANNEL, "UI_CHARGE_EMPTY\n");
|
||||||
|
}
|
||||||
|
LCD_FillByColor(40, 255, 200, 292, UI0902_BG_COLOR);
|
||||||
|
LCD_ShowString_AutoAlign(0, 240, 264, (uint8_t *)"50%", LCD_ALIGN_CENTER,
|
||||||
|
WHITE, UI0902_BG_COLOR, 0, 24);
|
||||||
|
return 1U;
|
||||||
|
}
|
||||||
return 0U;
|
return 0U;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
31
UI/UI_Idle.c
31
UI/UI_Idle.c
|
|
@ -256,12 +256,27 @@ void IdleProcess(DisplayTaskMessage_Type msg)
|
||||||
static bool s_charge_ui_drawn = false;
|
static bool s_charge_ui_drawn = false;
|
||||||
if(!s_charge_ui_drawn)
|
if(!s_charge_ui_drawn)
|
||||||
{
|
{
|
||||||
|
uint8_t peek[4];
|
||||||
BSP_MainPowerEnable(1);
|
BSP_MainPowerEnable(1);
|
||||||
LCD_WR_REG(0x29); //Display on
|
LCD_WR_REG(0x29); /* Display on */
|
||||||
|
|
||||||
/* 0904 全屏充电画面(UI0902 资源包);旧 Charg.bin 160x190 仅作音色包占位 */
|
/* 先铺设计底色,避免外置 Flash 未烧充电图时整屏 0xFF 灰底 */
|
||||||
LCD_WR_PIC_FROM_FLASH(0, 0, UI0902_CHARGE_SCREEN_W, UI0902_CHARGE_SCREEN_H,
|
LCD_FillByColor(0, 0, 240, 320, UI0902_BG_COLOR);
|
||||||
UI0902_CHARGE_SCREEN_ADDR);
|
|
||||||
|
W25Q128_Read(peek, UI0902_CHARGE_SCREEN_ADDR, 4);
|
||||||
|
if (peek[0] != 0xFF || peek[1] != 0xFF)
|
||||||
|
{
|
||||||
|
/* 0904 全屏充电画面(UI0902 @ CHARGE_SCREEN);% 由固件叠画 */
|
||||||
|
LCD_WR_PIC_FROM_FLASH(0, 0, UI0902_CHARGE_SCREEN_W, UI0902_CHARGE_SCREEN_H,
|
||||||
|
UI0902_CHARGE_SCREEN_ADDR);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* 资源未烧录时的兜底:圆环闪电(需稍后 flash ui0902) */
|
||||||
|
Draw_Charging_Icon(120, 150, 2, 0x3D7F);
|
||||||
|
LOG_W("UI", "charge flash empty @0x%08lX — flash ui0902",
|
||||||
|
(unsigned long)UI0902_CHARGE_SCREEN_ADDR);
|
||||||
|
}
|
||||||
LCD_BLK_Set();
|
LCD_BLK_Set();
|
||||||
s_charge_ui_drawn = true;
|
s_charge_ui_drawn = true;
|
||||||
}
|
}
|
||||||
|
|
@ -269,10 +284,10 @@ void IdleProcess(DisplayTaskMessage_Type msg)
|
||||||
{
|
{
|
||||||
uint8_t Info[10] = {0,};
|
uint8_t Info[10] = {0,};
|
||||||
sprintf ((char*)Info, "%d%%", msg.ID);
|
sprintf ((char*)Info, "%d%%", msg.ID);
|
||||||
/* 设计稿百分比约 y270;清带避免 9%→100% 残影 */
|
/* 设计稿约 y270;字库仅有 16/24/28,用 24 贴近标注 20 */
|
||||||
LCD_FillByColor(40, 265, 200, 298, UI0902_BG_COLOR);
|
LCD_FillByColor(40, 255, 200, 292, UI0902_BG_COLOR);
|
||||||
LCD_ShowString_AutoAlign(0, 240, 270, Info, LCD_ALIGN_CENTER,
|
LCD_ShowString_AutoAlign(0, 240, 264, Info, LCD_ALIGN_CENTER,
|
||||||
WHITE, UI0902_BG_COLOR, 0, 28);
|
WHITE, UI0902_BG_COLOR, 0, 24);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue