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

相关文章:

  • 2021-12-10
  • 2021-04-08
  • 2021-06-17
  • 2022-01-21
  • 2021-07-10
  • 2022-01-24
  • 2021-10-29
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-10-14
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-29
相关资源
相似解决方案