Android 充电指示灯

南笙酒味 提交于 2019-12-03 14:37:26

充电指示灯的驱动文件是:leds-qti-tri-led.c
设备树中设备信息在:pmi632.dtsi里,可见led灯的硬件控制方式是pwm模式。

led_core.c中 led_set_brightness 去设置led亮度,这个函数会调用到具体的驱动leds-qti-tri-led.c中的qpnp_tri_led_set_brightness去设置亮度。
qpnp_tri_led_set_brightness在驱动注册的时候被绑定到brightness_set_blocking。
当 led_set_brightness 去设置led亮度的时候,将其委派到一个工作队列任务当中。队列任务去调用rightness_set_blocking,也就是qpnp_tri_led_set_brightness,去设置亮度。

lights.c 是HAL层访问底层的入口,ID为LIGHTS_HARDWARE_MODULE_ID。
文件将以lights.msm8953.so向上层提供接口。


https://blog.csdn.net/wangjun7121/article/details/88140862

android.hardware.light@2.0-service.rc
com_android_server_lights_LightsService.cpp
LightsService.java
SystemServiceManager.java
LightsService.java ----- 这里获得mLights

 


上层在BatteryService.java中定义灯 private Led mLed; // 定义Led
在BatteryService构造函数中获取Led灯 mLed = new Led(context, getLocalService(LightsManager.class)); // 获取Led

充电状态更新/电量变化时,更新灯的状态
update方法里 processValuesLocked(false); //处理新值
processValuesLocked主要做两件事情:
sendIntentLocked(); //发送电量的信息
mLed.updateLightsLocked(); //刷新灯的状态

updateLightsLocked是上层对Led的控制方式
这里是mBatteryLight也就是LIGHT_ID_BATTERY调用更新light。其实就是Led更新。
LIGHT_ID_BATTERY 和 底层的 LIGHT_ID_BATTERY对应上。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!