Android HAL
2010-04-21 06:36:00 来源:WEB开发网二、 HAL Stub 实现步骤 (Implementation)
1. 设计自已的 wrapper data structure
* 编写头文件 led.h
* 定义 struct led_module_t
* 框架提供的 struct hw_module_t 、 struct hw_device_t 必须 放在第一个 field ,并取名为 common 。
* 可参考 hardware/hardware.h
struct led_module_t {
struct hw_module_t common;
/* support API for LEDServices constructor */
};
2. led_module_t 的意义
声明初始化时期 (new object) 的 supporting API 、在 constructor 里会使用到。
3. 定义 led_control_device_t
声明控制时期的 supporting API 、在 Manager API 里会使用到。
struct led_control_device_t {
struct hw_device_t common;
/* supporting control APIs go here */
int (*getcount_led)(struct led_control_device_t *dev);
int (*set_on)(struct led_control_device_t *dev);
int (*set_off)(struct led_control_device_t *dev);
};
4. 每? HAL stub 都要声明 module ID
#define LED_HARDWARE_MODULE_ID "led"
5. 声明 Stub operations 并实现 callback functions
Stub 的 module 结构体必须 取名为 HAL_MODULE_INFO_SYM ,此名不可更改。
const struct led_module_t HAL_MODULE_INFO_SYM = {
common: {
tag: HARDWARE_MODULE_TAG,
version_major: 1,
version_minor: 0,
id: LED_HARDWARE_MODULE_ID,
name: "led HAL module",
author: "gggggg",
methods: &led_module_methods,
},
/* supporting APIs go here */
};
以下是具体的文件内容。
led.h 文件:
#include
#include
#include
#include
#include
#define LED_HARDWARE_MODULE_ID "led"
更多精彩
赞助商链接