Property-Konfigurationen

Jede unterstützte Property wird durch eine Property-Konfiguration angegeben, die durch die Struktur VehiclePropConfig definiert wird und die folgenden Felder hat.

Feld Beschreibung
prop

Die Property-ID. Dies muss entweder eine der definierten Systemeigenschaften aus VehicleProperty.aidl oder eine Anbietereigenschaft sein. Die Property-ID wird durch eine bitweise ODER-Verknüpfung der folgenden Felder (von rechts nach links) erstellt:

  • (0x00000000) 16 Bit: Eine eindeutige ID aus dem Bereich 0x0100 bis 0xffff.
  • (0x00000000) 8 Bit: Attributtypen, die den Typ für das Attribut definieren.
  • (0x00000000) 4 Bit: Bereichstypen.
  • (0x00000000) 4 Bit: VehiclePropertyGroup Dies ist entweder SYSTEM (0x10000000) oder VENDOR (0x20000000). Unter Anbietereigenschaften finden Sie die Eigenschaften, die Sie anpassen können.

Beispiel:
INFO_VIN (0x11100100) = UniqueID (0x00000100) | VehiclePropertyType.STRING (0x00100000) | VehicleArea.GLOBAL (0x01000000) | VehiclePropertyGroup.SYSTEM (0x10000000)

access
  • Der Zugriffsmodus für die Property. Muss READ, WRITE oder READ_WRITE sein.
  • Für Systemeigenschaften muss dies einer der definierten Zugriffsmodi sein, die in VehicleProperty.aidl dokumentiert sind.
  • Bei Properties mit Zugriff pro Bereich ist dies die maximale Teilmenge des Zugriffs pro Bereich. Wenn die Properties beispielsweise zwei Bereiche mit den Zugriffen READ und READ_WRITE haben, sollte dies auf READ festgelegt werden.
changeMode
  • Ändern Sie den Modus für die Property. Muss STATIC, ON_CHANGE oder CONTINUOUS sein. STATIC bedeutet, dass sich der Attributwert nach dem Systemstart nie ändert. ON_CHANGE bedeutet, dass das VHAL melden muss, wenn sich der Wert ändert. CONTINUOUS bedeutet, dass sich der Attributwert kontinuierlich ändert und VHAL basierend auf der Abo-Abtastrate berichten muss.
  • Bei Systemeigenschaften muss dieser Wert dem Änderungsmodus entsprechen, der in VehicleProperty.aidl dokumentiert ist.
configArray Ein optionales Array, das die attributspezifische Konfiguration enthält. Kann leer sein. Für bestimmte Systemattribute, z. B. GEAR_SELECTION, hat das Konfigurationsarray eine besondere Bedeutung und muss angegeben werden.
configString Ein optionaler String, der die Property-spezifische Konfiguration enthält. Kann leer sein.
minSampleRate und maxSampleRate Die minimale und maximale unterstützte Abtastrate für die kontinuierliche Eigenschaft (in Hertz). Wird nicht verwendet, wenn die Property nicht kontinuierlich ist. minSampleRate und maxSampleRate müssen durch die VHAL-Implementierung erreicht werden können. Es müssen nicht alle Abtastraten zwischen dem Mindest- und dem Höchstwert unterstützt werden.

Property-Typen

Als Enums in VehiclePropertyType.aidl definiert. Die unterstützten Attributtypen sind in der folgenden Tabelle aufgeführt.

Property-Typ Wert Beschreibung
STRING 0x00100000 String-Property, für die das Feld stringValue in Vehicle property value verwendet wird.
BOOLEAN 0x00200000 Boolean-Property, verwendet das erste Element im Feld int32Values in Vehicle property value. 0 bedeutet false, None 0 bedeutet true.
INT32 0x00400000 Integer-Property, verwendet das erste Element im Feld int32Values in Vehicle property value.
INT32_VEC 0x00410000 Für die Integer[]-Property werden die Elemente im Feld int32Values in Vehicle property value verwendet.
INT64 0x00500000 Lange Property, verwendet das erste Element im Feld int64Values in Vehicle property value.
INT64_VEC 0x00510000 Für die Long[]-Property werden die Elemente im Feld int64Values in Vehicle property value verwendet.
FLOAT 0x00600000 Float-Property, verwendet das erste Element im Feld floatValues in Vehicle property value.
FLOAT_VEC 0x00610000 Für die Float[]-Property werden die Elemente im Feld floatValues in Vehicle property value verwendet.
BYTES 0x00700000 Für die byte[]-Property werden die Elemente im Feld byteValues in Vehicle property value verwendet.
MIXED 0x00e00000 Attribut mit gemischtem Typ. Beliebige Kombinationen von Skalar- oder Vektortypen. Das genaue Format muss im Konfigurationsarray in der Attributkonfiguration angegeben werden.

