属性配置

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

字段 说明
prop

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

  • (0x00000000) 16 位:范围为 0x0100 - 0xffff 的唯一 ID。
  • (0x00000000) 8 位:属性类型,用于定义属性的类型。
  • (0x00000000) 4 位:区域类型
  • (0x00000000) 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 中定义为枚举。下表列出了支持的属性类型。

属性类型 说明
STRING 0x00100000 字符串属性,使用车辆属性值中的 stringValue 字段。
BOOLEAN 0x00200000 布尔值属性,使用车辆属性值int32Values 字段中的第一个元素。0 表示 false非 0 表示 true
INT32 0x00400000 整数属性,使用车辆属性值int32Values 字段中的第一个元素。
INT32_VEC 0x00410000 Integer[] 属性,使用车辆属性值int32Values 字段中的元素。
INT64 0x00500000 Long 属性,使用车辆属性值int64Values 字段中的第一个元素。
INT64_VEC 0x00510000 Long[] 属性,使用车辆属性值int64Values 字段中的元素。
FLOAT 0x00600000 Float 属性,使用车辆属性值floatValues 字段中的第一个元素。
FLOAT_VEC 0x00610000 Float[] 属性,使用车辆属性值floatValues 字段中的元素。
BYTES 0x00700000 byte[] 属性,使用车辆属性值byteValues 字段中的元素。
MIXED 0x00e00000 混合类型属性。标量或向量类型的任意组合。确切的格式必须在属性配置中的 config 数组中提供。

对于供应商 MIXED 类型属性,configArray 需要按以下结构格式化

  • configArray[0],1 表示属性具有 String 值
  • configArray[1],1 表示属性具有 Boolean 值
  • 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} 表示属性具有 String 值、Boolean 值、Integer 值以及包含三个整数的数组。

区域 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 中定义为枚举。下面列出了支持的区域类型。

区域类型 说明
GLOBAL 0x01000000 此属性是全局属性,没有多个区域。
WINDOW 0x03000000 基于窗口的区域,使用 VehicleAreaWindow 枚举。
MIRROR 0x04000000 基于后视镜的区域,使用 VehicleAreaMirror 枚举。
SEAT 0x05000000 基于座椅的区域,使用 VehicleAreaSeat 枚举。
DOOR 0x06000000 基于车门的区域,使用 VehicleAreaDoor 枚举。
WHEEL 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 仅适用于后排右侧座椅。

要了解详情,请参阅HVAC