Configurazioni delle proprietà

Ogni proprietà supportata è specificata da una configurazione della proprietà definita tramite la struttura VehiclePropConfig e ha i seguenti campi.

Campo Descrizione
prop

L'ID proprietà. Deve essere una delle proprietà di sistema definite in VehicleProperty.aidl o una proprietà del fornitore. L'ID proprietà viene creato utilizzando l'operatore OR bit a bit dei seguenti campi (da destra a sinistra):

  • (0x00000000) 16 bit: un ID univoco nell'intervallo 0x0100 - 0xffff.
  • (0x00000000) 8 bit: tipi di proprietà che definiscono il tipo di proprietà.
  • (0x00000000) 4 bit: Tipi di area.
  • (0x00000000) 4 bit: VehiclePropertyGroup questo valore è SYSTEM (0x10000000) o VENDOR (0x20000000). Consulta Proprietà del fornitore per le proprietà che puoi personalizzare.

Ad esempio,
INFO_VIN (0x11100100) = UniqueID (0x00000100) | VehiclePropertyType.STRING (0x00100000) | VehicleArea.GLOBAL (0x01000000) | VehiclePropertyGroup.SYSTEM (0x10000000)

access
  • La modalità di accesso alla proprietà. Deve essere uno tra READ, WRITE o READ_WRITE.
  • Per le proprietà di sistema, deve essere una delle modalità di accesso definite documentate in VehicleProperty.aidl.
  • Per le proprietà con accesso per area, questo è il sottoinsieme massimo dell'accesso per area. Ad esempio, se le proprietà hanno due aree il cui accesso è READ e READ_WRITE, questo valore deve essere impostato su READ.
changeMode
  • Modifica la modalità per la proprietà. Deve essere uno tra STATIC, ON_CHANGE o CONTINUOUS. STATIC significa che il valore della proprietà non cambia mai dopo l'avvio del sistema. ON_CHANGE significa che l'HAL del veicolo deve segnalare quando il valore cambia. CONTINUOUS significa che il valore della proprietà cambia continuamente e VHAL deve generare report in base alla frequenza di campionamento dell'abbonamento.
  • Per le proprietà di sistema, questo valore deve essere uguale alla modalità di modifica documentata in VehicleProperty.aidl.
configArray Un array facoltativo per contenere la configurazione specifica della proprietà. Può essere vuoto. Per alcune proprietà di sistema, ad esempio GEAR_SELECTION, l'array di configurazione ha un significato speciale e deve essere specificato.
configString Una stringa facoltativa che contiene la configurazione specifica della proprietà. Può essere vuoto.
minSampleRate e maxSampleRate La frequenza di campionamento minima e massima supportata per la proprietà continua (in Hertz). Non utilizzato se la proprietà non è continua. minSampleRate e maxSampleRate devono essere raggiungibili dall'implementazione di VHAL. Non è necessario supportare tutte le frequenze di campionamento comprese tra il valore minimo e quello massimo.

Tipi di proprietà

Definito come enumerazioni in VehiclePropertyType.aidl. I tipi di proprietà supportati sono elencati nella tabella seguente.

Tipo di proprietà Valore Descrizione
STRING 0x00100000 Proprietà stringa, utilizza il campo stringValue in Valore proprietà veicolo.
BOOLEAN 0x00200000 Boolean utilizza il primo elemento nel campo int32Values in Valore proprietà veicolo. 0 significa false, None 0 significa true.
INT32 0x00400000 Integer utilizza il primo elemento nel campo int32Values in Valore proprietà veicolo.
INT32_VEC 0x00410000 Integer[] utilizza gli elementi nel campo int32Values in Valore proprietà veicolo.
INT64 0x00500000 Proprietà lunga, utilizza il primo elemento nel campo int64Values in Valore proprietà veicolo.
INT64_VEC 0x00510000 Long[] utilizza gli elementi nel campo int64Values in Valore proprietà veicolo.
FLOAT 0x00600000 Float utilizza il primo elemento nel campo floatValues in Valore proprietà veicolo.
FLOAT_VEC 0x00610000 Float[] utilizza gli elementi nel campo floatValues in Valore proprietà veicolo.
BYTES 0x00700000 byte[] utilizza gli elementi nel campo byteValues in Valore proprietà veicolo.
MIXED 0x00e00000 Proprietà di tipo misto. Qualsiasi combinazione di tipi scalari o vettoriali. Il formato esatto deve essere fornito nell'array di configurazione nella configurazione della proprietà.

