特殊房地產

供應商資源

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

  • 一律先嘗試使用系統屬性,在不得已的情況下使用供應商資源 如果沒有系統資源符合您的需求,
  • 為避免生態系統零散,不得使用供應商屬性來複製車輛 SDK 中已存在的資源 VehiclePropertyIds (車輛屬性 ID)。 詳情請參閱章節 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 屬性。這張統計資料 屬性是唯讀狀態,且其中的設定陣列會指定供應商資源的權限。 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_TEMPERATURE_SET 為每個區域 ID 設定溫度。
HVAC_POWER_ON 每個區域 ID 的空調系統電源狀態。

如果是仰賴空調系統電源狀態的空調設備,必須 列在 HVAC_POWER_ON 設定陣列中。如要查看空調屬性的完整清單, 在 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)。溫度控制單位有兩個,分別 駕駛側和副駕駛側一組有效的 AreaID 對應組 HVAC_TEMPERATURE_SET 會是兩個元素陣列:

  • 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 到 AreaIDs 是三個元素陣列:

  • 剩餘 ROW_1_
  • 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 前 20,000 個工作HVAC_AUTO_ON 的有效 AreaID 組合應為單一 元素陣列:

  • ROW_1_LEFT |ROW_1_RIGHT

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

  • 剩餘 ROW_1_
  • 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] 車輛外輪在行駛完整方向時繪製的圓形直徑 以及全鎖的方向盤

歐盟一般安全法規遵循

車輛是否遵守歐盟《一般安全規則》(GSR) 規定 透過 Android 存取時,GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT 必須 。其中一個用途範例為 GSR-ISA (智慧型速限輔助功能),如歐盟地區所定義的 GSR-ISA 2019/2144 法規。此屬性是從 Android 13 的 AIDL VHAL 新增,然而 自 Android 12 推出以來,車資皆支援。此屬性定義為唯讀 靜態全域整數屬性,可能的值是由 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