屬性配置

每個受支援的屬性均由透過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僅適用於右後座。

要了解更多信息,請參閱暖通空調