问题标签 [hidl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
146 浏览

java - 我是否需要将以下情况视为关键?

我有 Android java 服务,它将HAL使用HIDL调用与服务交互。

我有以下情况,我不确定将其视为关键。

的定义SendFunction如下。

SendFunction正在从两个不同的线程调用。使用server的实例在哪里。CPP ServerHIDL

我的问题。

我是否需要将上述call视为关键并同步它?asserver对象将从两个不同的线程访问。

0 投票
1 回答
600 浏览

android - Android HIDL 中方法 registerAsService() 的实现在哪里

registerAsService()Android HIDL中方法的实现在哪里。

要注册一个服务,我们应该调用这个方法。但是这个方法的实现在哪里呢?

0 投票
2 回答
166 浏览

android - 什么是 Android 中的“HAL 远程处理”?

hidl-cpp 的Android HIDL 描述中,提到了称为“HAL 远程处理”的内容。它是现有 Android 的一部分吗?叫法不一样?

0 投票
2 回答
651 浏览

android - 蓝牙模块的 HIDL 是如何实现的?

我正在浏览AOSP蓝牙代码以了解更多关于HIDL.

据我了解,HIDL提供 和 之间的System services接口HAL layer

但是根据官方的android doc here ,这似乎是蓝牙固件实现HIDL之间的接口。bluetooth stack(/system/bt)

在此处输入图像描述

HIDL蓝牙进程服务和蓝牙堆栈之间不应该存在吗?我在这里错过了什么吗?

0 投票
2 回答
2187 浏览

android - 定义和实现 HIDL 接口

出于测试目的,我想创建一个 HIDL 接口 + 实现并将组合作为系统服务运行。为此,我定义了IGuotie.hal接口:

以下文件用于实现接口

Guotie.h

国铁.cpp

服务.cpp

android.hardware.guotie@2.0-service.rc

安卓.bp

构建导致以下错误消息

一些文章建议添加(在我的情况下)android.hardware.guotie@2.0.sobuild/make/target/product/vndk/28.txt. 但是,vndk 文件夹不存在。相反,我将它添加到build/make/target/product/gsi/29.txtcurrent.txt但构建仍然失败(我按字母顺序添加它)。有什么建议么?

0 投票
1 回答
224 浏览

android-source - 在 fork 中使用 HwBinder

我正在实现一个 HAL 组件,我正在为其创建一个测试。该测试实际上是关于在不同进程中创建 HAL 回调的模拟,并将其自身注册到 HAL。换句话说,我是在模拟 HAL 的客户端,然后模拟客户端崩溃导致事务失败,以测试 HAL 处理错误的能力。问题是,尝试在 fork 中使用 Binder IPC 会导致段错误。阅读这个问题并从文档中我了解到 HwBinder 线程通过链接到 libbiner 自动启动。

鉴于fork()不复制父进程的正在运行的线程,这意味着分叉的进程将找不到助手 HwBinder 线程,或者它确实假设它存在并尝试使用它?

这会产生一系列错误,最终会产生 SEGV_MAPERR。

我的问题是,无论如何都可以在我的分叉孩子中重新启动 HwBinder 线程而不必使用exec

这是我的代码:

这会导致此错误:

0 投票
1 回答
298 浏览

android - HIDL 接口继承

我正在尝试扩展 HAL 功能的实现。似乎一旦发布了 HAL 接口,我们就无法在该版本中进行任何更改。所以我尝试通过参考这里https://source.android.com/devices/architecture/hidl-java#extensions来进行接口继承。

IA.HAL 文件

ClientService.Java 文件

对于扩展,我创建了一个新的 HAL 文件,其中涉及接口继承,如下所示。

IB.HAL 文件

ClientService.Java 文件

知道我做错了什么。提前致谢。

0 投票
0 回答
90 浏览

hal - HIDL:VINTF 有什么用?

我正在尝试构建 HIDL 结构,但我坚持使用 VINTF 的东西。

https://source.android.com/devices/architecture/vintf/objects

是对 VINTF 的引用,我无法理解 vintf_fragments 的真正用途。

请问谁能帮我理解 vintf_fragments 的作用,以及使用它有什么好处?

0 投票
0 回答
246 浏览

android - 在 Android 上添加新的光传感器和新的加速度计

我在一个项目中,将开发一张运行 Android 10 的卡。

它将有一个环境光/接近传感器 (SFH207779) 和一个加速度计传感器 (LIS2DH12TR),两者都通过 I2C 协议连接。

我有为使用的 SOM(模块上系统)定制的 Android 10 源代码。

我希望传感器可以由用 Java 编写的用户应用程序访问,通常由 SensorManager 和 Sensor 类使用。

Android IIO 传感器上,您可以很好地回答以下步骤:

  1. 查找/编写具有合适设备模型(输入、iio、hwmon 等)的驱动程序
  2. 使板子识别设备(通过向设备树或板子配置文件中添加信息)
  3. 查找/编写合适的 Sensor-HAL 或将传感器添加到现有 HAL。

但它没有指定,甚至没有示例,必须在 Android 源代码中创建/更改的文件。

0 投票
0 回答
130 浏览

android - Android原生框架中使用linkToDeath的最佳实践

我有一个可以有多个客户端的 hidl,所以我想保留一个 DeathHandler 以防任何客户端死亡,这样我就可以进行清理了。

};

关于我的 hidl:

  1. 它可以有多个客户端。
  2. 1 个客户端内可以有多个会话。

它有 1 个打开会话的 API。

这里的问题是我最终为每个打开的调用注册了 linkToDeath,所以最终在 1 个 pid 上注册了多个死亡处理程序,所以当客户端被杀死时,我会收到多个通知(100+)。为了处理这个问题,我需要同步我的 serviceDied 方法。

现在的问题是:

  1. 使用 linkToDeath 的最佳实践是什么?
  2. 我是否应该只为客户端注册一次这个 linkToDeath,因为它只特定于 pid。
  3. 如何检查由多次注册和导致多次回调引起的 binder 框架的开销,如果我想在将其限制为每个 pid 一次后检查性能改进。