使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

vehicle_hw_device 结构参考

vehicle_hw_device 结构参考

#include < vehicle.h >

数据字段

结构hw_device_t常见的
整数(* init )(struct vehicle_hw_device *device, vehicle_event_callback_fn event_fn, vehicle_error_callback_fn err_fn)
整数(*释放)(struct vehicle_hw_device *device)
vehicle_prop_config_t常量 *(* list_properties )(struct vehicle_hw_device *device, int *num_properties)
整数(* get )(struct vehicle_hw_device *device, vehicle_prop_value_t *data)
空白(* release_memory_from_get )(struct vehicle_hw_device *device, vehicle_prop_value_t *data)
整数(* set )(struct vehicle_hw_device *device, const vehicle_prop_value_t *data)
整数(*订阅)(struct vehicle_hw_device *device, int32_t prop, float sample_rate, int32_t zone)
整数(*取消订阅)(struct vehicle_hw_device *device, int32_t prop)
整数(*转储)(struct vehicle_hw_device *device, int fd)

详细说明

在文件vehicle.h的第1639行定义。

现场文件

结构hw_device_t通用

在文件vehicle.h的第1640行定义。

int(* dump)(struct vehicle_hw_device *device, int fd)

打印出车辆 hal 的调试状态。这将由车辆网络服务调用,并将包含在服务的转储中。

传入的文件描述符可用于使用 dprintf() 或 write() 编写调试文本。文本应仅采用 ASCII 编码。

性能要求:

这必须是非阻塞调用。 HAL 应在 1 毫秒内从该调用返回,必须在 10 毫秒内从该调用返回。此调用必须避免死锁,因为它可以在任何操作点调用。任何使用的同步原语(例如互斥锁或信号量)都应在超时后获取。

在文件vehicle.h的第1744行定义。

int(* get)(struct vehicle_hw_device *device, vehicle_prop_value_t *data)

立即获取车辆属性值。应正确分配数据。 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行定义。

int(* init)(struct vehicle_hw_device *device, vehicle_event_callback_fn event_fn, vehicle_error_callback_fn err_fn)

在设备上调用 open 后,用户应该为事件和错误函数注册回调。

在文件vehicle.h的第1646行定义。

vehicle_prop_config_t const*(* list_properties)(struct vehicle_hw_device *device, int *num_properties)

枚举所有可用的属性。该列表在“列表”中返回。

参数
num_properties重新调整的数组中包含的属性数。
退货
这辆车支持的属性配置数组。请注意,返回的数据是 const 并且调用者不能修改它。 HAL 实现应保留此内存,直到 HAL 被释放,以避免再次复制。

在文件vehicle.h的第1663行定义。

int(* release)(struct vehicle_hw_device *device)

在调用 close 之前,用户应该销毁注册的回调函数。如果在release()之前未对所有属性调用unsubscribe()调用,则release()将取消订阅属性本身。

在文件vehicle.h的第1654行定义。

void(* release_memory_from_get)(struct vehicle_hw_device *device, vehicle_prop_value_t *data)

释放分配给先前 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行定义。

int(* set)(struct vehicle_hw_device *device, const vehicle_prop_value_t *data)

设置车辆属性值。数据应该正确分配而不是NULL。 API 的调用者拥有数据字段。设置操作将忽略数据的时间戳。设置某些属性需要有可用的初始状态。根据车辆 hal,此类初始数据可能在初始化后的短时间内不可用。在这种情况下,set 调用可以像 get 调用一样返回 -EAGAIN。对于具有单独电源控制的属性,如果属性未打开电源,设置可能会失败。在这种情况下,hal 应该返回 -ESHUTDOWN 错误。

在文件vehicle.h的第1706行定义。

int(* subscribe)(struct vehicle_hw_device *device, int32_t prop, float sample_rate, int32_t zone)

订阅事件。如果属性为:a) on-change:sample_rate 应设置为 0,则取决于 list_properties 的输出。 b) 支持频率:应将 sample_rate 从 min_sample_rate 设置为 max_sample_rate。对于 on-change 类型的属性,车辆网络服务将进行另一个 get 调用以检查初始状态。因此,车辆 hal 实现不需要为 on-change 类型的属性发送初始状态。

参数
设备
支柱
采样率
区域划定财产的所有订阅区域。对于非分区属性可以忽略。 0 表示支持所有区域,而不是没有区域。

在文件vehicle.h的第1723行定义。

int(* unsubscribe)(struct vehicle_hw_device *device, int32_t prop)

取消对属性的订阅。

在文件vehicle.h的第1727行定义。


此结构的文档是从以下文件生成的: