电源、电量与 PWR
电量显示
AXP2101 提供燃料计百分比与充电状态。v6 曾把电量画在所有主页面;v7 将其移到 SETTINGS 黑场顶部中央,显示为 10 个离散段:
segments = ceil(percent / 10),0% 为 0 段。- 充电状态使用独立短标记。
- SEED、SHOP、STAR、发射与 ambient 不出现电量 HUD。
- 游戏只打开必要检测并读取状态,不修改厂商充电目标电压/电流与 LDO/DCDC 配置。
PWR 硬件路径
PWR 不是 ESP32 的普通 GPIO,而是 TCA9554 的 EXIO4 高有效整形信号。固件每 50 ms 读取并去抖;启动后必须先观察到完整释放态,才接受新手势,防止长按开机残留高电平又被解释成关机。
短按
- 唤醒态短按:同步保存并进入 ambient。
- ambient 短按:恢复亮度和主页面。
- 不执行当前页面主动作,也不穿透成触摸。
长按
| 时长 | 行为 |
|---|---|
| 2 秒 | 软件安全关机:冻结 → 保存 → 读回 → AXP2101 shutdown |
| 10 秒 | PMIC 硬件关机兜底,用于固件卡死 |
| 关机后约 2 秒 | 硬件开机 |
耐久屏障
设置页重启和 PWR 关机共用同一套屏障:
text
freeze input/tick
→ update saved_at
→ encode schema/checksum
→ nvs_commit primary/backup
→ read primary bytes back
→ decode + compare
→ restart or PMIC shutdown任一步失败都取消软件关机,避免“看似安全关机,实际最后进度没落盘”。保存成功后的 180 ms 断电窗口不再 tick,防止刚验证的数据又变脏。
实体证据
实板短按记录完整 EXIO4 高/低边沿、standby 与 wake;长按关机前保存 taps=718 / purchases=67,USB 断开,长按开机后两项精确一致,星火只增加 RTC 计算的离线收益。
