概述
HIDL:HAL interface definition langurage。描述HAL和用户之间的接口。接口可以是数据类型或方法。这些数据类型和方法组织在接口和包里。
HIDL也是软件之间的一个通信系统,为接口添加了binder机制。
HIDL描述的数据结构和方法签名组织在接口里,即.hal文件。HIDL语言的符号类似于C++和java语言,但也有不同的关键字。
HIDL设计
设计目标:framework和HALS之间互相独立OTA,不依赖于对方。
HIDL工作模式
binderized
passthrough
passthrough
passthrough mode也就是same-process mode。
为了把运行早期版本的设备升级到ANDROID O,可以把传统(和legacy)HALS封装成HIDL接口,这个接口为HAL提供binderized和passthrough 模式。这种封装对HAL和framework是透明的。
Passthrough模式只支持C++,运行早期版本的Android的设备没有Java编写的HALs,因此Java HALs只支持binderized。
Passthrough 头文件
Hidl-gen在编译.hal文件时生成一个用于passthrough 模式的头文件:BsFoo.h。
其它头文件则用于binder通信。
Passthrough方法调用:
1:直接调用 ,运行在调用者线程里
2:oneway 方法调用,运行在自己线程里
BsFoo.h包含由HIDL产生的方法提供了诸如让