特殊性能

供應商屬性

為了支援合作夥伴特定的需求,VHAL 允許僅透過系統 API 存取供應商屬性。使用供應商屬性時請遵循下列準則:

  • 始終先嘗試使用系統屬性,當沒有任何系統屬性滿足您的要求時,應將供應商屬性作為最後的手段。
  • 為了防止生態系統碎片化,供應商屬性不得用於複製 SDK VehiclePropertyIds中已存在的車輛屬性。要了解更多信息,請參閱 CDD 中的第 2.5 節“汽車要求”
  • 使用下列欄位產生屬性 ID:
    • VehiclePropertyGroup:VENDOR VENDOR 群組僅用於供應商屬性。
    • VehicleArea選擇適當的區域類型。
    • VehiclePropertyType選擇正確的資料類型。 BYTES 類型允許傳遞原始數據,這在大多數情況下就足夠了。透過供應商屬性頻繁地發送大數據可能會減慢整個車輛網路的存取速度。增加大負載時要小心。
    • Property ID為供應商屬性選擇唯一的兩位元組 ID。例如,0x1234。
  • 使用供應商屬性的簡短描述填寫VehiclePropConfig.configString 。這使得有效性檢查工具能夠標記現有車輛屬性的意外複製。例如,「我的 XYZ 自訂屬性」。
  • 透過CarPropertyManager (用於 Java 元件)或透過libvhalclient (對於本機)存取。請勿修改其他汽車 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 車輛屬性

座椅和轉向系統

請參閱座椅和方向盤屬性

暖通空調

您可以使用 VHAL 透過設定 HVAC 相關屬性來控制 HVAC。大多數 HVAC 屬性都與車輛的特定區域相關,儘管有一些屬性是全局屬性。範例定義的屬性包括:

財產目的
HVAC_TEMPERATURE_SET設定每個區域 ID 的溫度。
HVAC_POWER_ON每個區域 ID 的 HVAC 系統的電源狀態。

對於依賴 HVAC 系統電源狀態的 HVAC 屬性,它們必須列在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_左 | ROW_2_LEFT
  • ROW_1_右 | ROW_2_CENTER | ROW_2_右

相同硬體配置的替代映射是:

  • ROW_1_左 | ROW_2_CENTER | ROW_2_LEFT
  • ROW_1_右 | ROW_2_右

實施例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_左 | ROW_2_CENTER | ROW_2_右 | ROW_3_左| 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_左 | ROW_1_RIGHT

如果HVAC_AUTO_ON對於駕駛側和乘客側有兩個單獨的控制單元,則替代映射將是兩個元素數組:

  • ROW_1_LEFT
  • ROW_1_RIGHT

歐盟一般安全法規合規性

如果車輛必須透過 Android 遵守歐盟一般安全法規 (GSR) 要求,則必須支援GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT屬性。一個範例用例是歐盟法規 2019/2144 中定義的 GSR-ISA(智慧速度輔助)。此屬性是從 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 VHAL 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中的屬性 ID 和GsrComplianceRequirementType.h中的枚舉。例如,如參考 AIDL VHAL DefaultProperties.json所示:

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

若要從 Android 應用程式讀取此屬性,請使用CarPropertyManager.getIntProperty