编写android HAL举例: lights
来源:互联网 发布:linux挂载ntfs硬盘 编辑:程序博客网 时间:2024/06/06 12:29
androidHAL层主要在hardware目录下,其中hardware\libhardware\下是同一用模块的概念来加载HAL的.so库。这里以背光lights为例:
struct hw_device_t common; int (*set_light)(struct light_device_t*dev, struct light_state_t const*state);
.tag = HARDWARE_MODULE_TAG, .version_major = 1, .version_minor = 0, .id = LIGHTS_HARDWARE_MODULE_ID, .name = "myhal lights Module", .author = "Google, Inc.", .methods =&lights_module_methods, .open = open_lights, struct hw_device_t**device) int (*set_light)(struct light_device_t*dev, struct light_state_t const* state); set_light = set_light_backlight;
struct light_device_t *dev = malloc(sizeof(structlight_device_t)); memset(dev, 0, sizeof(*dev)); dev->common.tag =HARDWARE_DEVICE_TAG; dev->common.version =0; dev->common.module = (structhw_module_t*)module; dev->common.close = (int(*)(struct hw_device_t*))close_lights; dev->set_light =set_light;
*device = (struct hw_device_t*)dev; return 0;
struct light_state_t const*state) return 0;
HAL模块要以MODULE_ID.platform.so的名字存放在文件系统的/system/lib/hw/下面。
看一下\hardware\libhardware\include\hardware\lights.h
我们要实现的lights主要是要实现下面这个接口:
struct light_device_t {
};
1. 在hardware目录下创建我们的hal目录 hardware\myhal\liblights\
2. 编写Android.mk
LOCAL_PATH:=$(call my-dir)
include$(CLEAR_VARS)
LOCAL_SRC_FILES:= lights.c
LOCAL_PRELINK_MODULE := false
LOCAL_MODULE_PATH :=$(TARGET_OUT_SHARED_LIBRARIES)/hw
LOCAL_SHARED_LIBRARIES := liblog
LOCAL_MODULE :=lights.default
include$(BUILD_SHARED_LIBRARY)
3.编写lights.c
每个模块都要定义自己的hw_module_t结构:
const structhw_module_t HAL_MODULE_INFO_SYM = {
};
模块方法:就一个open函数
static structhw_module_methods_t lights_module_methods = {
};
上层用这个函数打开一个lights设备的实例。
static intopen_lights(const struct hw_module_t* module, char const*name,
{
}
这里的light_device_t就是在lights.h里定义的lights设备结构。主要是里面的set_light回调函数。
最后实现自己的写背光函数,在这里面操作自己背光设备,如"/sys/class/leds/red/brightness"
staticint set_light_backlight(struct light_device_t*dev,
{
}
3. 编译make后在system/lib/hw/下生成lights.default.so
android会自动加载这个模块来设背光
0 0
- 编写android HAL举例: lights
- 编写android HAL代码
- android hal学习——编写hal代码
- android hal学习——编写hal代码【转】
- Android HAL层分析 (gralloc显示模块 举例)
- HAL(1) -- 编写android内核驱动
- Android Lights
- android hal 学习——编写android内核驱动
- HAL(2) -- 编写android C可执行文件调用驱动
- Android硬件抽象层(HAL)模块编写规范
- android hal学习——aidl,java service,jni编写
- Android之HAL层编写JNI供Java接口访问
- Android 编写硬件抽象层(HAL)模块接口
- 4.Android硬件访问服务编写HAL代码
- Android HAL
- android HAL
- android HAL
- Android Hal
- Android利用LocalSocket实现Java端进程与C端进程之间的IPC
- Onhand Qty(Tree) Diagnostics Scripts R12
- Android 下挂载android的nfs文件系统
- Drools学习笔记1-规则引擎介绍
- 用户在页面上提交表单到服务器时,因为插入html代码报错
- 编写android HAL举例: lights
- ORA-00001 : Unique Constraint Violated Caused by DATE VS Timestamp(6)
- naver各个词典服务
- android 几种获得收益渠道的封装
- ORA-00845: MEMORY_TARGET not Supported on This System
- 权限管理 (三)DWR实现异步通信
- 25个增强iOS应用程序性能的提示和技巧
- Android开发进阶之NIO非阻塞包
- 十种贵人可遇不可求