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 di 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 definisce il tipo di proprietà.
  • (0x00000000) 4 bit: Tipi di aree.
  • (0x00000000) 4 bit: VehiclePropertyGroup può essere SYSTEM (0x10000000) o VENDOR (0x20000000). Consulta Proprietà del fornitore per informazioni sulle 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 per la 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 di cui l'accesso è READ e READ_WRITE, questo valore deve essere impostato su READ.
changeMode
  • Modifica la modalità per la proprietà. Deve essere STATIC, ON_CHANGE o CONTINUOUS. STATIC indica che il valore della proprietà non cambia mai dopo l'avvio del sistema. ON_CHANGE indica che VHAL deve segnalare quando il valore cambia. CONTINUOUS indica che il valore della proprietà cambia continuamente e che VHAL deve generare report in base alla frequenza di campionamento dell'abbonamento.
  • Per le proprietà di sistema, deve essere uguale alla modalità di modifica descritta in VehicleProperty.aidl.
configArray Un array facoltativo per contenere la configurazione specifica della proprietà. Può essere vuoto. Per determinate proprietà di sistema, ad esempio GEAR_SELECTION, l'array config ha un significato speciale e deve essere specificato.
configString Una stringa facoltativa contenente 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 VHAL. Non è necessario supportare tutte le frequenze di campionamento comprese tra il valore minimo e il valore massimo.

Tipi di proprietà

Definiti come enum 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 La proprietà Boolean utilizza il primo elemento del campo int32Values in Valore proprietà veicolo. 0 significa false, None 0 significa true.
INT32 0x00400000 La proprietà Integer utilizza il primo elemento del campo int32Values in Valore proprietà veicolo.
INT32_VEC 0x00410000 La proprietà Integer[] utilizza gli elementi del campo int32Values in Valore proprietà veicolo.
INT64 0x00500000 Proprietà di tipo Long, utilizza il primo elemento del campo int64Values in Valore proprietà veicolo.
INT64_VEC 0x00510000 La proprietà Long[] utilizza gli elementi del campo int64Values in Valore proprietà veicolo.
FLOAT 0x00600000 La proprietà Float utilizza il primo elemento del campo floatValues in Valore proprietà veicolo.
FLOAT_VEC 0x00610000 La proprietà Float[] utilizza gli elementi del campo floatValues in Valore proprietà veicolo.
BYTES 0x00700000 La proprietà byte[] utilizza gli elementi del 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 config nella configurazione della proprietà.

Per le proprietà di tipo MIXED 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 le dimensioni di Integer[] nella proprietà
  • configArray[4], 1 indica che la proprietà ha un valore Long
  • configArray[5], il numero indica le dimensioni di Long[] nella proprietà
  • configArray[6], 1 indica che la proprietà ha un valore Float
  • configArray[7], il numero indica le dimensioni 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 degli ID area. Questo elenco è facoltativo per le proprietà globali e obbligatorio per le proprietà con zone (proprietà con più aree supportate). Ogni configurazione dell'ID area ha i seguenti campi.

Campo Descrizione
areaId L'ID di questa area. Consulta la sezione ID area.
minInt32Value e maxInt32Value
  • Valore minimo e massimo facoltativi per le proprietà di tipo INT32 all'avvio. Deve essere 0 per tutti gli altri tipi. Ignorato se entrambi sono pari a 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 esecuzione. Implementa IVehicle#getMinMaxSupportedValue per il valore minimo o massimo dinamico.
minInt64Value e maxInt64Value
  • Valore minimo e massimo facoltativi per le proprietà di tipo INT64 all'avvio. Deve essere 0 per tutti gli altri tipi. Ignorato se entrambi sono pari a 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 esecuzione. Implementa IVehicle#getMinMaxSupportedValue per il valore minimo o massimo dinamico.
minFloatValue e maxFloatValue
  • Valore minimo e massimo facoltativi per le proprietà di tipo Float all'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 esecuzione. Implementa IVehicle#getMinMaxSupportedValue per il valore minimo o massimo dinamico.
(Novità di Android 14)
supportedEnumValues
  • Elenco facoltativo dei valori supportati all'avvio se la proprietà è definita come proprietà di tipo enumerato. Se non specificato (vuoto) o prima di Android 14, si presume che tutti i valori enumerati siano supportati.
  • Per la proprietà globale, se è necessario definire i valori dell'enum supportati, deve essere utilizzata una configurazione della zona con l'ID zona 0.
  • Questo valore è statico e non cambia anche se i valori supportati cambiano in fase di esecuzione. 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
  • Indica se la frequenza di aggiornamento delle variabili è supportata. Questo vale solo per le proprietà continue.
  • Se il valore è true, l'app può attivare la frequenza di aggiornamento variabile per un abbonamento in modo da ricevere eventi di aggiornamento della proprietà solo quando il valore della proprietà cambia (ovvero tratta le proprietà continue come proprietà on-change).
  • Se tutti gli abbonati di una proprietà attivano la frequenza di aggiornamento variabile, la richiesta di abbonamento 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 clienti che richiedono la frequenza di aggiornamento variabile.
  • È MOLTO CONSIGLIATO supportare la frequenza di aggiornamento variabile per tutte le proprietà continue non heartbeat per migliorare le prestazioni, a meno che i dati della proprietà non siano di grandi dimensioni (ad esempio, un array di byte di 1 KB) e potrebbero occupare una grande quantità di memoria per la memorizzazione nella cache.
(Novità di Android 16)
hasSupportedValueInfo
  • Se non è null, mostra se questa proprietà specifica valori supportati minimi o massimi o l'elenco dei valori supportati.
  • Questo campo controlla se le API di valore supportate dinamiche: 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 Android 15 o versioni precedenti, i valori supportati dinamici per questo ID proprietà e ID area non sono supportati. Il cliente deve utilizzare le informazioni sui valori supportati statici fornite nella configurazione della proprietà del veicolo.

Tipi di aree

Definiti come enum in VehicleArea.aidl. Di seguito sono elencati i tipi di aree supportati.

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

Ogni proprietà con zone deve utilizzare un tipo di area predefinito. Ogni tipo di area ha un insieme di bit flag definiti in un enum per il tipo di area. Ad esempio, l'area SEAT definisce 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 aree

Le proprietà con zone sono indirizzate tramite ID area. Ogni proprietà con zone può supportare uno o più ID area. Un ID area è costituito da uno o più flag del rispettivo enum. 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 scoprire di più, consulta la sezione Impianti di climatizzazione.