Property-Konfigurationen

Jede unterstützte Property wird durch eine Property-Konfiguration angegeben, die über die Struktur VehiclePropConfig definiert ist. Sie enthält die folgenden Felder.

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 Bitvektor-ODER der folgenden Felder erstellt (von rechts nach links):

  • (0x00000000) 16 Bit: Eine eindeutige ID aus dem Bereich 0x0100–0xffff.
  • (0x00000000) 8 Bit: Property-Typen, die den Typ der Property definieren.
  • (0x00000000) 4 Bit: Flächentypen.
  • (0x00000000) 4 Bit: VehiclePropertyGroup Dies ist entweder SYSTEM (0x10000000) oder VENDOR (0x20000000). Unter Anbietereigenschaften finden Sie Informationen zu Attributen, 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.
  • Bei Systemeigenschaften muss dies einer der in VehicleProperty.aidl dokumentierten Zugriffsmodi sein.
  • Bei Properties mit standortspezifischen Zugriffsrechten ist dies die maximale Teilmenge des standortspezifischen Zugriffs. Wenn die Properties beispielsweise zwei Bereiche mit den Zugriffsrechten READ und READ_WRITE haben, sollte dieser Wert auf READ festgelegt werden.
changeMode
  • Modus für die Property ändern. Muss STATIC, ON_CHANGE oder CONTINUOUS sein. STATIC bedeutet, dass sich der Attributwert nach einem Systemstart nie ändert. ON_CHANGE bedeutet, dass die VHAL melden muss, wenn sich der Wert ändert. CONTINUOUS bedeutet, dass sich der Property-Wert kontinuierlich ändert und VHAL basierend auf der Abo-Stichprobenrate melden muss.
  • Bei Systemeigenschaften muss dies dem in VehicleProperty.aidl dokumentierten Änderungsmodus entsprechen.
configArray Ein optionales Array für die standortspezifische Konfiguration. Kann leer sein. Für bestimmte Systemeigenschaften, z. B. GEAR_SELECTION, hat das config-Array eine spezielle Bedeutung und muss angegeben werden.
configString Optionaler String, der eine standortspezifische Konfiguration enthält. Kann leer sein.
minSampleRate und maxSampleRate Die minimale und maximale unterstützte Abtastrate für kontinuierliche Eigenschaften (in Hertz). Wird nicht verwendet, wenn die Property nicht kontinuierlich ist. minSampleRate und maxSampleRate müssen mit der VHAL-Implementierung erreichbar sein. Nicht alle Abtastrate zwischen Minimum und Maximum müssen unterstützt werden.

Immobilienarten

In VehiclePropertyType.aidl als Enumerationen definiert. Die unterstützten Property-Typen sind in der folgenden Tabelle aufgeführt.

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

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

  • configArray[0], 1 gibt an, dass die Property einen String-Wert hat
  • configArray[1], 1 gibt an, dass die Property einen Boolean-Wert hat
  • configArray[2], 1 gibt an, dass die Property einen Integer-Wert hat
  • configArray[3]: Die Zahl gibt die Größe von Integer[] in der Property an.
  • configArray[4], 1 gibt an, dass die Property einen Long-Wert hat
  • configArray[5]: Die Zahl gibt die Größe von Long[] in der Property an.
  • configArray[6], 1 gibt an, dass die Property einen Float-Wert 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 die Property einen String-Wert, einen Boolean-Wert, einen Integer-Wert und ein Array mit drei Ganzzahlen hat.

Konfiguration der Gebiets-ID

Jede Property-Konfiguration kann auch eine Liste von Konfigurationen für Gebiets-IDs enthalten. Diese Liste ist für globale Properties optional und für Zonen-Properties (Properties mit mehreren unterstützten Gebieten) erforderlich. Jede Konfiguration der Gebiets-ID enthält die folgenden Felder.

Feld Beschreibung
areaId Die ID für diesen Bereich. Weitere Informationen finden Sie unter Region-IDs.
minInt32Value und maxInt32Value
  • Optionaler Mindest- und Höchstwert für Eigenschaften vom Typ INT32 beim Starten. Für alle anderen Typen muss „0“ angegeben werden. Wird ignoriert, wenn beide Werte 0 sind.
  • Wenn für eine globale Property Mindest- und Höchstwert definiert werden müssen, muss eine Gebietskonfiguration mit der Gebiets-ID 0 verwendet werden.
  • Dieser Wert ist statisch und ändert sich nicht, auch wenn sich der Mindest- oder Höchstwert zur Laufzeit ändert. Implementieren Sie IVehicle#getMinMaxSupportedValue für den dynamischen Mindest- oder Höchstwert.
minInt64Value und maxInt64Value
  • Optionaler Mindest- und Höchstwert für Eigenschaften vom Typ INT64 beim Starten. Für alle anderen Typen muss „0“ angegeben werden. Wird ignoriert, wenn beide Werte 0 sind.
  • Wenn für eine globale Property Mindest- und Höchstwert definiert werden müssen, muss eine Gebietskonfiguration mit der Gebiets-ID 0 verwendet werden.
  • Dieser Wert ist statisch und ändert sich nicht, auch wenn sich der Mindest- oder Höchstwert zur Laufzeit ändert. Implementieren Sie IVehicle#getMinMaxSupportedValue für den dynamischen Mindest- oder Höchstwert.
