feat(lcd): use Montserrat clock and battery icon assets

This commit is contained in:
chenjintao
2026-10-10 10:12:11 +08:00
parent 22f5ac70a2
commit bf06618848
31 changed files with 970 additions and 187 deletions
+11 -6
View File
@@ -24,21 +24,26 @@
## 状态栏
- 左上 HH:MM,沿用 SNTP 和系统时区;未同步显示 --:--。
- 右上百分比和电池;未知值显示 --%,充电绿色并带闪电缺口,低电量红色。
- 左上时间已改成 Montserrat 14 原始字号,提取数字、冒号、横线直接绘制;
无 GFX label 分配、无 LVGL GUI 初始化。旧 5×7 字形已从 HUD 实现移除。
- 右上删除百分比,使用用户提供的 40×20 五档电池图标及对应充电版本;
未知电量不显示,保留原底部低电量提示。档位规则、成本和生成入口见新指南第五节。
- SOC、有效性和充电状态来自现有 domain battery 服务,不从 ADC 重算。
- GFX 顶部 320x40 RGB565 图层,常驻 25,600 B PSRAM;只在分钟或电池状态
改变时使图层失效并刷新。正常待机/listening 眨眼切换缓存,不重新解码 PNG;
实时网格与程序闭眼弧线属于待机缓存生成或缓存失败后备路径。
- PNG 表情复用相同点阵 / 电池绘制器,在每帧合成时更新;二维码和 LCD
- PNG 表情复用相同 Montserrat 子集 / 电池素材绘制器,在每帧合成时更新;二维码和 LCD
边界测试页面不显示状态栏。PNG 无限等待期间不会独立重绘状态栏。
- 不需要字体包或新图片。旧 PNG 低电量底部告警保留;旧充电 PNG 不再自动
叠加,避免与数字电量冲突。GFX 待机低电量以红色电池表示。
- 新增字形子集和十个电池素材编译数组,不创建字形/图标解码缓存;普通堆、
像素 PSRAM 和 DMA 无新增。旧 PNG 低电量底部告警保留;旧充电 PNG 不再
自动叠加。低电量图标颜色来自用户素材,不再由代码统一染红。
## 验证
`python3 tools/test_lcd_status_hud.py` 从实际源码提取绘制函数,用 Clang
AddressSanitizer / UndefinedBehaviorSanitizer 检查 808 组有效性、充电、
低电量、0..100% 组合,验证行块和整帧等价、边界及颜色。
AddressSanitizer / UndefinedBehaviorSanitizer 检查 2,048 组有效性、充电、
低电量、完整 uint8 电量输入组合和全天 1,440 个时间,验证行块与整帧等价、
边界、原图 Alpha、透明背景恢复、240/320 像素画布和字节交换开关。
使用 ESP-IDF v5.5.4 执行 idf.py build。实机需验证: