充电态权威源 mp2731-charger/status(修 battery/status 撒谎恒 Discharging)

真机实测:设备充电中但 battery/status 恒 Discharging;权威源为
mp2731-charger/status(Charging/Full),回退链 fusb302-typec-source/online==1
→ 旧逻辑 battery/status==Charging || ac/online==1。电量仍读 battery/capacity。

- meow_svc_power: battery/status 命令充电判定走权威链(MEOW_PS_DIR 可重定向供宿主自测);
  svc_power_authtest 补 6 用例(mp2731 Charging/Full/Discharging + 两级回退)全 PASS
- SDK meow_ui_sys: 状态栏充电态同权威链
- launcher util.c: 抽 batt_is_charging() 公共判定;meow_sys_light 1s 轻刷补充电态(插拔实时)
- bootmenu 无充电判定(仅读 capacity)/MeowPanel 透传 power 服务:均无需改
- 真机验证(充电窗口):新二进制 battery=88%(Charging),对照固件内旧版 88%(Discharging)
- hello/files/ncm 随 meow_ui.a(af6703f2) 重链已热更到卡(.new+mv,md5 对核一致)

md5: meow_svc_power 39ae3aa2 / meow_launcherd 2aa61780 / hello 2444c151 /
files 691db88b / ncm 89da63ed(仅重链,源码未动)
This commit is contained in:
MeowOS committed 2026-09-01 03:25:01 +08:00
1 parent 793a807ce3
commit f149e24f28
13 files changed
+114 -12

No files matched your search

+17 -2
View File
@@ -134,8 +134,23 @@ void meow_ui_sys_refresh(void)
g_sys.batt = read_int("/sys/class/power_supply/battery/capacity");
if (g_sys.batt < 0 || g_sys.batt > 100) g_sys.batt = -1;
char st[16];
read_str("/sys/class/power_supply/battery/status", st, sizeof st);
g_sys.charging = (strstr(st, "Charg") || strstr(st, "Full")) ? 1 : 0;
/* 充电态权威源(真机实测 2026-09-01:battery/status 恒 Discharging 撒谎):
* 1) mp2731-charger/status(Charging/Full=充电中);2) 回退 fusb302-typec-source/online==1
* (USB-C PD 插线);3) 再回退旧逻辑 battery/status==Charging || ac/online==1。 */
read_str("/sys/class/power_supply/mp2731-charger/status", st, sizeof st);
if (st[0]) {
g_sys.charging = (strstr(st, "Charg") || strstr(st, "Full")) ? 1 : 0;
} else {
int onl = read_int("/sys/class/power_supply/fusb302-typec-source/online");
if (onl >= 0) {
g_sys.charging = (onl == 1) ? 1 : 0;
} else {
read_str("/sys/class/power_supply/battery/status", st, sizeof st);
g_sys.charging = (strstr(st, "Charg") || strstr(st, "Full")) ? 1 : 0;
if (!g_sys.charging && read_int("/sys/class/power_supply/ac/online") == 1)
g_sys.charging = 1;
}
}
char op[16];
read_str("/sys/class/net/wlan0/operstate", op, sizeof op);
+2 -1
View File
@@ -7,7 +7,8 @@
* meow_ui_set_fullscreen() / meow_ui_statusbar_height()。
*
* 数据源与 launcher 的 meow_sys 同源单点一致:
* - 电量 /sys/class/power_supply/battery/{capacity,status}
* - 电量 /sys/class/power_supply/battery/capacity(充电态权威源=mp2731-charger/status,
* 回退 fusb302-typec-source/online → battery/status|ac/online;battery/status 会撒谎)
* - WiFi /sys/class/net/wlan0/operstate
* - 蓝牙 实际 powered(hciconfig -a hci0 的 UP;spawn 贵 → 缓存 30s 刷一次)
* - 音量 /usr/data/meow/settings.conf 的 audio.volume(launcher 同文件;