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

Android HIDL接口相关推荐

  1. Android R(11)为自定义HIDL接口添加DMFCM(六)

    为自定义HIDL接口添加DM&&FCM(六) 1.概览   引入HIDL的一个重要原因是Android团队想要将Android Framework和Android vendor之间的代 ...

  2. android添加hidl,android hidl

    1.定义.hal接口文件,如: 在vendor/sprd/interface中新建目录hello,其中定义好hidl接口,如: 1 package [email protected]1.0;2 3 i ...

  3. Android HIDL第一个HelloWorld demo

    原址 写在前面 程序员有个癖好,无论是学习什么新知识,都喜欢以HelloWorld作为一个简单的例子来开头,咱们也不例外. OK,咱这里都是干货,废话就不多说啦,学习HIDL呢咱们还是需要一些准备工作 ...

  4. Android HIDL 简介

    Android HIDL 简介 Qidi 2017.08.01 (Markdown & Haroopad) 注意:本文基于 Android 8.0 进行分析. 0.特别声明 本文是在 HIDL ...

  5. Android11添加AIDL系统服务及HIDL接口服务

    软件平台:Android11 硬件平台:QCS6125 直接上需求:首先添加自定义系统服务并且开机自启动:其次该服务要调用HW层service的方法. 前半部分之前添加过N次,不是难点,后半部分的实现 ...

  6. Android HIDL HAL 接口定义语言详解

    1. HIDL 概述 在 Andoird 8.0 版本框架代码中,加入了 HIDL(HAL 接口定义语言),HIDL 的出现是为了将用户层和 HAL 层分割开,它指定了 HAL 和用户之间的接口,让用 ...

  7. Android HIDL学习 - HelloWord入门(整理1)

    Android HIDL学习(整理1) 概述 入手准备 实例应用 1.HIDL接口文件定义 2. 生成HAL相关文件 3. 实现HAL服务端的共享库 4. Hal server端启动注册程序 5.HI ...

  8. Android HIDL passthrough模式与binderized

    关于HIDL的设计 HIDL的设计目的是为了能够在不重新编译HALs的情况下能够替换framework.HALs将由供应商或SOC制造商构建,并放在设备的vendor下的分区中,而framework框 ...

  9. MTK Android HIDL层添加hash值

    情况描述: 在 vendor/mediatek/proprietary/hardware/interfaces/ 目录下新增加了 HIDL的接口 package: vendor.mediatek.ha ...

最新文章

  1. PyTorch 自动微分
  2. 20172304 结对编程--四则运算实验总结
  3. opencv 将图片合成为视频流(AVI格式)
  4. mysql 开发进阶篇系列 22 磁盘I/O问题(从linux操作系统上优化)
  5. 希捷服务器硬盘savvio,2.5英寸进军万转!希捷Savvio硬盘评测
  6. 微信WebView关闭后本地cookie无法清除问题
  7. jms.jar 2.0_JMS 2.0中JMSContext的类型
  8. 转移到ios下载安卓_安卓和IOS角色互转 和平精英跨系统角色转移服务将上线
  9. 再等等!华为折叠屏手机Mate X预计在7月底至8月初开售
  10. UI设计字体素材|设计中字母间距指南
  11. 51单片机的前世今世
  12. Matlab 根据状态方程,绘制相轨迹
  13. 二等分计算机打印机尺寸,[有赞零售] 【教程贴】打印机如何设置一等分、二等分、三等分打印尺寸...
  14. 求边长为一的正方体中,面对角线组成的正四面体体积.
  15. 计算机系统结构名词解释及简答题参考
  16. 【英语竞赛】听力速记
  17. 【阿里云高校计划】在线Linux学习
  18. 猿创征文|聊一聊我在字节跳动做项目质量改进的经验
  19. 手写实现一个本地缓存
  20. Android开发之漫漫长途 XII——Fragment 详解

热门文章

  1. 3dmax中的UVW 贴图修改器详解(史上最全)
  2. QML state详解
  3. (二十五)各向同性张量(函数)
  4. Zeepelin系列(一)Zeepelin安装和配置以及对Hive的基本使用
  5. Doevents函数详解
  6. Lisp 是怎么成为上帝的编程语言的
  7. FTP到主机上删除文件
  8. adf被打开_ADF格式文件 如何打开ADF文件 ADF是什么格式的文件 用什么打开 - The X Online Tools...
  9. 我的2013拾遗总结~ 多么痛的领悟!
  10. 基于Ocean Connect云平台的照明控制系统设计