Per le proprietà di tipo MISTO del fornitore, configArray deve essere formattato in questa struttura:

  • configArray[0], 1 indica che la proprietà ha un valore String
  • configArray[1], 1 indica che la proprietà ha un valore Boolean
  • configArray[2], 1 indica che la proprietà ha un valore Integer
  • configArray[3], il numero indica la dimensione di Integer[] nella proprietà
  • configArray[4], 1 indica che la proprietà ha un valore Long
  • configArray[5], il numero indica la dimensione di Long[] nella proprietà
  • configArray[6], 1 indica che la proprietà ha un valore Float
  • configArray[7], il numero indica la dimensione di Float[] nella proprietà
  • configArray[8], il numero indica la dimensione di byte[] nella proprietà.

Ad esempio, configArray = {1, 1, 1, 3, 0, 0, 0, 0, 0} indica che la proprietà ha un valore String, un valore Boolean, un valore Integer e un array con tre numeri interi.

Configurazione dell'ID area

Ogni configurazione della proprietà può contenere anche un elenco di configurazioni dell'ID area. Questo elenco è facoltativo per le proprietà globali e obbligatorio per le proprietà zonali (proprietà con più aree supportate). Ogni configurazione dell'ID area ha i seguenti campi.

Campo Descrizione
areaId L'ID di questa area. Vedi ID area.
minInt32Value e maxInt32Value
  • Valore minimo e massimo facoltativo per le proprietà di tipo INT32 al momento dell'avvio. Deve essere 0 per tutti gli altri tipi. Ignorato se entrambi sono 0.
  • Per la proprietà globale, se è necessario definire il valore minimo e massimo, deve essere utilizzata una configurazione dell'area con l'ID area 0.
  • Questo valore è statico e non cambia anche se il valore minimo o massimo cambia in fase di runtime. Implementa IVehicle#getMinMaxSupportedValue per il valore minimo o massimo dinamico.
minInt64Value e maxInt64Value
  • Valore minimo e massimo facoltativo per le proprietà di tipo INT64 al momento dell'avvio. Deve essere 0 per tutti gli altri tipi. Ignorato se entrambi sono 0.
  • Per la proprietà globale, se è necessario definire il valore minimo e massimo, deve essere utilizzata una configurazione dell'area con l'ID area 0.
  • Questo valore è statico e non cambia anche se il valore minimo o massimo cambia in fase di runtime. Implementa IVehicle#getMinMaxSupportedValue per il valore minimo o massimo dinamico.
minFloatValue e maxFloatValue
  • Valore minimo e massimo facoltativo per le proprietà di tipo Float al momento dell'avvio. Deve essere 0 per tutti gli altri tipi. Ignorato se entrambi sono 0,0.
  • Per la proprietà globale, se è necessario definire il valore minimo e massimo, deve essere utilizzata una configurazione dell'area con l'ID area 0.
  • Questo valore è statico e non cambia anche se il valore minimo o massimo cambia in fase di runtime. Implementa IVehicle#getMinMaxSupportedValue per il valore minimo o massimo dinamico.
(Novità di Android 14)
supportedEnumValues
  • Elenco facoltativo di valori supportati all'avvio se la proprietà è definita come proprietà di tipo enum. Se non specificato (vuoto) o prima di Android 14, si presume che tutti i valori enum siano supportati.
  • Per la proprietà globale, se è necessario definire i valori enum supportati, deve essere utilizzata una configurazione dell'area con l'ID area 0.
  • Questo valore è statico e non cambierà anche se i valori supportati cambiano in fase di runtime. Implementa IVehicle#getSupportedValuesLists per i valori dinamici supportati.
  • Questo vale solo per le proprietà di tipo enum. Per gli altri tipi, questo campo deve essere vuoto. Per esporre i valori supportati per altri tipi non enum, utilizza IVehicle#getSupportedValuesLists.