Bei Properties vom Typ MIXED des Anbieters muss configArray so formatiert sein:

  • configArray[0]: 1 bedeutet, dass das Attribut den Wert String hat.
  • configArray[1]: 1 bedeutet, dass das Attribut den Wert Boolean hat.
  • configArray[2]: 1 bedeutet, dass das Attribut den Wert Integer hat.
  • configArray[3]: Die Zahl gibt die Größe von Integer[] in der Property an.
  • configArray[4]: 1 bedeutet, dass das Attribut den Wert Long hat.
  • configArray[5]: Die Zahl gibt die Größe von Long[] in der Property an.
  • configArray[6]: 1 bedeutet, dass das Attribut den Wert Float hat.
  • configArray[7]: Die Zahl gibt die Größe von Float[] in der Property an.
  • configArray[8]: Die Zahl gibt die Größe von byte[] in der Property an.

configArray = {1, 1, 1, 3, 0, 0, 0, 0, 0} gibt beispielsweise an, dass das Attribut einen String-Wert, einen Boolean-Wert, einen Integer-Wert und ein Array mit drei Ganzzahlen hat.

Konfiguration der Bereichs-ID

Jede Property-Konfiguration kann auch eine Liste von Bereichs-ID-Konfigurationen enthalten. Diese Liste ist für globale Properties optional und für Properties mit Zonen (Properties mit mehreren unterstützten Bereichen) erforderlich. Jede Konfiguration für Bereichs-IDs hat die folgenden Felder.

Feld Beschreibung
areaId Die ID für diesen Bereich. Weitere Informationen finden Sie unter Gebiets-IDs.
minInt32Value und maxInt32Value
  • Optionaler Mindest- und Höchstwert für INT32-Typparameter zur Bootzeit. Muss für alle anderen Typen 0 sein. Wird ignoriert, wenn beide Werte 0 sind.
  • Wenn für eine globale Property ein Mindest- und ein Höchstwert definiert werden müssen, muss eine Bereichskonfiguration mit der Bereichs-ID 0 verwendet werden.
  • Dieser Wert ist statisch und ändert sich auch dann nicht, wenn sich der Mindest- oder Höchstwert zur Laufzeit ändert. Implementieren Sie IVehicle#getMinMaxSupportedValue für dynamische Mindest- oder Höchstwerte.
minInt64Value und maxInt64Value
  • Optionaler Mindest- und Höchstwert für INT64-Attribute beim Booten. Muss für alle anderen Typen 0 sein. Wird ignoriert, wenn beide Werte 0 sind.
  • Wenn für eine globale Property ein Mindest- und ein Höchstwert definiert werden müssen, muss eine Bereichskonfiguration mit der Bereichs-ID 0 verwendet werden.
  • Dieser Wert ist statisch und ändert sich auch dann nicht, wenn sich der Mindest- oder Höchstwert zur Laufzeit ändert. Implementieren Sie IVehicle#getMinMaxSupportedValue für dynamische Mindest- oder Höchstwerte.
minFloatValue und maxFloatValue
  • Optionaler Mindest- und Höchstwert für Eigenschaften vom Typ „Float“ beim Booten. Muss für alle anderen Typen 0 sein. Wird ignoriert, wenn beide Werte 0,0 sind.
  • Wenn für eine globale Property ein Mindest- und ein Höchstwert definiert werden müssen, muss eine Bereichskonfiguration mit der Bereichs-ID 0 verwendet werden.
  • Dieser Wert ist statisch und ändert sich auch dann nicht, wenn sich der Mindest- oder Höchstwert zur Laufzeit ändert. Implementieren Sie IVehicle#getMinMaxSupportedValue für dynamische Mindest- oder Höchstwerte.
(Neu in Android 14)
supportedEnumValues
  • Optionale Liste der unterstützten Werte beim Booten, wenn die Property als Enum-Typ-Property definiert ist. Wenn nicht angegeben (leer) oder vor Android 14, wird davon ausgegangen, dass alle Enumerationswerte unterstützt werden.
  • Für globale Properties muss eine Bereichskonfiguration mit der Bereichs-ID 0 verwendet werden, wenn unterstützte Enum-Werte definiert werden müssen.
  • Dieser Wert ist statisch und ändert sich auch dann nicht, wenn sich die unterstützten Werte zur Laufzeit ändern. Implementieren Sie IVehicle#getSupportedValuesLists für dynamische unterstützte Werte.
  • Dies gilt nur für Properties vom Typ „enum“. Bei anderen Typen muss dieses Feld leer sein. Wenn Sie unterstützte Werte für andere Nicht-Enum-Typen verfügbar machen möchten, verwenden Sie IVehicle#getSupportedValuesLists.
