Besondere Unterkünfte

Anbietereigenschaften

Um die spezifischen Anforderungen von Partnern zu unterstützen, erlaubt das VHAL Anbietereigenschaften, auf die nur über System-APIs zugegriffen wird. Beachten Sie beim Arbeiten mit Anbietereigenschaften die folgenden Richtlinien:

  • Verwenden Sie immer zuerst Systemeigenschaften. Herstellereigenschaften sollten nur als letztes Mittel verwendet werden, wenn keine der Systemeigenschaften Ihre Anforderungen erfüllt.
  • Um eine Fragmentierung des Ökosystems zu verhindern, dürfen Anbieterattribute nicht verwendet werden, um Fahrzeugeigenschaften zu replizieren, die bereits im SDK VehiclePropertyIds vorhanden sind. Weitere Informationen finden Sie im CDD im Abschnitt 2.5, Automotive Requirements.
  • Verwenden Sie die folgenden Felder, um die Property-ID zu generieren:
    • Die VehiclePropertyGroup:VENDOR-Gruppe wird nur für Anbieter-Properties verwendet.
    • VehicleArea Wählen Sie einen geeigneten Gebietstyp aus.
    • VehiclePropertyType Wählen Sie den richtigen Datentyp aus. Mit dem BYTES-Typ können Rohdaten übergeben werden, was in den meisten Fällen ausreicht. Wenn häufig große Datenmengen über Anbietereigenschaften gesendet werden, kann der Zugriff auf das gesamte Fahrzeugnetzwerk verlangsamt werden. 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.
  • Füllen Sie VehiclePropConfig.configString mit einer kurzen Beschreibung der Anbietereigenschaft aus. So können Tools zur Gültigkeitsprüfung die versehentliche Replikation vorhandener Fahrzeugeigenschaften kennzeichnen. Beispiel: „Meine benutzerdefinierte Property für XYZ“.
  • Zugriff über CarPropertyManager (für Java-Komponenten) oder über libvhalclient (für nativen Code). Ändern Sie keine anderen Auto-APIs, da dies zu zukünftigen Kompatibilitätsproblemen führen kann.

Berechtigung für Anbietereigenschaften

Die Standardberechtigung für alle definierten Anbietereigenschaften ist android.car.Car.PERMISSION_VENDOR_EXTENSION. Wenn Sie die Berechtigungen detaillierter steuern möchten, unterstützen Sie das Attribut SUPPORT_CUSTOMIZE_VENDOR_PERMISSION. Diese STATIC-Property ist schreibgeschützt. Das zugehörige Konfigurations-Array gibt die Berechtigungen für Anbieter-Properties an. configArray wird so festgelegt (i ist eine Ganzzahl ab 0):

  • configArray[3 * i] propId, die Property-ID für die Anbieter-Property.
  • configArray[3 * i + 1] Eine Enumeration in VehicleVendorPermission.aidl, um die Berechtigung zum Lesen des Attributwerts anzugeben.
  • configArray[3 * i + 2] Eine Enumeration in VehicleVendorPermission.aidl, um die Berechtigung zum Schreiben des Attributwerts anzugeben.

Mit dem 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.
  • vendor_prop-2 erfordert android.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_INFO zum Lesen und ist für Android-Apps nicht beschreibbar.
configArray = {
  PERMISSION_SET_VENDOR_CATEGORY_SEAT
    vendor_prop_2, PERMISSION_GET_VENDOR_CATEGORY_INFO, PERMISSION_NOT_ACCESSIBLE
}

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

Fahrerassistenzsysteme (ADAS)

Weitere Informationen finden Sie unter ADAS-Fahrzeugeigenschaften.

SITZ und LENKUNG

Weitere Informationen finden Sie unter Sitz- und Lenkradeigenschaften.

Heizungs-, Lüftungs- und Klimatechnik

Sie können die HLK-Anlage über das VHAL steuern, indem Sie HLK-bezogene Eigenschaften festlegen. Die meisten HLK-Eigenschaften sind bestimmten Bereichen im Fahrzeug zugeordnet, einige sind jedoch globale Eigenschaften. Beispiele für definierte Attribute:

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

HLK-Attribute, die vom Betriebszustand des HLK-Systems abhängen, müssen im Konfigurationsarray HVAC_POWER_ON aufgeführt werden. Eine vollständige Liste der HLK-Attribute finden Sie in VehicleProperty.aidl, indem Sie nach HVAC_* suchen. Weitere Informationen finden Sie unter Unterstützte Systemattribute. Properties.

