android hidl 介绍

HIDL 是围绕接口进行比啊你的,接口是面向对象语言实用的一种用来定义命令行为的抽象类型。每个接口都有一个软件包。

软件包

软件包名称可以具有子级,例如 package.subpackage。发布的 HIDL 软件包的根目录是 hardware/interfacesvendor/vendorName(例如 Pixel 设备为 vendor/google

软件包名称在根目录下形成一个或多个子目录;定义软件包的所有文件都位于同一目录下。
例如:android.hardware.example.extension.light@2.0 可以在 hardware/interfaces/example/extension/light/2.0 下找到。
下表列出了软件包前缀和位置
在这里插入图片描述
通过Android HIDL 编程规范 知道包名的命名规则:

PACKAGE.MODULE[.SUBMODULE[.SUBMODULE[]]]@VERSION

结合例子得到:

  • PACKAGE 为android.hardware
  • MODULE 为nfc
  • VERSION 为1.0
    其中的PACKAGE 是通过ROOT-DIRECTORY 隐射来得到的.

例子中android.hardware.nfc 路径应该是来源于hardware/interfaces/nfc,那么如何确定这个ROOT-DIRECTORY?其实这个是在编译的时候mk 或bp 设定的,例如android.hardware定义在hardware/interfaces/Android.bp 中:

hidl_package_root {
    name: "android.hardware",
    path: "hardware/interfaces",
}

接口

除了 types.hal 之外,其他 .hal 文件均定义一个接口。接口通常定义如下:

interface IBar extends IFoo { // IFoo is another interface
    // embedded types
    struct MyStruct {/*...*/};
 
    // interface methods
    create(int32_t id) generates (MyStruct s);
    close();
}

导入

导入采用以下 3 种格式之一:

  • 完整软件包导入:import PACKAGE-NAME;
  • 部分导入:import PACKAGE-NAME::UDT;(或者,如果导入的类型是在同一个软件包中,则为 import UDT;)
  • 仅类型导入:import PACKAGE-NAME::types;

完全导入:

PACKAGE-NAME 为软件包的完成名称,例如

import android.hardware.nfc@1.0;  

部分导入:

import INfcClientCallback;

因为是在一个软件包中,可以直接导入接口名称。当然也可以改为:

import android.hardware.nfc@1.0::INfcClientCallback;

目录规范

函数名称、变量名称和文件名应该是描述性名称;避免过度缩写。将首字母缩略词视为字词(例如,请使用 INfc,而非 INFC)

目录结构和文件命名

  • ROOT-DIRECTORY
    • MODULE
      • SUBMODULE
        • VERSION
          • Android.mk
          • IINTERFACE_1.hal
          • IINTERFACE_2.hal
          • IINTERFACE_N.hal
          • types.hal
            其中:
  • ROOT-DIRECTORY 为:
    hardware/interfaces(如果是核心 HIDL 软件包)
    vendor/VENDOR/interfaces(如果是供应商软件包),其中 VENDOR 指 SoC 供应商或原始设备制造商 (OEM)/原始设计制造商 (ODM)。
  • MODULE 应该是一个描述子系统的小写字词(例如 nfc)。如果需要多个字词,请使用嵌套式
  • SUBMODULE。可以嵌套多层
  • VERSION 应该与版本中所述的版本完全相同 (major.minor)。
  • IINTERFACE_X 应该是含有 UpperCamelCase/PascalCase 的接口名称(例如 INfc),如接口名称中所述。
    例如:
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值