Besondere Eigenschaften

Anbietereigenschaften

Zur Unterstützung partnerspezifischer Anforderungen sind in der VHAL Anbietereigenschaften zulässig, auf die nur über System-APIs zugegriffen wird. Beachten Sie bei der Arbeit mit Anbieter-Properties die folgenden Richtlinien:

  • Verwenden Sie immer zuerst Systemeigenschaften. Anbietereigenschaften sollten nur als letztes Mittel eingesetzt werden, wenn keine der Systemeigenschaften Ihre Anforderung erfüllt.
  • Um eine Fragmentierung des Systems zu vermeiden, dürfen Anbietereigenschaften nicht verwendet werden, um Fahrzeugeigenschaften zu replizieren, die bereits im SDK als VehiclePropertyIds vorhanden sind. Weitere Informationen finden Sie im Abschnitt 2.5 „Anforderungen an Autos“ des CDD.
  • Verwenden Sie die folgenden Felder, um die Property-ID zu generieren:
    • VehiclePropertyGroup:VENDOR Die Gruppe „VENDOR“ wird nur für Anbieter-Properties verwendet.
    • VehicleArea Wählen Sie einen geeigneten Gebietstyp aus.
    • VehiclePropertyType Wählen Sie den richtigen Datentyp aus. Beim BYTES-Typ können Rohdaten übergeben werden, was in den meisten Fällen ausreicht. Wenn Big Data häufig über Anbietereigenschaften gesendet werden, kann das den Zugriff auf das gesamte Fahrzeugnetzwerk verlangsamen. Seien Sie vorsichtig, wenn Sie eine große Nutzlast hinzufügen.
    • Property ID Wählen Sie eine eindeutige Zwei-Byte-ID für die Anbietereigenschaft aus. Beispiel: 0x1234.
  • Geben Sie in VehiclePropConfig.configString eine kurze Beschreibung der Anbietereigenschaft ein. So können Tools zur Gültigkeitsprüfung die versehentliche Replikation vorhandener Fahrzeugeigenschaften melden. Beispiel: „Meine benutzerdefinierte Property für XYZ“
  • Zugriff über CarPropertyManager (für Java-Komponenten) oder über libvhalclient (für native Apps). Ändern Sie keine anderen Auto-APIs, da dies zu zukünftigen Kompatibilitätsproblemen führen kann.

Berechtigung für Anbieter-Properties

Die Standardberechtigung für alle definierten Anbietereigenschaften ist android.car.Car.PERMISSION_VENDOR_EXTENSION. Für eine detailliertere Berechtigungssteuerung unterstützen Sie das Attribut SUPPORT_CUSTOMIZE_VENDOR_PERMISSION. Diese STATIC-Property ist schreibgeschützt. Das Konfigurationsarray gibt die Berechtigungen für Anbietereigenschaften an. configArray wird so festgelegt (i ist eine Ganzzahl, die bei 0 beginnt):

  • configArray[3 * i] propId, die Property-ID der Anbieter-Property.
  • configArray[3 * i + 1] Ein Enum in VehicleVendorPermission.aidl, das die Berechtigung zum Lesen des Property-Werts angibt.
  • configArray[3 * i + 2] Ein Enum in VehicleVendorPermission.aidl, das die Berechtigung zum Schreiben des Property-Werts angibt.

Im folgenden Konfigurationsarray werden beispielsweise zwei Anbietereigenschaften, vendor_prop_1 und vendor_prop_2, mit den Berechtigungen konfiguriert:

  • Für vendor_prop_1 ist android.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_SEAT zum Lesen und android.car.hardware.property.VehicleVendorPermission.PERMISSION_SET_CAR_VENDOR_CATEGORY_SEAT zum Schreiben erforderlich.
  • Für vendor_prop-2 muss android.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_INFO gelesen werden. Für Android-Apps kann sie nicht geschrieben werden.
configArray = {
  PERMISSION_SET_VENDOR_CATEGORY_SEAT
    vendor_prop_2, PERMISSION_GET_VENDOR_CATEGORY_INFO, PERMISSION_NOT_ACCESSIBLE
}

Für Anbietereigenschaften, die nicht in diesem Array enthalten sind, wird die Standardanbieterberechtigung verwendet. Wenn PERMISSION_NOT_ACCESSIBLE ausgewählt ist, können Android-Apps nicht auf die Property zugreifen. In diesem Beispiel können Android-Apps keinen Wert für vendor_prop_2 schreiben. Nur native VHAL-Clients können in diese Property schreiben.

