属性配置

每个受支持的属性均由通过VehiclePropConfig结构定义的属性配置指定,并具有以下字段。

场地描述
prop

属性 ID。这必须是支持的系统属性中定义的系统属性之一或供应商属性。属性 ID 使用以下字段的位或构造(从右到左):

  • (0x0000 0000 ) 16 位:范围 0x0100 - 0xffff 的唯一 ID。
  • (0x00 00 0000) 8 位:属性类型,定义属性的类型。
  • (0x0 0 000000) 4 位:区域类型
  • (0x 0 0000000) 4 位: VehiclePropertyGroup > 这是SYSTEM (0x10000000) 或VENDOR (0x20000000)。有关可以自定义的属性,请参阅供应商属性

例如,
INFO_VIN (0x11100100) = UniqueID (0x00000100) | VehiclePropertyType.STRING (0x00100000) | VehicleArea.GLOBAL (0x01000000) | VehiclePropertyGroup.SYSTEM (0x10000000)

access属性的访问模式。必须是READWRITEREAD_WRITE之一。这必须等于支持的系统属性中定义的访问模式。
changeMode
  • 更改属性的模式。必须是STATICON_CHANGECONTINUOUS之一。 STATIC表示属性值在系统启动后永远不会改变。 ON_CHANGE表示 VHAL 必须在值更改时报告。 CONTINUOUS表示属性值连续变化,VHAL 必须根据订阅采样率进行报告。
  • 更改模式必须等于支持的系统属性中定义的更改模式。
configArray包含属性特定配置的可选数组。可以为空。
configString包含属性特定配置的可选字符串。可以为空。
minSampleRatemaxSampleRate

连续属性支持的最小和最大采样率。如果属性不连续则不使用。

物业类型

VehiclePropertyType.aidl中定义为枚举。下表列出了支持的属性类型。

财产种类价值描述
细绳0x00100000字符串属性,使用车辆属性值中的stringValue字段。
布尔值0x00200000布尔属性,使用Vehicle 属性 valueint32Values字段中的第一个元素。 0表示falseNone 0表示true
INT32 0x00400000 Integer 属性,使用Vehicle 属性 valueint32Values字段中的第一个元素。
INT32_VEC 0x00410000 Integer[] 属性,使用Vehicle 属性 valueint32Values字段中的元素。
INT64 0x00500000 Long 属性,使用Vehicle 属性 valueint64Values字段中的第一个元素。
INT64_VEC 0x00510000 Long[]属性,使用Vehicle 属性 valueint64Values字段中的元素。
漂浮0x00600000 Float 属性,使用Vehicle 属性 valuefloatValues字段中的第一个元素。
FLOAT_VEC 0x00610000 Float[] 属性,使用Vehicle 属性 valuefloatValues字段中的元素。
字节数0x00700000 byte[] 属性,使用Vehicle 属性 valuebyteValues字段中的元素。
混合0x00e00000混合类型属性。标量或向量类型的任意组合。必须在属性配置的配置数组中提供确切的格式。

对于供应商 MIXED 类型属性,configArray 需要采用以下结构进行格式化:

  • configArray[0], 1 表示该属性具有字符串值
  • configArray[1], 1 表示该属性具有布尔值
  • configArray[2], 1 表示该属性具有 Integer 值
  • configArray[3],数字表示属性中Integer[]的大小
  • configArray[4], 1 表示该属性具有 Long 值
  • configArray[5],数字表示属性中Long[]的大小
  • configArray[6], 1 表示该属性具有 Float 值
  • configArray[7],数字表示属性中Float[]的大小
  • configArray[8],数字表示属性中byte[]的大小。

例如, configArray = {1, 1, 1, 3, 0, 0, 0, 0, 0}表示该属性有一个字符串值、一个布尔值、一个整数值和一个包含三个整数的数组。

区域ID配置

每个属性配置还可以包含区域ID配置的列表。此列表对于全局属性是可选的,对于分区属性(具有多个支持区域的属性)是必需的。每个区域 ID 配置都有以下字段。

场地描述
areaId该区域的 ID。请参阅区域 ID
minInt32ValuemaxInt32Value
  • INT32 类型属性的可选最小值和最大值。忽略所有其他类型。如果两者均为 0,则忽略。
  • 对于全局属性,如果需要定义最小值和最大值,则必须使用区域 ID 为 0 的区域配置。
minInt64ValuemaxInt64Value
  • INT64 类型属性的可选最小值和最大值。忽略所有其他类型。如果两者均为 0,则忽略。
  • 对于全局属性,如果需要定义最小值和最大值,则必须使用区域 ID 为 0 的区域配置。
minFloatValuemaxFloatValue
  • Float 类型属性的可选最小值和最大值。忽略所有其他类型。如果两者均为 0.0,则忽略。
  • 对于全局属性,如果需要定义最小值和最大值,则必须使用区域 ID 为 0 的区域配置。
Android 14 中的新增功能
supportedEnumValues
  • 如果属性定义为枚举类型属性,则支持值的可选列表。如果未指定(空)或在 Android 14 之前,则假定支持所有枚举值。
  • 对于全局属性,如果需要定义支持的枚举值,则必须使用区域 ID 为 0 的区域配置。

区域类型

VehicleArea.aidl中定义为枚举。下面列出了支持的区域类型。

区域类型价值描述
全球的0x01000000该属性是全局属性,不具有多个区域。
窗户0x03000000基于窗口的区域,使用VehicleAreaWindow枚举。
镜子0x04000000基于镜子的区域,使用VehicleAreaMirror枚举。
座位0x05000000基于座位的区域,使用VehicleAreaSeat枚举。
0x06000000基于门的区域,使用VehicleAreaDoor枚举。
车轮0x07000000基于车轮的区域,使用VehicleAreaWheel枚举。

每个分区属性必须使用预定义的区域类型。每个区域类型都有一组在该区域类型的枚举中定义的位标志。例如,SEAT 区域定义了VehicleAreaSeat枚举:

  • ROW_1_LEFT = 0x0001
  • ROW_1_CENTER = 0x0002
  • ROW_1_RIGHT = 0x0004
  • ROW_2_LEFT = 0x0010
  • ROW_2_CENTER = 0x0020
  • ROW_2_RIGHT = 0x0040
  • ROW_3_LEFT = 0x0100
  • ...

区域 ID

分区属性通过区域 ID 进行寻址。每个分区属性可以支持一个或多个区域 ID。区域 ID 由其各自枚举中的一个或多个标志组成。例如,使用VehicleAreaSeat的属性可能会使用以下区域 ID:

物品描述
ROW_1_LEFT | ROW_1_RIGHT区域 ID 适用于两个前排座椅。
ROW_2_LEFT仅适用于左后座椅。
ROW_2_RIGHT仅适用于右后座椅。

要了解更多信息,请参阅暖通空调