本文主要是介绍充电状态读取辨析charging_enabled与battery_charging_enabled,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
是否在充电
老化程序查询手机是否在充电是查询哪个节点呢?在老化过程中,如果电量过高会导致过充,因此要限制电量,能过enable/disable 充电过程。
有以下两个节点,分别对应不同的寄存器
/sys/class/power_supply/battery/charging_enabled 0x1340:4 -- USB
/sys/class/power_supply/battery/battery_charging_enabled 0x1242:1 -- BATTERY
前者表示充电器存在,即充电器是插入状态,系统有闪电图标也表示充电器在,但是不表示在充电!!
后者表示电池在充电,插着充电器,不一定给电池供电的。
如果设置charging_enabled=0, 则USB挂起,线上电流归0;battery_charging_enabled依然为1,此时,电池放电;
如果设置battery_charging_enabled,则线上电流不归0,给系统供电; charging_enabled依然为1;但不进电池;此时电池既不放电也不充电。
因此要读取是否在充电,是否有电流进电池,读取battery_charging_enabled;
因为,如果只是给系统供电而不充电,则显然是不充电的。此时,进电池的状态并不能说明充电器是否供电;
因为如果不进电池,但是进系统,说明充电器还是供电的,只是没有进电池。
Charger IC | Charge type | USB suspend | Battery charging | Power_path | Full status |
PM8909 | Linear-charger | 0x1347 | 0x1049 | 0x1308 | 线上0 |
PMI8952 | SMB | 0x1340 | 0x1242 | 0X1308 | 线上供电 |
PMI632 | SMB5 | Slave charger | 0X1042 | 110B | 线上供电 |
PM7250B | SMB5 | 0x1340 | 0x1042 | 110B | 线上供电 |
并行充电IC上的新发展
随着高通平台的发展,我们发现这两个属性慢慢的均移入到parallel中,用来对slave charger进行操作,而对main charger的状态和使能则放弃了。也就是不说,不能再对main charger进行充电行为的控制。当然,芯片上肯定是可以控制的,只是接口没有开放给OEM罢了。
这篇关于充电状态读取辨析charging_enabled与battery_charging_enabled的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!