Erweitertes Fahrassistenzsystem

Weitere Informationen finden Sie unter ADAS-Fahrzeugeigenschaften.

SITZ und LENKUNG

Weitere Informationen finden Sie unter Eigenschaften für Sitze und Lenkräder.

HLK

Sie können den VHAL verwenden, um die HLK-Anlagen zu steuern, indem Sie HLK-bezogene Eigenschaften festlegen. Die meisten HLK-Eigenschaften sind bestimmten Bereichen des Fahrzeugs zugeordnet, wobei es sich bei einigen auch um globale Gebäude handelt. Beispiele für definierte Properties:

Attribut Zweck
HVAC_TEMPERATURE_SET Temperatur pro Bereichs-ID festlegen
HVAC_POWER_ON Der Betriebsstatus des HLK-Systems pro Bereichs-ID.

Für HLK-Eigenschaften, die vom Stromversorgungsstatus des HLK-Systems abhängen, müssen sie im Konfigurationsarray HVAC_POWER_ON aufgeführt sein. Eine vollständige Liste der HLK-Properties finden Sie unter Unterstützte Systemeigenschaften. Suchen Sie dazu in VehicleProperty.aidl nach HVAC_*. Properties.

Regeln für die Zuordnung von nicht globalen HVAC-Eigenschaften vom Typ „VehicleArea“ zu AreaIDs: Jeder „Bereich“ für einen bestimmten VehicleArea-Typ, der von der Eigenschaft betroffen ist, muss in einer AreaID für diese Eigenschaft enthalten sein. Die Temperaturregler werden den Sitzen zugewiesen, auf die sie „am stärksten Einfluss haben“. Jeder betroffene Sitz muss jedoch genau einmal enthalten sein. Die Zuweisung des mittleren Rücksitzes zur linken oder rechten AreaID mag willkürlich erscheinen, aber die Aufnahme jedes betroffenen Sitzes in genau eine AreaID sorgt dafür, dass alle Sitze im Auto angegeben sind und dass eine angemessene Möglichkeit besteht, jeden Sitz zu beeinflussen.

Beispiel 1

Ein Auto hat zwei Vordersitze (ROW_1_LEFT, ROW_1_RIGHT) und drei Rücksitze (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT). Es gibt zwei Temperaturregler, jeweils einen für die Fahrer- und die Beifahrerseite. Ein gültiger Zuordnungssatz von AreaIDs für HVAC_TEMPERATURE_SET wäre ein Array mit zwei Elementen:

  • ROW_1_LEFT | ROW_2_LEFT
  • ROW_1_RIGHT | ROW_2_CENTER | ROW_2_RIGHT

Eine alternative Zuordnung für dieselbe Hardwarekonfiguration wäre:

  • ROW_1_LEFT | ROW_2_CENTER | ROW_2_LEFT
  • ROW_1_RIGHT | ROW_2_RIGHT

Beispiel 2

Ein Auto hat drei Sitzreihen mit zwei Sitzen in der ersten Reihe (ROW_1_LEFT, ROW_1_RIGHT) und drei Sitzen in der zweiten (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT) und dritten Reihe (ROW_3_LEFT, ROW_3_CENTER, ROW_3_RIGHT). Es gibt drei Temperaturregler, jeweils einen für die Fahrer-, die Beifahrerseite und den Fond. Eine sinnvolle Möglichkeit, HVAC_TEMPERATURE_SET zu AreaIDs zuzuordnen, ist ein Array mit drei Elementen:

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

Beispiel 3

Ein Auto hat zwei Vordersitze (ROW_1_LEFT, ROW_1_RIGHT) und drei Rücksitze (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT). Angenommen, das Auto unterstützt HVAC_AUTO_ON nur für die beiden Vordersitze. Ein gültiger Zuordnungssatz von AreaIDs für HVAC_AUTO_ON wäre ein einzelnes Element-Array:

  • ROW_1_LEFT | ROW_1_RIGHT

Wenn HVAC_AUTO_ON zwei separate Steuereinheiten für die Fahrer- und Beifahrerseite hätte, wäre eine alternative Zuordnung ein Array mit zwei Elementen:

  • ROW_1_LEFT
  • ROW_1_RIGHT

