Android 充電指示燈


充電指示燈的驅動文件是: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對應上。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM