LED Service添加供app使用基本流程
 1、需要添加文件在源码中的位置

2、具体需要添加的代码路径:
 Kernel:
 Dts:
 a、kernel/msm-4.4/arch/arm/boot/dts/qcom/xxxx-mtp.dtsi
 b、 kernel/msm-4.4/arch/arm/boot/dts/qcom/xxxxx.dtsi
 c、 kernel/msm-4.4/arch/arm/boot/dts/qcom/msm-xxxxxl.dtsi
 由于控制4A纸、finger和身份证三盏LED灯都是挂载到gpio_B口下,所以需要通过msm-pmxxxxxI.dtsi实现dts的配置操作
 Driver:
 a、kernel/msm-4.4/drivers/leds/leds-a4Paper.c 
 b、 kernel/msm-4.4/drivers/leds/leds-finger.c 
 c、 kernel/msm-4.4/drivers/leds/leds-idCard.c
Hal:
 a、hardware/libhardware/modules/led/led.c 
 b、hardware/libhardware/modules/led/Android.bp 
 c、hardware/libhardware/include/hardware/led.h 
 其他还需要将新加的LED hal控制做相关的打包处理 build/make/target/product/full_base.mk和LED 节点文件的权限修改device/qcom/common/rootdir/etc/init.qcom.rc
Frameworks:
 JNI:
 a、frameworks/base/services/core/jni/com_android_server_LedService.cpp 
 b、 frameworks/base/services/core/jni/onload.cpp
 c、frameworks/base/services/core/jni/Android.bp
 Jni的封装添加
 Service:
 a、frameworks/base/core/java/android/app/LedManager.java 
 b、frameworks/base/services/core/java/com/android/server/LedService.java 
 为添加的service文件
 c、frameworks/base/core/java/android/app/ILedService.aidl 
 跨进程调用添加
 d、frameworks/base/core/java/android/app/SystemServiceRegistry.java
 e、 frameworks/base/core/java/android/content/Context.java
 context上下文服务添加
3、代码基本流程
 
 函数hw_get_module依次在目录/system/lib /hw和/vendor/lib/hw中查找一个名称为"<MODULE_ID>.variant.so"的文件,其 中,<MODULE_ID>是一个模块ID
 
hw_get_module()函数利用HAL层注册信息id,获取相应的模块。
 hw_get_module_by_class()函数利用HAL层注册信息id和name,获取相应的模块,主要用于id相同、name不同,即获取相同功能但厂家不同的硬件库。










