参考:视频
一、HAL已经定义好的结构体
这此三者是实现HAL时必不可少的结构体,定义在路径为 hardware/libhardware/include/hardware/hardware.h 的头文件中。在这先列出介绍,如何使用在下一节。
struct hw_module_t;
struct hw_moudule_methods_t;
struct hw_device_t;
typedef struct hw_module_t
{
char* id; //每个module都有唯一的ID
char* name;
struct hw_module_methods_t* methods;
} hw_module_t;
typedef struct hw_moudule_methods_t
{
//open绑定一个函数,函数malloc创建一个device并对device的属性赋值
//参数device用于返回一个可操作的device
int (*open)(cosnt struct hw_module_t* module, const char* id, struct hw_device_t** device);
} hw_moudule_methods_t;
typedef struct hw_device_t
{
struct hw_module_t* module;
//绑定一个用于释放设备的函数,譬如free函数释放device所占的内存
int(*close)(struct hw_device_t* device);
} hw_device_t;
三、实现Hal的步骤
提示:父类结构体