INFO_EXTERIOR_DIMENSIONS

Die Außenabmessungen eines Fahrzeugs werden in Millimetern gemessen, wie in Abbildung 1 dargestellt.

Abbildung 1: Abmessungen des Fahrzeugäußeren, Vorderansicht.
Abbildung 2. Abmessungen des Fahrzeugäußeren, Seitenansicht.

Verwenden Sie die in dieser Tabelle beschriebenen Eigenschaften, um die Außenabmessungen eines Fahrzeugs zu definieren.

Fahrzeugeigenschaft VHAL-Feld Beschreibung
Größe int32Values[0] Vertikale Entfernung zwischen dem Boden und dem höchsten Punkt des Fahrzeugs. Dazu werden normalerweise aufgeblähte Fabrikräder vorausgesetzt.
Länge int32Values[1] Horizontaler Abstand zwischen den äußersten Punkten der Vorder- und Rückseite des Fahrzeugs.
Breite, ohne Spiegel int32Values[2] Horizontaler Abstand zwischen den beiden äußersten Punkten auf jeder Fahrzeugseite ohne Seitenspiegel.
Breite, einschließlich Spiegel int32Values[3] Horizontaler Abstand zwischen den beiden äußersten Punkten auf jeder Seite des Fahrzeugs, einschließlich der Seitenspiegel.
Radstand int32Values[4] Der Abstand zwischen der Mitte der Vorder- und Hinterräder des Fahrzeugs.
Spurbreite, vorne int32Values[5] Abstand zwischen den Vorderrädern, gemessen von der Mittellinie eines Reifenprofils bis zur Mittellinie des gegenüberliegenden Reifenprofils.
Spurbreite, hinten int32Values[6] Abstand zwischen den Hinterrädern, gemessen von der Mittellinie eines Reifenprofils bis zur Mittellinie des gegenüberliegenden Reifenprofils.
Wendedurchmesser int32Values[7] Der Durchmesser der äußeren Räder des Fahrzeugs bei einer vollständigen Drehung mit vollständig verriegeltem Lenkrad.

Einhaltung der allgemeinen Sicherheitsvorschriften der Europäischen Union

Wenn das Fahrzeug die Anforderungen der allgemeinen Sicherheitsvorschriften der EU (GSR) über Android erfüllen muss, muss die Property GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT unterstützt werden. Ein Anwendungsbeispiel ist der GSR-ISA (Intelligenter Geschwindigkeitsassistent) gemäß EU-Verordnung 2019/2144. Dieses Attribut wird in AIDL VHAL von Android 13 hinzugefügt, wird aber in Car Service seit der Veröffentlichung von Android 12 unterstützt. Diese Property ist als schreibgeschützte, statische globale Ganzzahleigenschaft definiert. Die möglichen Werte werden durch die Aufzählung GsrComplianceRequirementType definiert:

Name Wert Beschreibung
GSR_COMPLIANCE_NOT_REQUIRED 0 Einhaltung der GSR-Anforderungen ist nicht erforderlich
GSR_COMPLIANCE_REQUIRED_V1 1 Die GSR-Compliance ist erforderlich und die Version der Lösung für die Anforderung ist 1.

Um diese Eigenschaft in HIDL VHAL (in Android 12) zu unterstützen, müssen Anbieter die Property-ID hartcodieren. Das folgende Snippet zeigt beispielsweise, wie dies in der Referenz-HIDL-VHAL DefaultConfig.h unterstützt wird:

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

Um diese Eigenschaft in AIDL VHAL (ab Android 13) zu unterstützen, können Anbieter die Property-ID aus VehicleProperty.h und das Enum aus GsrComplianceRequirementType.h verwenden. Beispiel: In der Referenz-AIDL-VHAL DefaultProperties.json:

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

Wenn Sie diese Property aus einer Android-App lesen möchten, verwenden Sie CarPropertyManager.getIntProperty.

  • Verwenden Sie unter Android 13 und höher VehiclePropertyIds.GENERAL_SAFETY_REGULATION_COMPLIANCE als Property-ID.
  • Verwenden Sie unter Android 12 den hartcodierten Wert 0x11400F47 als Property-ID. Für diese Property ist die Berechtigung Car#PERMISSION_CAR_INFO erforderlich.