欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android HIDL接口

程序员文章站 2022-03-11 18:54:10
C++函数参数.hal文件中列出的参数会映射到 C++ 数据类型。未映射到基元 C++ 类型的参数会通过常量引用进行传递。对于具有返回值(具有generates语句)的每个 HIDL 函数,该函数的 C++ 参数列表中都有一个附加参数:使用 HIDL 函数的返回值调用的回调函数。有一种情况例外:如果generates子句包含直接映射到 C++ 基元的单个参数,则使用回调省略(回调会被移除,而返回值则会通过正常的return语句从函数返回)。函数返回值传输错误和返回类型......

C++

函数参数

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

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

 

函数返回值

传输错误和返回类型

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

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

 举例:

reportDTC (int32_t dtcNumber,DtcResult result) generates (StatusCode status);

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

没有返回值的函数

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

单向函数

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

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

 

Android HIDL接口

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

本文地址:https://blog.csdn.net/xikangsoon/article/details/107981530

相关标签: Android JAVA C++