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");
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
|
|||
27
UI/UI_Idle.c
27
UI/UI_Idle.c
|
|
@ -256,12 +256,27 @@ void IdleProcess(DisplayTaskMessage_Type msg)
|
|||
static bool s_charge_ui_drawn = false;
|
||||
if(!s_charge_ui_drawn)
|
||||
{
|
||||
uint8_t peek[4];
|
||||
BSP_MainPowerEnable(1);
|
||||
LCD_WR_REG(0x29); //Display on
|
||||
LCD_WR_REG(0x29); /* Display on */
|
||||
|
||||
/* 0904 全屏充电画面(UI0902 资源包);旧 Charg.bin 160x190 仅作音色包占位 */
|
||||
/* 先铺设计底色,避免外置 Flash 未烧充电图时整屏 0xFF 灰底 */
|
||||
LCD_FillByColor(0, 0, 240, 320, UI0902_BG_COLOR);
|
||||
|
||||
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();
|
||||
s_charge_ui_drawn = true;
|
||||
}
|
||||
|
|
@ -269,10 +284,10 @@ void IdleProcess(DisplayTaskMessage_Type msg)
|
|||
{
|
||||
uint8_t Info[10] = {0,};
|
||||
sprintf ((char*)Info, "%d%%", msg.ID);
|
||||
/* 设计稿百分比约 y270;清带避免 9%→100% 残影 */
|
||||
LCD_FillByColor(40, 265, 200, 298, UI0902_BG_COLOR);
|
||||
LCD_ShowString_AutoAlign(0, 240, 270, Info, LCD_ALIGN_CENTER,
|
||||
WHITE, UI0902_BG_COLOR, 0, 28);
|
||||
/* 设计稿约 y270;字库仅有 16/24/28,用 24 贴近标注 20 */
|
||||
LCD_FillByColor(40, 255, 200, 292, UI0902_BG_COLOR);
|
||||
LCD_ShowString_AutoAlign(0, 240, 264, Info, LCD_ALIGN_CENTER,
|
||||
WHITE, UI0902_BG_COLOR, 0, 24);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue