Android 背光流程小结

现在使用aidl方式

/hardware/interfaces/light/aidl/android/hardware/light/ILights.aidl

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

package android.hardware.light;

import android.hardware.light.HwLightState;
import android.hardware.light.HwLight;

/**
 * Allows controlling logical lights/indicators, mapped to LEDs in a
 * hardware-specific manner by the HAL implementation.
 */
@VintfStability
interface ILights {
    /**
     * Set light identified by id to the provided state.
     *
     * If control over an invalid light is requested, this method exists with
     * EX_UNSUPPORTED_OPERATION. Control over supported lights is done on a
     * device-specific best-effort basis and unsupported sub-features will not
     * be reported.
     *
     * @param id ID of logical light to set as returned by getLights()
     * @param state describes what the light should look like.
     */
    void setLightState(in int id, in HwLightState state);

/**
     * Discover what lights are supported by the HAL implementation.
     *
     * @return List of available lights
     */
    HwLight[] getLights();
}

/vendor/sprd/interfaces/lights/Android.bp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

cc_binary {
    name: "vendor.sprd.hardware.lights-service",
    relative_install_path: "hw",
    init_rc: ["lights.rc"],
    vintf_fragments: ["lights.xml"],
    vendor: true,
    shared_libs: [
        "libbase",
        "libbinder_ndk",
        "android.hardware.light-ndk_platform",
        "liblog",
    ],
    srcs: [
        "lights.cpp",
        "main.cpp",
        ],
}

filegroup {
    name: "lights-hal-srcs",
    srcs: [
        "lights.cpp",
    ],
}

androidgroup04@androidgroup04:~/disk00/Isaac/MOCORDROIDR_Trunk_UMS512/Codebase/out/target/product/ums512_1h10$ find -iname "*vendor.sprd.hardware.lights-service*"

./vendor/bin/hw/vendor.sprd.hardware.lights-service

./obj/EXECUTABLES/vendor.sprd.hardware.lights-service_intermediates

./obj/EXECUTABLES/vendor.sprd.hardware.lights-service_intermediates/vendor.sprd.hardware.lights-service

./archive_symbols/symbols.vendor/vendor/bin/hw/vendor.sprd.hardware.lights-service

./symbols/vendor/bin/hw/vendor.sprd.hardware.lights-service

/vendor/sprd/interfaces/lights/lights.cpp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57

#include "lights.h"

namespace aidl {
namespace android {
namespace hardware {
namespace light {

using ::aidl::android::hardware::light::BnLights;
using ::aidl::android::hardware::light::HwLight;
using ::aidl::android::hardware::light::HwLightState;
using ::aidl::android::hardware::light::ILights;
using ::aidl::android::hardware::light::LightType;
using ::aidl::android::hardware::light::FlashMode;

#define TOUCH_SUSPEND "/sys/touchscreen/ts_suspend
... ...

ScopedAStatus Lights::setLightState(int id, const HwLightState& state) {
    if (!(0 <= id && id < availableLights.size())) {
        ALOGE("Light id:%d does not exist.\n", id);
        return ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION);
    }

HwLight const& light = availableLights[id];
    int ret = 0;

switch (light.type) {
        case LightType::BACKLIGHT:
            ret = setLightBacklight(state);
            break;
        case LightType::KEYBOARD:
            ret = setLightKeyboard(state);
            break;
        case LightType::BUTTONS:
            ret = setLightButtons(state);
            break;
        case LightType::NOTIFICATIONS:
            ret = setLightLedsNotifications(state);
            break;
        case LightType::ATTENTION:
            ret = setLightLedsAttention(state);
            break;
        case LightType::BATTERY:
            ret = setLightLedsNotifications(state);
            break;
    }

if (ret)
        ALOGE("%s light type:%d fail:%d", __func__, light.type, ret);

return ScopedAStatus::ok();
}

}  // namespace light
}  // namespace hardware
}  // namespace android
}  // namespace aidl

/vendor/sprd/interfaces/lights/lights.cpp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

/*light nodes*/
struct led leds[NUM_LEDS] = {
    ... ...
    [LCD_BACKLIGHT] = {
               .brightness = {
                      "/sys/class/backlight/sprd_backlight/brightness",
                      -1},
               },
    ... ...
};

int Lights::setLightBacklight(const HwLightState& state) {
    int err = 0;
    int brightness = rgbToBrightness(state);

if (NULL == leds[LCD_BACKLIGHT].brightness.filename) {
        ALOGE("func:%s, unsupported light!\n", __func__);
        return -EINVAL;
    }

pthread_mutex_lock(&g_lock);
    err = write_int(&leds[LCD_BACKLIGHT].brightness, brightness);
    if ((err >= 0) && (!!brightness != !!last_backlight)) {
        if (!!brightness) {
            write_string(&leds[TS_SUSPEND].ts_suspend, "0");
            write_string(&leds[LCD_DDR_VOTE].ddr_vote, "lcdon");
            write_string(&leds[LCD_DDR_VOTE].ddr_unvote, "lcdoff");
        } else {
            write_string(&leds[TS_SUSPEND].ts_suspend, "1");
            write_string(&leds[LCD_DDR_VOTE].ddr_vote, "lcdoff");
            write_string(&leds[LCD_DDR_VOTE].ddr_unvote, "lcdon");
        }
        last_backlight = brightness;
    }
    pthread_mutex_unlock(&g_lock);
    return err;
}

=================================================================

10.sprd背光流程相关推荐

  1. Android 10 拨打电话流程

    接续上一章节,理解Android 10 拨打电话流程 packages/apps/Dialer/java/com/android/dialer/dialpadview/DialpadFragment. ...

  2. Android原生调节屏幕背光流程

    Android 5.1调节背光流程 版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明. https://mp.csdn.net/mdeditor/ ...

  3. 9 pcb螺丝焊盘打很多小孔_PCB板设计的10个基本设计流程

    PCB板设计需要提供信息: (1)原理图:一种完整的电子文档格式,可以生成正确的网表(网表); (2)机械尺寸:提供定位装置的具体位置和方向识别,以及特定高度限位位置区域的识别; (3) BOM清单: ...

  4. Android7.1 控制背光流程

    背光调节通信图,如下 如论上层哪里控制背光,上图部分是共用的流程,每次设置一个新的背光值,都会从上一个背光值开始,在RampAnimator.java以计算出的步长调整背光到目标背光值,因此是一个渐变 ...

  5. android 自动背光闪烁,Android 背光流程小结

    android背光控制小结,从上到下: ----android---- DisplayPowerController.java--> DisplayPowerState.java:SCREEN_ ...

  6. Android 10 设置壁纸流程

    ---------------------------------------------------------------------------------------------------- ...

  7. 我记录网站综合系统 -- 技术原理解析[10:PermissionChecker流程]

    源代码位置:\Web\Mvc\Processors:PermissionChecker.cs Config -> wojilu.Web.Mvc.CoreHandler.ProcessReques ...

  8. windows 10 开启远程控制流程

    目录 1. 打开允许远程控制 2 .关闭防火墙 3. 允许没有密码的用户远程访问 1. 打开允许远程控制  2 .关闭防火墙 3. 允许没有密码的用户远程访问 运行 gpedit.msc

  9. [RK3288][Android6.0] PWM backlight 驱动流程小结

    Platform: RK3288 OS: Android 6.0 Kernel: 3.10.92 背光的亮暗通过pwm控制,驱动在文件pwm-rockchip.c中,这里不做描述. dts各个配置参数 ...

最新文章

  1. [JavaWeb基础] 007.Struts2的配置和简单使用
  2. oneshot单样本学习笔记
  3. python需要php吗-PHP会被Python取代吗?
  4. 2020-10-13 四元数用法(不讲原理,只讲计算规则)
  5. Sql—表格的建立,删除,数据的建立与删除-总结篇
  6. 从0到1 | 0基础/转行如何用3个月搞定机器学习
  7. 【python】集合的定义与操作
  8. Mark Cuban投资组合中60%为BTC,30%为ETH
  9. 13_新闻客户端界面搭建
  10. OD使用教程10 - 调试篇10|解密系列
  11. 在那里可以下载jar包?
  12. 计算机旅游网站毕业论文,旅游网站的设计与实现
  13. Anylogic学习--------选项列表
  14. stokes方程matlab,Navier-Stokes matlab 238万源代码下载- www.pudn.com
  15. 算法渐近性质分析_神奇宝贝解释的渐近分析:深入研究复杂性分析
  16. [zt]再谈QQ自动登陆器:提供C#源码下载(下)
  17. mysql定时任务每天凌晨三点钟醒来_linux cron 下的定时执行工具使用技巧
  18. 项目经理应该如何制定项目进度计划?
  19. Android使用Startup和Lifecycle打造一个单独的测试module
  20. Argo-DCS数据传输笔记

热门文章

  1. 小程序 设置小程序打开聊天中的素材
  2. 女程序员们的结婚要求
  3. 【Flocking算法】海王的鱼塘是怎样炼成的
  4. Mybatis中 if 语句使用空格问题
  5. IT人看十四主星代表
  6. 泰坦尼克号幸存者的预测
  7. 求知方面无妨多一点,生活方面无妨省一点
  8. SQL优化:Hive---distribute by 防止数据倾斜
  9. 【规范】万字集大成的HDLFPGA学习和规范
  10. kafka添加安全验证配置