自 2025 年 3 月 27 日起,我们建议您使用 android-latest-release
而非 aosp-main
构建 AOSP 并为其做出贡献。如需了解详情,请参阅 AOSP 的变更。
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
vehicle_hw_device 结构体参考文档
#include <
vehicle.h
>
|
struct
hw_device_t
|
常见
|
|
int(*
|
init
)(struct
vehicle_hw_device
*device,
vehicle_event_callback_fn
event_fn,
vehicle_error_callback_fn
err_fn)
|
|
int(*
|
release
)(struct
vehicle_hw_device
*device)
|
|
vehicle_prop_config_t
const *(*
|
list_properties
)(struct
vehicle_hw_device
*device, int *num_properties)
|
|
int(*
|
get
)(struct
vehicle_hw_device
*device,
vehicle_prop_value_t
*data)
|
|
void(*
|
release_memory_from_get
)(struct
vehicle_hw_device
*device,
vehicle_prop_value_t
*data)
|
|
int(*
|
set
)(struct
vehicle_hw_device
*device, const
vehicle_prop_value_t
*data)
|
|
int(*
|
subscribe
)(struct
vehicle_hw_device
*device, int32_t prop, float sample_rate, int32_t zones)
|
|
int(*
|
unsubscribe
)(struct
vehicle_hw_device
*device, int32_t prop)
|
|
int(*
|
dump
)(struct
vehicle_hw_device
*device, int fd)
|
|
定义位于文件
vehicle.h
的
1639
行。
输出车辆 HAL 的调试状态。车载网络服务将调用此方法,并将其包含在服务的转储中。
传入的文件描述符可用于使用 dprintf() 或 write() 编写调试文本。文本应仅采用 ASCII 编码。
性能要求:
此调用必须是非阻塞调用。HAL 应在 1 毫秒内从此调用返回,必须在 10 毫秒内从此调用返回。此调用必须避免死锁,因为它可能会在操作的任何时间点被调用。应使用超时获取使用的任何同步基元(例如互斥锁或信号量)。
定义位于文件
vehicle.h
的
1744 行
。
立即获取车辆属性值。应正确分配数据。API 的调用方拥有数据字段。调用方将为分区属性设置 data->prop、data->value_type,以及可选的区域值。但是,HAL 实现在返回时需要正确填充所有条目。对于指针类型,HAL 实现应分配必要的内存,调用方负责调用 release_memory_from_get,以允许 HAL 释放分配的内存。对于 VEHICLE_PROP_CHANGE_MODE_STATIC 类型的属性,get 应始终返回相同的值。对于 VEHICLE_PROP_CHANGE_MODE_ON_CHANGE 类型的属性,它应返回最新值。如果还没有可用的数据(这在初始阶段可能会发生),此调用应立即返回 -EAGAIN 错误代码。
定义位于文件
vehicle.h
的
1681 行
。
枚举所有可用属性。列表会以“list”的形式返回。
-
参数
-
num_properties
|
重新调整的数组中包含的属性数量。
|
-
返回值
-
此车辆支持的属性配置数组。请注意,返回的数据是常量,调用方无法对其进行修改。HAL 实现应保留此内存,直到 HAL 被释放为止,以免再次复制此内存。
定义位于文件
vehicle.h
的
1663
行。
释放之前 get 调用中分配给数据的内存。对字节或字符串的 get 调用涉及从车辆 HAL 分配必要的内存。为安全起见,由车载 HAL 分配的内存应由车载 HAL 释放,当不再需要来自车载 HAL 的数据时,车载网络服务将调用此方法。车载 HAL 实现应仅释放 vehicle_prop_value_t 的成员(例如 data->str_value.data 或 data->bytes_value.data),而非数据本身,因为数据本身是从车载网络服务分配的。释放内存后,相应指针应设置为 NULL bu vehicle hal。
定义位于文件
vehicle.h
的
1693 行
。
设置车辆属性值。应正确分配数据,且不得为 NULL。API 的调用方拥有数据字段。对于 set 操作,系统会忽略数据的时间戳。设置某些属性需要有初始状态。在初始化后,此类初始数据在短时间内可能不可用,具体取决于车辆 HAL。在这种情况下,set 调用可以像 get 调用一样返回 -EAGAIN。对于具有独立电源控制的媒体资源,如果媒体资源未开机,设置可能会失败。在这种情况下,hal 应返回 -ESHUTDOWN 错误。
定义位于文件
vehicle.h
的
1706
行。
int(* subscribe)(struct
vehicle_hw_device
*device, int32_t prop, float sample_rate, int32_t zones)
|
订阅事件。根据 list_properties 的输出,如果属性为:a) onChange:应将 sample_rate 设置为 0。b) 支持频率:应将 sample_rate 设置为介于 min_sample_rate 和 max_sample_rate 之间。对于 on-change 类型的属性,车载网络服务将发出另一个 get 调用来检查初始状态。因此,车辆 HAL 实现无需为 on-change 类型的属性发送初始状态。
-
参数
-
设备
|
|
prop
|
|
sample_rate
|
|
区域
|
针对分区媒体资源的所有已订阅区域。对于非分区媒体资源,可以忽略。0 表示支持所有区域,而不是不支持任何区域。
|
定义位于文件
vehicle.h
的
1723 行
。
此结构体的文档是根据以下文件生成的:
-
hardware/libhardware/include/hardware/
vehicle.h
本页面上的内容和代码示例受内容许可部分所述许可的限制。Java 和 OpenJDK 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-03-26。
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["没有我需要的信息","missingTheInformationINeed","thumb-down"],["太复杂/步骤太多","tooComplicatedTooManySteps","thumb-down"],["内容需要更新","outOfDate","thumb-down"],["翻译问题","translationIssue","thumb-down"],["示例/代码问题","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2025-03-26。"],[],[]]