Regeln für die Zuordnung von HVAC-Eigenschaften des Typs „non-GLOBAL 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, die sie am meisten beeinflussen. Jeder betroffene Sitz muss jedoch genau einmal berücksichtigt werden. Die Zuweisung des mittleren Rücksitzes zur linken oder rechten AreaID mag willkürlich erscheinen, aber die Einbeziehung jedes betroffenen Sitzes in genau eine AreaID sorgt dafür, dass alle Sitze im Auto berücksichtigt werden und eine angemessene Möglichkeit zur Beeinflussung jedes Sitzes besteht.

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 Satz 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 Temperaturregelungseinheiten, jeweils eine für die Fahrerseite, die Beifahrerseite und den Fond. Eine sinnvolle Möglichkeit, HVAC_TEMPERATURE_SET 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 Array mit einem einzelnen Element:

  • ROW_1_LEFT | ROW_1_RIGHT

Wenn HVAC_AUTO_ON zwei separate Steuergeräte für die Fahrer- und Beifahrerseite hat, könnte eine alternative Zuordnung ein Array mit zwei Elementen sein:

  • 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 Fahrzeugs von außen, Vorderansicht.
Abbildung 2. Abmessungen des Fahrzeugs von außen, Seitenansicht.

Mit den in dieser Tabelle beschriebenen Attributen können Sie die Außenabmessungen eines Fahrzeugs definieren.

Fahrzeugeigenschaft VHAL-Feld Beschreibung
Größe int32Values[0] Vertikaler Abstand zwischen dem Boden und dem höchsten Punkt des Fahrzeugs. Dabei wird von normal aufgepumpten Werksrädern ausgegangen.
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 Seite des Fahrzeugs, ohne die 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] Abstand zwischen der Mitte der Vorder- und Hinterräder des Fahrzeugs.
Spurbreite, vorn int32Values[5] Abstand zwischen den Vorderrädern, gemessen von der Mittellinie eines Reifenprofils zur Mittellinie des gegenüberliegenden Reifenprofils.
Spurbreite, hinten int32Values[6] Abstand zwischen den Hinterrädern, gemessen von der Mittellinie eines Reifenprofils zur Mittellinie des gegenüberliegenden Reifenprofils.
Wendekreisdurchmesser (Bordstein zu Bordstein) int32Values[7] Der Durchmesser des Kreises, der von den äußeren Rädern des Fahrzeugs bei einer vollständigen Drehung mit vollständig verriegeltem Lenkrad gebildet wird.

Einhaltung der allgemeinen Sicherheitsverordnung der Europäischen Union

Wenn das Fahrzeug die Anforderungen der allgemeinen Sicherheitsverordnung der EU (GSR) über Android erfüllen muss, muss die Property GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT unterstützt werden. Ein Beispiel ist GSR-ISA (Intelligent Speed Assist) gemäß EU-Verordnung 2019/2144. Diese Property wird ab Android 13 in AIDL VHAL hinzugefügt, wird aber seit der Veröffentlichung von Android 12 im Car Service unterstützt. Diese Property ist als schreibgeschützte statische globale Ganzzahl-Property definiert. Die möglichen Werte werden durch die GsrComplianceRequirementType-Enumeration definiert:

Name Wert Beschreibung
GSR_COMPLIANCE_NOT_REQUIRED 0 GSR-Konformität ist nicht erforderlich
GSR_COMPLIANCE_REQUIRED_V1 1 GSR-Compliance ist erforderlich und die Anforderungslösungsversion ist 1.

Damit diese Eigenschaft in der HIDL-VHAL (in Android 12) unterstützt wird, müssen Anbieter die Eigenschafts-ID fest codieren. Das folgende Snippet zeigt beispielsweise, wie dies im 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 im AIDL-VHAL (ab Android 13) zu unterstützen, können Anbieter die Eigenschafts-ID aus VehicleProperty.h und die Enumeration aus GsrComplianceRequirementType.h verwenden. Zum Beispiel wie in der Referenz-AIDL-VHAL DefaultProperties.json:

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

Um diese Property aus einer Android-App auszulesen, verwenden Sie CarPropertyManager.getIntProperty.