特殊資源

供應商資源

為支援合作夥伴的特定需求,VHAL 允許供應商屬性只能透過系統 API 存取。使用供應商資源時,請遵循下列規範:

  • 請一律優先使用系統屬性,如果沒有任何系統屬性可滿足您的需求,則應使用供應商屬性做為最後的手段。
  • 為避免生態系統分散,供應商屬性不得用於複製 SDK VehiclePropertyIds 中已存在的車輛屬性。詳情請參閱章節 2.5 和 CDD 中的汽車相關規定
  • 使用下列欄位產生資源 ID:
    • VehiclePropertyGroup:VENDOR VENDOR 群組僅適用於供應商資源。
    • VehicleArea選取適當的區域類型。
    • VehiclePropertyType請選取合適的資料類型。BYTES 類型可傳遞原始資料,在大多數情況下都足以應付。經常透過供應商屬性傳送大量資料,可能會導致整個車輛網路存取速度變慢。新增大型酬載時請小心。
    • Property ID 為供應商屬性選擇不重複的雙位元組 ID。例如 0x1234。
  • 填入 VehiclePropConfig.configString,並簡短說明供應商資源。這可讓有效性檢查工具能標記意外複製現有的項目 車輛屬性例如「我的 XYZ 自訂屬性」。
  • 存取管道 CarPropertyManager (適用於 Java 元件) 或透過 libvhalclient (適用於原生)。正確做法 不得修改其他 Car API,以免日後發生相容性問題。

供應商資源權限

所有已定義的供應商資源預設權限為 android.car.Car.PERMISSION_VENDOR_EXTENSION。以更精細的方式授予相關權限 控制項,支援 SUPPORT_CUSTOMIZE_VENDOR_PERMISSION 屬性。這個 STATIC 屬性為唯讀,其設定陣列會指定供應商屬性的權限。configArray 設定如下 (i 是從 0 開始的整數):

  • configArray[3 * i] propId,供應商資源的資源 ID。
  • configArray[3 * i + 1] VehicleVendorPermission.aidl 中的列舉,用於表示讀取屬性值的權限。
  • configArray[3 * i + 2] VehicleVendorPermission.aidl 中的列舉,用於表示寫入屬性值的權限。

舉例來說,下列設定陣列會設定兩個供應商屬性: vendor_prop_1vendor_prop_2 都具備下列權限:

  • vendor_prop_1 要求 android.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_SEAT 閱讀、 android.car.hardware.property.VehicleVendorPermission.PERMISSION_SET_CAR_VENDOR_CATEGORY_SEAT 以便寫入。
  • vendor_prop-2 需要 android.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_INFO 才能讀取,且無法供 Android 應用程式寫入。
configArray = {
  PERMISSION_SET_VENDOR_CATEGORY_SEAT
    vendor_prop_2, PERMISSION_GET_VENDOR_CATEGORY_INFO, PERMISSION_NOT_ACCESSIBLE
}

不在這個陣列中的供應商資源會取得預設的供應商權限。時間 已選取 PERMISSION_NOT_ACCESSIBLE,Android 應用程式將無法存取資源。 在這個範例中,Android 應用程式無法寫入 vendor_prop_2 的值。只有原生 VHAL 用戶端可以寫入這項屬性。

先進駕駛輔助系統 (ADAS)

請參閱「ADAS 車輛屬性」。

SEAT 和 STEERING

請參閱座椅和方向盤屬性

空調

您可以使用 VHAL 設定 HVAC 相關的屬性,藉此控管 HVAC。大多數的 HVAC 屬性都與車輛的特定區域相關,但其中有幾個是全域屬性。定義的屬性範例包括:

資源 目的
HVAC_TEMPERATURE_SET 依區域 ID 設定溫度。
HVAC_POWER_ON 每個區域 ID 的空調系統電源狀態。

如果是仰賴空調系統電源狀態的空調設備,必須 列在 HVAC_POWER_ON 設定陣列中。如要查看完整的 HVAC 屬性清單,請在 VehicleProperty.aidl 中搜尋 HVAC_*,請參閱「支援的系統屬性」。屬性。

將非全球 VehicleArea 類型 HVAC 屬性對應至 AreaID 的規則: 受資源影響的特定 VehicleArea 類型的每個「區域」,都必須是 加入該房源的區域 ID溫度控制器會指派給「最具影響力」的座位,但每個受影響的座位都必須精確列入一次。將中央後座指派給左側或右側的 AreaID 可能看起來很隨意,但在每個 AreaID 中加入所有受影響的座位,可確保車內所有座位都會顯示,且有合理的方式可影響每個座位。

示例 1

車輛有兩個前座 (ROW_1_LEFT、ROW_1_RIGHT) 和三個後座 (ROW_2_LEFT、ROW_2_CENTER、ROW_2_RIGHT)。有兩個溫度控制單元,分別位於駕駛側和乘客側。HVAC_TEMPERATURE_SET 的有效 AreaID 對應組合是兩個元素的陣列:

  • ROW_1_LEFT |ROW_2_左
  • ROW_1_RIGHT |ROW_2_CENTER |ROW_2_RIGHT

