vehicle_hw_device 结构体参考文档

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 行。

字段文档

struct hw_device_t common

定义位于文件 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 行

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

定义位于文件 vehicle.h 1646 行

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

枚举所有可用属性。列表会以“list”的形式返回。

参数
num_properties 重新调整的数组中包含的属性数量。
返回值
此车辆支持的属性配置数组。请注意,返回的数据是常量,调用方无法对其进行修改。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 调用中分配给数据的内存。对字节或字符串的 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 的调用方拥有数据字段。对于 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 行

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

取消对媒体资源的订阅。

定义位于文件 vehicle.h 1727 行。


此结构体的文档是根据以下文件生成的: