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 inVehicleVendorPermission.aidl
, das die Berechtigung zum Lesen des Property-Werts angibt.configArray[3 * i + 2]
Ein Enum inVehicleVendorPermission.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
istandroid.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_SEAT
zum Lesen undandroid.car.hardware.property.VehicleVendorPermission.PERMISSION_SET_CAR_VENDOR_CATEGORY_SEAT
zum Schreiben erforderlich. - Für
vendor_prop-2
mussandroid.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.
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.