Android HIDL接口
程序员文章站
2022-06-22 17:25:42
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。
参考:https://source.android.com/devices/architecture/hidl-cpp/functions
本文地址:https://blog.csdn.net/xikangsoon/article/details/107981530