Vehicle_hw_device结构参考

Vehicle_hw_device结构参考

#include < vehicle.h >

数据字段

结构体hw_device_t常见的
整数(* init )(结构vehicle_hw_device *设备, vehicle_event_callback_fn event_fn, vehicle_error_callback_fn err_fn)
整数(*释放)(结构vehicle_hw_device *设备)
Vehicle_prop_config_t const *(* list_properties )(结构vehicle_hw_device *设备,int *num_properties)
整数(*获取)(结构vehicle_hw_device *设备, vehicle_prop_value_t *数据)
空白(* release_memory_from_get )(结构vehicle_hw_device *设备, vehicle_prop_value_t *数据)
整数(*设置)(结构vehicle_hw_device *设备,常量vehicle_prop_value_t *数据)
整数(*订阅)(struct Vehicle_hw_device *device, int32_t prop, float Sample_rate, int32_t zone)
整数(*取消订阅)( structvehicle_hw_device *device, int32_t prop)
整数(*转储)(结构vehicle_hw_device *设备,int fd)

详细说明

定义位于文件Vehicle.h的第1639行。

现场文档

结构体hw_device_t公共

定义位于文件Vehicle.h的第1640行。

int(* dump)(结构vehicle_hw_device *device, int fd)

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

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

性能要求:

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

文件Vehicle.h1744行的定义。

int(* get)(结构vehicle_hw_device *设备, vehicle_prop_value_t *数据)

立即获取车辆财产价值。数据应正确分配。 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)(结构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)( structvehicle_hw_device *device, int*num_properties)

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

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

定义位于文件Vehicle.h的第1663行。

int(*release)( structvehicle_hw_device *device)

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

定义位于文件Vehicle.h的第1654行。

void(*release_memory_from_get)(结构vehicle_hw_device *设备, vehicle_prop_value_t *数据)

释放先前 get 调用中分配给数据的内存。对字节或字符串的 get 调用涉及从车辆 hal 分配必要的内存。为了安全起见,车辆 hal 分配的内存应该由车辆 hal 释放,并且当不再需要来自车辆 hal 的数据时,车辆网络服务将调用它。车辆hal实现应该只释放vehicle_prop_value_t的成员,如data->str_value.data或data->bytes_value.data,而不是数据本身,因为数据本身是从车辆网络服务分配的。一旦内存被释放,相应的指针应该被设置为 NULL buvehicle hal。

定义位于文件Vehicle.h的第1693行。

int(* set)(结构vehicle_hw_device *设备,常量vehicle_prop_value_t *数据)

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

文件vehicle.h1706行的定义。

int(* 订阅)( structvehicle_hw_device *device,int32_t prop,floatsample_rate,int32_tzones)

订阅活动。根据 list_properties 的输出,如果属性是: a) 变化时:sample_rate 应设置为 0。 b) 支持频率:sample_rate 应设置为从 min_sample_rate 到 max_sample_rate。对于变化类型的属性,车辆网络服务将再次调用 get 来检查初始状态。因此,车辆 hal 实现不需要发送属性变化类型的初始状态。

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

定义位于文件Vehicle.h的第1723行。

int(* 取消订阅)( structvehicle_hw_device *device, int32_t prop)

取消对房产的订阅。

文件Vehicle.h1727行的定义。


该结构的文档是从以下文件生成的:
  • 硬件/libhardware/include/hardware/vehicle.h