Android HIDL接口

news/2025/2/11 19:27:38/

C++


函数参数

.hal 文件中列出的参数会映射到 C++ 数据类型。未映射到基元 C++ 类型的参数会通过常量引用进行传递。

对于具有返回值(具有 generates 语句)的每个 HIDL 函数,该函数的 C++ 参数列表中都有一个附加参数:使用 HIDL 函数的返回值调用的回调函数。有一种情况例外:如果 generates 子句包含直接映射到 C++ 基元的单个参数,则使用回调省略(回调会被移除,而返回值则会通过正常的 return 语句从函数返回)。


函数返回值


传输错误和返回类型

generates 语句可以产生三种类型的函数签名:

  • 如果只有一个作为 C++ 基元的返回值,generates 返回值会由 Return<T> 对象中函数的值返回。
  • 如果情况更复杂,generates 返回值则会通过随函数调用本身一起提供的回调参数返回,而函数则返回 Return<void>
  • 如果不存在 generates 语句,函数则会返回 Return<void>

 举例:

report (int32_t number,bool result) generates (StatusCode status);

将执行的结果StatusCode status,通过回调函数返回给相应的进程。

generates 语句是定义一个回调的,可以不使用generates,将结果作为返回值给到调用者。

比如:StatusCode report (int32_t number,bool result);

HIDL支持将结构体或者类作为函数的返回值。

比如:struct StatusCode report (int32_t number,bool result);

没有返回值的函数

没有 generates 语句的函数的 C++ 签名将不会在参数列表中有任何回调参数。它的返回类型将为 Return<void>.


单向函数

以 oneway 关键字标记的函数是异步函数(其执行不会阻塞客户端),而且没有任何返回值。oneway 函数的 C++ 签名将不会在参数列表中有任何回调参数,而且其 C++ 返回值将为 Return<void>

如果不关心是否调用成功,就使用oneway。

参考:https://source.android.com/devices/architecture/hidl-cpp/functions


http://www.ppmy.cn/news/831277.html

相关文章

HID协议

转自&#xff1a;https://blog.csdn.net/zhoutaopower/article/details/82469665 1.简述 USB HID类是USB设备的一个标准设备类&#xff0c;包括的设备非常多。HID类设备定义它属于人机交互操作的设备&#xff0c;用于控制计算机操作的一些方面&#xff0c;如USB鼠标、USB键盘、…

开源的HIDS软件

最近发现了一个好用的开源HIDS软件&#xff1a; OSSEC HIDS 项目主页&#xff1a;http://www.ossec.net 支持linux 和 windows系统 但是似乎server要安装在Linux系统上。 agent可以安装在linux或者windows上。 功能包括日志分析&#xff0c;rootkit检测&#xff0c;完整性…

Android HIDL 中 hidl-gen使用

前言 在 Android HIDL 详解 一文提到HIDL 使用的整个过程都是跟其工具hidl-gen 分不开,这一篇来详细分析hidl-gen 的使用。 代码基于:Android P 使用 hidl-gen 的代码路径为:system/tools/hidl cc_library_host_shared {name: "libhidl-gen",defaults: ["…

【HIDL】指纹创建并继承原生HIDL接口复盘

一、 问题现象&#xff1a; vts_treble_vintf_vendor_test—DeviceManifest/SingleManifestTest#InterfacesAreReleased/0 Fail 具体报错信息&#xff1a; Getting: android.hardware.biometrics.fingerprint2.1::IBiometricsFingerprint/default test/vts-testcase/hal/treble…

Linux HID分析

&#xfeff;&#xfeff; Linux Hid设备调研 一&#xff0e;HID I/O传输驱动程序 HID子系统独立于底层传输驱动程序&#xff0c;开始仅支持USB&#xff0c;但其它规格采用HID设计提供了新的传输驱动&#xff0c;内核至少支持USB、蓝牙、I2C和用户空间I…

HIDL概览

转载&#xff1a;https://source.android.com/devices/architecture/hidl/?hlzh-cn HAL 接口定义语言&#xff08;简称 HIDL&#xff0c;发音为“hide-l”&#xff09;是用于指定 HAL 和其用户之间的接口的一种接口描述语言 (IDL)。HIDL 允许指定类型和方法调用&#xff08;会…

HIDL 原理及使用详解

目录 1. HIDL 概念 1.1. Hidl 的简单介绍 1.2. Hidl 的设计目的 1.3. Hidl 与 Aidl 的对比 2 . HIDL 类型 2.1 Passthrough 2.2 Binderized 3. HIDL 服务的实现 3.1 hidl_gen 工具路径 3.2 update-makefiles.sh 3.3 update-files.sh 3.4 HIDL 生成的文件 3.5 …

HID 开发

藍牙HID (1)Bluetooth HID devices支持&#xff1a; Input(从发数据给主), Output&#xff08;主发数据给从&#xff09;, Feature&#xff08;双向传输&#xff09;。 (2)HID建立Control Channel和Interrupt Channel两个通道&#xff0c; report可以在这两条channel上传输&a…