Besondere Eigenschaften

Anbietereigenschaften

Um partnerspezifische Anforderungen zu unterstützen, lässt die VHAL Anbietereigenschaften zu, auf die nur über System-APIs zugegriffen werden kann. Beachten Sie beim Arbeiten mit Anbietereigenschaften die folgenden Richtlinien:

  • Versuchen Sie immer, zuerst Systemeigenschaften zu verwenden. Anbietereigenschaften sollten als letzten Ausweg verwendet werden, wenn keine der Systemeigenschaften Ihren Anforderungen entspricht.
  • Um eine Fragmentierung des Ökosystems zu verhindern, dürfen Anbietereigenschaften nicht zur Replikation von Fahrzeugeigenschaften verwendet werden, die bereits im SDK VehiclePropertyIds vorhanden sind. Weitere Informationen finden Sie in Abschnitt 2.5, Automotive-Anforderungen im CDD.
  • Verwenden Sie die folgenden Felder, um die Property-ID zu generieren:
    • VehiclePropertyGroup:VENDOR Die VENDOR-Gruppe wird nur für Anbietereigenschaften verwendet.
    • VehicleArea Wählen Sie einen geeigneten Bereichstyp aus.
    • VehiclePropertyType Wählen Sie den richtigen Datentyp aus. Der Typ BYTES ermöglicht die Weitergabe von Rohdaten, was in den meisten Fällen ausreichend ist. Das häufige Senden großer Datenmengen über Anbietereigenschaften kann 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 Verkäufereigenschaft. Beispiel: 0x1234.
  • Füllen Sie VehiclePropConfig.configString mit einer kurzen Beschreibung der Anbietereigenschaft aus. Dadurch können Gültigkeitsprüfungstools die versehentliche Replikation vorhandener Fahrzeugeigenschaften kennzeichnen. Beispiel: „Meine benutzerdefinierte Eigenschaft für XYZ.“
  • Zugriff über CarPropertyManager (für Java-Komponenten) oder über libvhalclient (für native). Ändern Sie keine anderen Fahrzeug-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 . Für eine feinere Granularität der Berechtigungssteuerung unterstützen Sie die Eigenschaft SUPPORT_CUSTOMIZE_VENDOR_PERMISSION . Diese STATIC-Eigenschaft ist schreibgeschützt, ihr Konfigurationsarray gibt die Berechtigungen für Anbietereigenschaften an. Das configArray wird wie folgt festgelegt (i ist eine Ganzzahl, die bei 0 beginnt):

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

Das folgende Konfigurationsarray konfiguriert beispielsweise zwei Anbietereigenschaften, vendor_prop_1 und vendor_prop_2 , um über die folgenden Berechtigungen zu verfügen:

  • vendor_prop_1 erfordert 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.
  • vendor_prop-2 erfordert zum Lesen android.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_INFO 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
}

Anbietereigenschaften, die nicht in diesem Array enthalten sind, erhalten die standardmäßige Anbieterberechtigung. Wenn PERMISSION_NOT_ACCESSIBLE ausgewählt ist, können Android-Apps nicht auf die Eigenschaft zugreifen. Im Beispiel können Android-Apps keinen Wert für vendor_prop_2 schreiben. Nur native VHAL-Clients können in diese Eigenschaft schreiben.

Erweiterte Fahrerassistenzsysteme (ADAS)

Siehe ADAS-Fahrzeugeigenschaften .

SITZ und LENKUNG

Siehe Sitz- und Lenkradeigenschaften .

HVAC

Sie können VHAL zur Steuerung von HVAC verwenden, indem Sie HVAC-bezogene Eigenschaften festlegen. Die meisten HVAC-Eigenschaften sind bestimmten Bereichen im Fahrzeug zugeordnet, obwohl es sich bei einigen um globale Eigenschaften handelt. Zu den definierten Beispieleigenschaften gehören:

Eigentum Zweck
HVAC_TEMPERATURE_SET Stellen Sie die Temperatur pro Bereichs-ID ein.
HVAC_POWER_ON Der Energiestatus des HVAC-Systems pro Bereichs-ID.

HVAC-Eigenschaften, die vom Energiestatus des HVAC-Systems abhängen, müssen im Konfigurationsarray HVAC_POWER_ON aufgeführt sein. Um eine vollständige Liste der HVAC-Eigenschaften anzuzeigen, suchen Sie in VehicleProperty.aidl nach HVAC_* , siehe Unterstützte Systemeigenschaften . Eigenschaften.

Regeln für die Zuordnung von nicht-GLOBAL-HVAC-Eigenschaften vom Typ VehicleArea zu AreaIDs: Jeder „Bereich“ für einen bestimmten VehicleArea Typ, der von der Eigenschaft betroffen ist, muss in einer Bereichs-ID für diese Eigenschaft enthalten sein. Die Temperaturregler werden den Sitzen zugeordnet, die sie „am stärksten beeinflussen“, wobei jeder betroffene Sitz genau einmal einbezogen werden muss. Die Zuordnung des mittleren Rücksitzes zur linken oder rechten AreaID mag willkürlich erscheinen, aber die Aufnahme jedes betroffenen Sitzes in genau eine AreaID stellt sicher, dass alle Sitze im Auto ausgedrückt werden und dass eine vernünftige Möglichkeit zur Beeinflussung jedes Sitzes verfügbar ist.

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 Temperaturkontrolleinheiten, jeweils eine für die Fahrerseite 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 Temperaturkontrolleinheiten, 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 einzelnes Elementarray:

  • 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

Einhaltung der allgemeinen Sicherheitsvorschriften der Europäischen Union

Wenn das Fahrzeug über Android die Anforderungen der Allgemeinen Sicherheitsverordnung (GSR) der Europäischen Union erfüllen muss, muss die Eigenschaft GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT unterstützt werden. Ein Beispielanwendungsfall ist GSR-ISA (Intelligent Speed ​​Assist) im Sinne der EU-Verordnung 2019/2144. Diese Eigenschaft wurde in AIDL VHAL ab Android 13 hinzugefügt, wird jedoch seit der Veröffentlichung von Android 12 in Car Service unterstützt. Diese Eigenschaft ist als schreibgeschützte statische globale Ganzzahleigenschaft definiert, wobei mögliche Werte durch GsrComplianceRequirementType Enumeration definiert werden:

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

Um diese Eigenschaft in HIDL VHAL (in Android 12) zu unterstützen, müssen Anbieter die Eigenschafts-ID fest codieren. Der folgende Codeausschnitt 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 Eigenschafts-ID von VehicleProperty.h und die Aufzählung von 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 Eigenschaft aus einer Android-App zu lesen, verwenden Sie CarPropertyManager.getIntProperty .

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