android led light

1. frameworks/base/services/jni/com_android_server_LightsService.cpp, it is interface for java

  1. static void setLight_native(JNIEnv *env, jobject clazz, int ptr,  
  2.         int light, int colorARGB, int flashMode, int onMS, int offMS, int brightnessMode)  
  3. {  
  4.     Devices* devices = (Devices*)ptr;  
  5.     light_state_t state;  
  6.   
  7.     if (light < 0 || light >= LIGHT_COUNT || devices->lights[light] == NULL) {  
  8.         return ;  
  9.     }  
  10.   
  11.     memset(&state, 0, sizeof(light_state_t));  
  12.     state.color = colorARGB;  
  13.     state.flashMode = flashMode;  
  14.     state.flashOnMS = onMS;  
  15.     state.flashOffMS = offMS;  
  16.     state.brightnessMode = brightnessMode;  
  17.   
  18.     {  
  19.         ALOGD_IF_SLOW(50, "Excessive delay setting light");  
  20.         devices->lights[light]->set_light(devices->lights[light], &state);  
  21.     }  
  22. }  

2. hardware/qcom/display/liblight/lights.c

  1. static int open_lights(const struct hw_module_t* module, char const* name,  
  2.         struct hw_device_t** device)  
  3. {  
  4.     int (*set_light)(struct light_device_t* dev,  
  5.             struct light_state_t const* state);  
  6.   
  7.     if (0 == strcmp(LIGHT_ID_BACKLIGHT, name))  
  8.         set_light = set_light_backlight;   // backlight  
  9.     else if (0 == strcmp(LIGHT_ID_BATTERY, name))  
  10.         set_light = set_light_battery;     // battery charge  
  11.     else if (0 == strcmp(LIGHT_ID_NOTIFICATIONS, name))  
  12.         set_light = set_light_notifications; // notifications for missed calls ,messages and so on.  
  13.     else if (0 == strcmp(LIGHT_ID_ATTENTION, name))  
  14.         set_light = set_light_attention;   // not sure  
  15.     else  
  16.         return -EINVAL;  
  17.   
  18.     pthread_once(&g_init, init_globals);  
  19.   
  20.     struct light_device_t *dev = malloc(sizeof(struct light_device_t));  
  21.     memset(dev, 0, sizeof(*dev));  
  22.   
  23.     dev->common.tag = HARDWARE_DEVICE_TAG;  
  24.     dev->common.version = 0;  
  25.     dev->common.module = (struct hw_module_t*)module;  
  26.     dev->common.close = (int (*)(struct hw_device_t*))close_lights;  
  27.     dev->set_light = set_light;  
  28.   
  29.     *device = (struct hw_device_t*)dev;  
  30.     return 0;  
  31. }  

  1. static struct hw_module_methods_t lights_module_methods = {  
  2.     .open =  open_lights,  
  3. };  

  1. /* 
  2.  * The lights Module 
  3.  */  
  4. struct hw_module_t HAL_MODULE_INFO_SYM = {  
  5.     .tag = HARDWARE_MODULE_TAG,  
  6.     .version_major = 1,  
  7.     .version_minor = 0,  
  8.     .id = LIGHTS_HARDWARE_MODULE_ID,  
  9.     .name = "lights Module",  
  10.     .author = "Google, Inc.",  
  11.     .methods = &lights_module_methods,  
  12. };  

Charging status precedes the status of missed call.


Compile modules:

[python]  view plain copy print ?
  1. # . ./build/envsetup.sh  
  2. # lunch num  
  3. # make lights.msm8960  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值