(Novità di Android 15)
supportVariableUpdateRate
  • Se la frequenza di aggiornamento delle variabili è supportata. Questo vale solo per le proprietà continue.
  • Se questo valore è true, l'app può attivare la frequenza di aggiornamento variabile per un abbonamento per ricevere eventi di aggiornamento delle proprietà solo quando il valore della proprietà cambia (ovvero trattando le proprietà continue come proprietà di modifica).
  • Se tutti i sottoscrittori di una proprietà attivano la frequenza di aggiornamento variabile, la richiesta di sottoscrizione a VHAL attiva la frequenza di aggiornamento variabile per la proprietà e VHAL deve inviare eventi di aggiornamento della proprietà solo quando il valore della proprietà cambia.
  • Se un abbonato richiede una frequenza di aggiornamento fissa, la richiesta di abbonamento a VHAL disattiva la frequenza di aggiornamento variabile per la proprietà e AAOS filtra gli eventi duplicati per i client che richiedono una frequenza di aggiornamento variabile.
  • È VIVAMENTE CONSIGLIATO supportare la frequenza di aggiornamento variabile per tutte le proprietà continue non heartbeat per prestazioni migliori, a meno che i dati della proprietà non siano di grandi dimensioni (ad esempio, un array di byte di 1 k) e potrebbero occupare una grande quantità di memoria per la memorizzazione nella cache.
(Novità di Android 16)
hasSupportedValueInfo
  • Se non null, indica se questa proprietà specifica valori minimi o massimi supportati o un elenco di valori supportati.
  • Questo campo controlla se le API dei valori supportati dinamici: getMinMaxSupportedValue, getSupportedValuesLists, subscribeSupportedValueChange, unsubscribeSupportedValueChange sono supportate per questo ID proprietà e ID area.
  • In caso contrario, null, VHAL deve implementare queste API per questo ID proprietà e ID area.
  • Se null o in Android 15 o versioni precedenti, i valori dinamici supportati per questo ID proprietà e ID area non sono supportati. Il client deve utilizzare le informazioni sui valori statici supportati fornite nella configurazione della proprietà del veicolo.

Tipi di area

Definito come enumerazioni in VehicleArea.aidl. Di seguito sono elencati i tipi di area supportati.

Tipo di area Valore Descrizione
GLOBALE 0x01000000 Questa proprietà è globale e non ha più aree.
FINESTRA 0x03000000 Area basata sulle finestre, utilizza l'enumerazione VehicleAreaWindow.
MIRROR: 0x04000000 Area basata sugli specchietti, utilizza l'enumerazione VehicleAreaMirror.
SEAT 0x05000000 Area in base ai posti, utilizza l'enumerazione VehicleAreaSeat.
PORTA 0x06000000 Area basata sulle porte, utilizza l'enumerazione VehicleAreaDoor.
RUOTA 0x07000000 Area basata sulle ruote, utilizza l'enumerazione VehicleAreaWheel.

Ogni proprietà suddivisa in zone deve utilizzare un tipo di area predefinito. Ogni tipo di area ha un insieme di bit flag definiti in un'enumerazione per il tipo di area. Ad esempio, l'area SEAT definisce le enumerazioni VehicleAreaSeat:

  • 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
  • ...

ID area

Le proprietà suddivise in zone vengono indirizzate tramite gli ID area. Ogni proprietà suddivisa in zone può supportare uno o più ID area. Un ID area è composto da uno o più flag della rispettiva enumerazione. Ad esempio, una proprietà che utilizza VehicleAreaSeat potrebbe utilizzare i seguenti ID area:

Articolo Descrizione
ROW_1_LEFT | ROW_1_RIGHT L'ID area si applica a entrambi i sedili anteriori.
ROW_2_LEFT Si applica solo al sedile posteriore sinistro.
ROW_2_RIGHT Si applica solo al sedile posteriore destro.

Per saperne di più, consulta la sezione Climatizzazione.