同樣硬體設定的其他對應項目如下:

  • ROW_1_LEFT |ROW_2_CENTER |ROW_2_左
  • ROW_1_RIGHT | ROW_2_RIGHT

示例 2

一輛車的前排有兩個座位 (ROW_1_LEFT、ROW_1_RIGHT) 第二列 (ROW_2_LEFT、ROW_2_CENTER、ROW_2_RIGHT) 和第三列 (ROW_3_LEFT、ROW_3_CENTER、ROW_3_RIGHT)。車上有三個溫度控制單元,分別位於駕駛座側、副駕駛座側和後座。將 HVAC_TEMPERATURE_SET 對應至 AreaID 的合理方式是使用三個元素陣列:

  • ROW_1_LEFT
  • ROW_1_RIGHT
  • ROW_2_LEFT | ROW_2_CENTER | ROW_2_RIGHT | ROW_3_LEFT | ROW_3_CENTER | ROW_3_RIGHT

示例 3

一輛車有兩個前座 (ROW_1_LEFT、ROW_1_RIGHT) 和三個後座 (ROW_2_LEFT、ROW_2_CENTER、ROW_2_RIGHT)。假設車輛只支援 HVAC_AUTO_ON 的兩個前座。HVAC_AUTO_ON 的有效 AreaID 對應組合會是單一元素陣列:

  • ROW_1_LEFT | ROW_1_RIGHT

如果 HVAC_AUTO_ON 有駕駛側和乘客兩個不同的控制單位 替代對應會是兩個元素陣列:

  • ROW_1_LEFT
  • ROW_1_RIGHT

INFO_EXTERIOR_DIMENSIONS

車輛的外部尺寸以毫米為單位,如圖 1 所示。

圖 1. 車輛外部尺寸 (正面)。
圖 2. 車輛外觀尺寸,側面。

請使用下表說明的屬性定義車輛外觀 維度。

車輛屬性 VHAL 欄位 說明
身高 int32Values[0] 地面與車輛上最高點之間的垂直距離。這項假設是指正常充氣的原廠車輪。
長度 int32Values[1] 車輛正面和背面最外點之間的水平距離。
寬度 (不含鏡頭) int32Values[2] 車輛兩側兩個最外點之間的水平距離 (不包括在內) 兩側的鏡子
寬度,包括鏡子 int32Values[3] 車輛兩側兩個最外點之間的水平距離, 包括側邊鏡子
輪距 int32Values[4] 車輛前輪中心與後輪之間的距離。
音軌寬度 (前方) int32Values[5] 從一輪胎的中心線到 就讀輪胎的中心線。
後方軌道寬度 int32Values[6] 後輪之間的距離,從一條輪胎胎紋的中心線到另一條輪胎胎紋的中心線測量。
路緣至路緣的直徑 int32Values[7] 車輛外輪在行駛完整方向時繪製的圓形直徑 以及全鎖的方向盤

歐盟一般安全法規遵循

如果車輛必須透過 Android 遵守歐盟《通用安全法規》(GSR) 規定,就必須支援 GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT 屬性。其中一個用途範例為 GSR-ISA (智慧型速限輔助功能),如歐盟地區所定義的 GSR-ISA 2019/2144 法規。這項屬性是在 Android 13 的 AIDL VHAL 中新增,但自 Android 12 發布以來,Car Service 就已支援這項屬性。此屬性定義為唯讀 靜態全域整數屬性,可能的值是由 GsrComplianceRequirementType 列舉:

名稱 說明
GSR_COMPLIANCE_NOT_REQUIRED 0 不需要遵循 GSR
GSR_COMPLIANCE_REQUIRED_V1 1 必須遵守 GSR 法規遵循要求,且要求解決方案版本為 1。

如要在 HIDL VHAL (Android 12 中) 支援這個屬性,供應商必須以硬式編碼的方式寫入資源 ID。 例如,下列程式碼片段說明參照 HIDL 如何支援此機制 鹽 DefaultConfig.h:

{
  .config =
      {
          // GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT
          .prop = 0x11400F47,
          .access = VehiclePropertyAccess::READ,
          .changeMode = VehiclePropertyChangeMode::STATIC,
      },
  // GsrComplianceRequirementType::GSR_COMPLIANCE_REQUIRED_V1
  .initialValue = {.int32Values = {1}},
}

如要在 AIDL VHAL (Android 13 版本) 支援這個屬性,供應商可以使用 VehicleProperty.h 以及 GsrComplianceRequirementType.h 的列舉。適用對象 例如,在參考 AIDL VHAL 時 DefaultProperties.json:

{
  "property": "VehicleProperty::GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT",
  "defaultValue": {
    "int32Values": [
      "GsrComplianceRequirementType::GSR_COMPLIANCE_REQUIRED_V1"
    ]
  }
}

如要在 Android 應用程式中讀取這項屬性,請使用 CarPropertyManager.getIntProperty