minFloatValue und maxFloatValue
  • Optionaler Mindest- und Höchstwert für Eigenschaften vom Typ „Float“ beim Starten. Für alle anderen Typen muss „0“ angegeben werden. Wird ignoriert, wenn beide Werte 0,0 sind.
  • Wenn für eine globale Property Mindest- und Höchstwert definiert werden müssen, muss eine Gebietskonfiguration mit der Gebiets-ID 0 verwendet werden.
  • Dieser Wert ist statisch und ändert sich nicht, auch wenn sich der Mindest- oder Höchstwert zur Laufzeit ändert. Implementieren Sie IVehicle#getMinMaxSupportedValue für den dynamischen Mindest- oder Höchstwert.
(Neu in Android 14)
supportedEnumValues
  • Optionale Liste der unterstützten Werte beim Starten, wenn die Property als Property vom Typ „enum“ definiert ist. Wenn nicht angegeben (leer) oder vor Android 14 wird davon ausgegangen, dass alle enum-Werte unterstützt werden.
  • Wenn für eine globale Property unterstützte Enum-Werte definiert werden müssen, muss eine Gebietskonfiguration mit der Gebiets-ID 0 verwendet werden.
  • Dieser Wert ist statisch und ändert sich nicht, auch wenn sich die unterstützten Werte zur Laufzeit ändern. Implementieren Sie IVehicle#getSupportedValuesLists für unterstützte dynamische Werte.
  • Das gilt nur für Properties vom Typ „Aufzählung“. Bei anderen Typen muss dieses Feld leer sein. Wenn Sie unterstützte Werte für andere Nicht-Eintragstypen freigeben möchten, verwenden Sie IVehicle#getSupportedValuesLists.
(Neu in Android 15)
supportVariableUpdateRate
  • Gibt an, ob eine variable Aktualisierungsrate unterstützt wird. Das gilt nur für kontinuierliche Properties.
  • Wenn dies true ist, kann die App eine variable Aktualisierungsrate für ein Abo aktivieren, um nur dann Ereignise für Property-Aktualisierungen zu erhalten, wenn sich der Property-Wert ändert. Dabei werden kontinuierliche Properties als „bei Änderung“-Properties behandelt.
  • Wenn alle Abonnenten einer Property die variable Aktualisierungsrate aktivieren, wird die variable Aktualisierungsrate für die Property in der Aboanfrage an VHAL aktiviert und VHAL muss nur dann Property-Update-Ereignisse senden, wenn sich der Property-Wert ändert.
  • Wenn ein Abonnent eine feste Aktualisierungsrate anfordert, wird durch die Aboanfrage an VHAL die variable Aktualisierungsrate für die Property deaktiviert und AAOS filtert die doppelten Ereignisse für die Kunden heraus, die eine variable Aktualisierungsrate anfordern.
  • Es wird dringend empfohlen, für alle kontinuierlichen Properties, die keine Heartbeat-Properties sind, eine variable Aktualisierungsrate zu unterstützen, um die Leistung zu verbessern. Es sei denn, die Property-Daten sind groß (z. B. ein Byte-Array mit einer Größe von 1.000 Byte) und belegen viel Arbeitsspeicher für das Caching.
(Neu in Android 16)
hasSupportedValueInfo
  • Wenn nicht null, gibt an, ob für diese Property Mindest- oder Höchstwerte oder eine Liste der unterstützten Werte angegeben ist.
  • In diesem Feld wird festgelegt, ob die APIs für dynamische unterstützte Werte getMinMaxSupportedValue, getSupportedValuesLists, subscribeSupportedValueChange und unsubscribeSupportedValueChange für diese Property-ID und Gebiets-ID unterstützt werden.
  • Andernfalls muss VHAL diese APIs für diese Property-ID und Gebiets-ID implementieren.null
  • Wenn null oder Android 15 oder niedriger verwendet wird, werden dynamisch unterstützte Werte für diese Property-ID und Gebiets-ID nicht unterstützt. Der Kunde muss die in der Konfiguration der Fahrzeugeigenschaft angegebenen Informationen zu statisch unterstützten Werten verwenden.

Gebietstypen

In VehicleArea.aidl als Enumerationen definiert. Die unterstützten Gebietstypen sind unten aufgeführt.

Gebietstyp Wert Beschreibung
GLOBAL 0x01000000 Diese Property ist eine globale Property und hat keine verschiedenen Bereiche.
WINDOW 0x03000000 Fensterbasierter Bereich, verwendet VehicleAreaWindow-Enum.
MIRROR 0x04000000 Gebiet basierend auf Spiegeln, verwendet VehicleAreaMirror-Enum.
SEAT 0x05000000 Bereich basierend auf Sitzplätzen, verwendet VehicleAreaSeat-Enum.
DOOR 0x06000000 Bereich basierend auf Türen, verwendet VehicleAreaDoor-Enum.
WHEEL 0x07000000 Fläche basierend auf Rädern, verwendet VehicleAreaWheel-Enum.

Für jede Zoneneigenschaft muss ein vordefinierter Gebietstyp verwendet werden. Für jeden Gebietstyp gibt es eine Reihe von Bitflags, die in einem Enum für den Gebietstyp definiert sind. Für den Bereich „SEAT“ sind beispielsweise VehicleAreaSeat Enum-Typen 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 Properties werden über Gebiets-IDs adressiert. Jede Zoneneigenschaft kann eine oder mehrere Gebiets-IDs unterstützen. Eine Regions-ID besteht aus einem oder mehreren Flags aus dem entsprechenden Enum. Für eine Property mit VehicleAreaSeat können beispielsweise die folgenden Gebiets-IDs verwendet werden:

Artikel Beschreibung
ROW_1_LEFT | ROW_1_RIGHT Die Zonen-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.