資源設定

每個支援的屬性都會透過 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 字串屬性,會使用 Vehicle Property Value 中的 stringValue 欄位。
BOOLEAN 0x00200000 布林值屬性,會使用 車輛屬性值int32Values 欄位的第一個元素。0 代表 falseNone 0 代表 true
INT32 0x00400000 整數屬性,使用車輛屬性值 int32Values 欄位中的第一個元素。
INT32_VEC 0x00410000 Integer[] 屬性,會使用車輛屬性值int32Values 欄位的元素。
INT64 0x00500000 Long 屬性含有車輛屬性值 int64Values 欄位中的第一個元素。
INT64_VEC 0x00510000 Long[] 屬性會使用車輛屬性值中的 int64Values 欄位元素。
FLOAT 0x00600000 浮點屬性,會使用 車輛屬性值floatValues 欄位的第一個元素。
FLOAT_VEC 數 0x00610000 Float[] 屬性,會使用 Vehicle 屬性值中的 floatValues 欄位元素。
BYTES 0x00700000 byte[] 屬性,會使用車輛屬性值byteValues 欄位的元素。
混合 0x00e00000 混合型屬性。純量或向量類型的任意組合。請務必在屬性設定中的 config 陣列中提供確切的格式。

針對供應商 MIXED 類型屬性,configArray 必須以下列結構設定格式:

  • configArray[0],1 表示屬性具有字串值
  • configArray[1],1 表示屬性具有布林值
  • configArray[2],1 表示屬性具有整數值
  • configArray[3],這個數字代表屬性中 Integer[] 的大小
  • configArray[4],1 表示屬性具有 Long 值
  • configArray[5],這個數字表示屬性中的 Long[] 大小
  • configArray[6],1 表示屬性具有浮點值
  • 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
  • 浮點型屬性的選用最小值和最大值。系統會忽略所有其他類型。如果兩者皆為 0.0,則會遭到忽略。
  • 如為全域屬性定義最小值和最大值,則必須使用區域 ID 0 的一項區域設定。
(Android 14 的新功能)
supportedEnumValues
  • 如果屬性定義為列舉型屬性,則為選用的支援值清單。如未指定 (空白) 或 Android 14 以下版本,系統會假設所有列舉值皆支援。
  • 針對全域資源,如果需要定義支援的列舉值,則必須使用一個區域 ID 為 0 的區域設定。

區域類型

VehicleArea.aidl 中定義為列舉。以下列出支援的區域類型。

區域類型 說明
全球 0x01000000 這個房源是全球性房源,沒有多個區域。
WINDOW 0x03000000 以視窗為基礎的區域,使用 VehicleAreaWindow 列舉。
《Mirror》 0x04000000 以鏡像為基礎的區域,使用 VehicleAreaMirror 列舉。
喜悅 0x05000000 以座位為準的區域,使用 VehicleAreaSeat 列舉。
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。Area ID (區域 ID) 是由個別列舉中的一或多個標記組成。舉例來說,使用 VehicleAreaSeat 的資源可能會使用下列區域 ID:

產品 說明
ROW_1_LEFT | ROW_1_RIGHT 區域 ID 適用於兩個前座。
ROW_2_LEFT 僅適用於後座。
ROW_2_RIGHT 僅適用於後座。

詳情請參閱「空調」一文。