(Neu in Android 15)
supportVariableUpdateRate
  • Gibt an, ob die Aktualisierungsrate von Variablen unterstützt wird. Das gilt nur für kontinuierliche Eigenschaften.
  • Wenn dies true ist, kann die App eine variable Aktualisierungsrate für ein Abo aktivieren, um Ereignisse für die Aktualisierung von Attributen nur dann zu empfangen, wenn sich der Attributwert ändert (kontinuierliche Attribute werden also wie „Bei Änderung“-Attribute behandelt).
  • Wenn alle Abonnenten für ein Attribut die variable Aktualisierungsrate aktivieren, wird mit der Aboanfrage an VHAL die variable Aktualisierungsrate für das Attribut aktiviert. VHAL muss Attributaktualisierungsereignisse nur senden, wenn sich der Attributwert ändert.
  • Wenn ein Abonnent eine feste Aktualisierungsrate anfordert, wird durch die Aboanfrage an VHAL die variable Aktualisierungsrate für die Property deaktiviert. AAOS filtert die doppelten Ereignisse für die Clients heraus, die eine variable Aktualisierungsrate anfordern.
  • Es wird DRINGEND EMPFOHLEN, für alle kontinuierlichen Eigenschaften, die keine Heartbeats sind, eine variable Aktualisierungsrate zu unterstützen, um eine bessere Leistung zu erzielen. Dies gilt nicht, wenn die Eigenschaftsdaten groß sind (z. B. ein Byte-Array mit einer Größe von 1 KB) und möglicherweise viel Speicherplatz für das Caching belegen.
(Neu in Android 16)
hasSupportedValueInfo
  • Wenn nicht null, wird angegeben, ob für dieses Attribut Mindest- oder Höchstwerte oder eine Liste der unterstützten Werte angegeben werden.
  • Mit diesem Feld wird gesteuert, ob die APIs für dynamische unterstützte Werte: getMinMaxSupportedValue, getSupportedValuesLists, subscribeSupportedValueChange, unsubscribeSupportedValueChange für diese Property-ID und Bereichs-ID unterstützt werden.
  • Wenn nicht null, muss VHAL diese APIs für diese Property-ID und Bereichs-ID implementieren.
  • Wenn null oder Android 15 oder niedriger verwendet wird, werden dynamisch unterstützte Werte für diese Property-ID und Bereichs-ID nicht unterstützt. Der Client muss die statischen unterstützten Werte verwenden, die in der Konfiguration der Fahrzeugeigenschaft angegeben sind.

Gebietstypen

Als Enums in VehicleArea.aidl definiert. Die unterstützten Flächentypen sind unten aufgeführt.

Bereichstyp Wert Beschreibung
GLOBAL 0x01000000 Diese Property ist eine globale Property und hat keine mehreren Bereiche.
WINDOW 0x03000000 Bereich basierend auf Fenstern, verwendet die VehicleAreaWindow-Enumeration.
MIRROR 0x04000000 Bereich basierend auf Spiegeln, verwendet die VehicleAreaMirror-Enumeration.
SEAT 0x05000000 Bereich basierend auf Nutzerlizenzen, verwendet die VehicleAreaSeat-Enumeration.
TÜR 0x06000000 Bereich basierend auf Türen, verwendet die VehicleAreaDoor-Enumeration.
DIAGRAMM 0x07000000 Fläche basierend auf Rädern, verwendet die VehicleAreaWheel-Enumeration.

Für jede zonierte Property muss ein vordefinierter Bereichstyp verwendet werden. Für jeden Bereichstyp ist eine Reihe von Bit-Flags definiert, die in einer Enumeration für den Bereichstyp enthalten sind. Im SEAT-Bereich werden beispielsweise VehicleAreaSeat Enums definiert:

  • ROW_1_LEFT = 0x0001
  • ROW_1_CENTER = 0x0002
  • ROW_1_RIGHT = 0x0004
  • ROW_2_LEFT = 0x0010
  • ROW_2_CENTER = 0x0020
  • ROW_2_RIGHT = 0x0040
  • ROW_3_LEFT = 0x0100
  • ...

Gebiets-IDs

Zonenspezifische Eigenschaften werden über Bereichs-IDs angesprochen. Jede zonierte Property kann eine oder mehrere Bereichs-IDs unterstützen. Eine Bereichs-ID besteht aus einem oder mehreren Flags aus dem entsprechenden Enum. Für ein Attribut mit VehicleAreaSeat können beispielsweise die folgenden Bereichs-IDs verwendet werden:

Artikel Beschreibung
ROW_1_LEFT | ROW_1_RIGHT Die Bereichs-ID gilt für beide Vordersitze.
ROW_2_LEFT Gilt nur für den linken Rücksitz.
ROW_2_RIGHT Gilt nur für den rechten Rücksitz.

Weitere Informationen finden Sie unter HLK.