Chaque propriété compatible est spécifiée par une configuration de propriété définie via la structure VehiclePropConfig
et comporte les champs suivants.
Champ |
Description |
---|
prop |
ID de la propriété. Il doit s'agir d'une des propriétés système définies dans VehicleProperty.aidl ou d'une propriété du fournisseur. L'ID de propriété est construit à l'aide de l'opérateur OR de bits des champs suivants (de droite à gauche):
- (0x00000000) 16 bits: ID unique compris dans la plage 0x0100 à 0xffff.
- (0x00000000) 8 bits: types de propriétés qui définit le type de la propriété.
- (0x00000000) 4 bits: Types de zones.
- (0x00000000) 4 bits:
VehiclePropertyGroup Il s'agit de SYSTEM (0x10000000) ou de VENDOR (0x20000000). Consultez la section Propriétés du fournisseur pour connaître les propriétés que vous pouvez personnaliser.
Par exemple :
INFO_VIN (0x11100100) = UniqueID (0x00000100) | VehiclePropertyType.STRING (0x00100000) | VehicleArea.GLOBAL (0x01000000) | VehiclePropertyGroup.SYSTEM (0x10000000)
|
access |
- Mode d'accès de la propriété. Doit être défini sur
READ , WRITE ou READ_WRITE .
- Pour les propriétés système, il doit s'agir de l'un des modes d'accès définis dans
VehicleProperty.aidl .
- Pour les propriétés disposant d'un accès par zone, il s'agit du sous-ensemble maximal de l'accès par zone. Par exemple, si les propriétés disposent de deux zones dont l'accès est
READ et READ_WRITE , cette valeur doit être définie sur READ .
|
changeMode |
- Modifiez le mode de la propriété. Doit être défini sur
STATIC , ON_CHANGE ou CONTINUOUS . STATIC signifie que la valeur de la propriété ne change jamais après le démarrage du système. ON_CHANGE signifie que le VHAL doit signaler lorsque la valeur change. CONTINUOUS signifie que la valeur de la propriété change en continu et que VHAL doit générer des rapports en fonction du taux d'échantillonnage de l'abonnement.
- Pour les propriétés système, cette valeur doit être égale au mode de modification documenté dans
VehicleProperty.aidl .
|
configArray |
Tableau facultatif contenant la configuration spécifique à la propriété. Ce champ peut être vide. Pour certaines propriétés système, par exemple GEAR_SELECTION , le tableau de configuration a une signification particulière et doit être spécifié.
|
configString |
Chaîne facultative contenant la configuration spécifique à la propriété. Ce champ peut être vide. |
minSampleRate et maxSampleRate |
Taux d'échantillonnage minimal et maximal compatible pour la propriété continue (en hertz). Non utilisé si la propriété n'est pas continue. minSampleRate et maxSampleRate doivent être réalisables par l'implémentation de VHAL. Tous les taux d'échantillonnage compris entre les valeurs minimale et maximale ne doivent pas être compatibles. |
Types de propriétés
Définis comme énumérations dans VehiclePropertyType.aidl
. Les types de propriétés compatibles sont répertoriés dans le tableau suivant.
Type de propriété |
Valeur |
Description |
---|
STRING |
0x00100000 |
La propriété de chaîne utilise le champ stringValue dans Valeur de la propriété du véhicule. |
BOOLEAN |
0x00200000 |
La propriété Boolean utilise le premier élément du champ int32Values dans Valeur de la propriété du véhicule.
0 signifie false , None 0 signifie true . |
INT32 |
0x00400000 |
La propriété Integer utilise le premier élément du champ int32Values dans Valeur de la propriété du véhicule. |
INT32_VEC |
0x00410000 |
La propriété Integer[] utilise les éléments du champ int32Values dans Valeur de la propriété du véhicule. |
INT64 |
0x00500000 |
Propriété Long, utilise le premier élément du champ int64Values dans la valeur de la propriété du véhicule. |
INT64_VEC |
0x00510000 |
La propriété Long[] utilise les éléments du champ int64Values dans la valeur de la propriété du véhicule. |
FLOAT |
0x00600000 |
La propriété Float utilise le premier élément du champ floatValues dans Valeur de la propriété du véhicule. |
FLOAT_VEC |
0x00610000 |
La propriété Float[] utilise les éléments du champ floatValues dans la valeur de la propriété du véhicule. |
BYTES |
0x00700000 |
La propriété byte[] utilise les éléments du champ byteValues dans la valeur de la propriété du véhicule. |
MIXED |
0x00e00000 |
Propriété de type mixte. Toute combinaison de types scalaires ou vectoriels. Le format exact doit être fourni dans le tableau de configuration de la propriété.
Pour les propriétés de type MIXED du fournisseur, configArray doit être formaté selon la structure suivante:
configArray[0] , 1 indique que la propriété a une valeur String
configArray[1] , 1 indique que la propriété a une valeur Boolean
configArray[2] , 1 indique que la propriété a une valeur Integer
configArray[3] , le nombre indique la taille de Integer[] dans la propriété
configArray[4] , 1 indique que la propriété a une valeur Long
configArray[5] , le nombre indique la taille de Long[] dans la propriété
configArray[6] , 1 indique que la propriété a une valeur Float
configArray[7] , le nombre indique la taille de Float[] dans la propriété
configArray[8] : le nombre indique la taille de byte[] dans la propriété.
Par exemple, configArray = {1, 1, 1, 3, 0, 0, 0, 0, 0} indique que la propriété possède une valeur String , une valeur Boolean , une valeur Integer et un tableau avec trois entiers.
|
Configuration de l'ID de zone
Chaque configuration de propriété peut également contenir une liste de configurations d'ID de zone. Cette liste est facultative pour les propriétés globales et obligatoire pour les propriétés zonées (propriétés avec plusieurs zones compatibles). Chaque configuration d'identifiant de zone comporte les champs suivants.
Champ |
Description |
---|
areaId |
ID de cette zone. Consultez la section ID de zone. |
minInt32Value et maxInt32Value |
- Valeur minimale et maximale facultative pour les propriétés de type INT32 au démarrage. Doit être 0 pour tous les autres types. Ignoré si les deux valeurs sont égales à 0.
- Pour une propriété globale, si des valeurs minimales et maximales doivent être définies, une configuration de zone avec l'ID de zone 0 doit être utilisée.
- Cette valeur est statique et ne change pas, même si la valeur minimale ou maximale change au moment de l'exécution. Implémentez
IVehicle#getMinMaxSupportedValue pour la valeur minimale ou maximale dynamique.
|
minInt64Value et maxInt64Value |
- Valeur minimale et maximale facultative pour les propriétés de type INT64 au démarrage. Doit être 0 pour tous les autres types. Ignoré si les deux valeurs sont égales à 0.
- Pour une propriété globale, si des valeurs minimales et maximales doivent être définies, une configuration de zone avec l'ID de zone 0 doit être utilisée.
- Cette valeur est statique et ne change pas, même si la valeur minimale ou maximale change au moment de l'exécution. Implémentez
IVehicle#getMinMaxSupportedValue pour la valeur minimale ou maximale dynamique.
|
minFloatValue et maxFloatValue |
- Valeur minimale et maximale facultative pour les propriétés de type Float au démarrage. Doit être 0 pour tous les autres types. Ignoré si les deux valeurs sont égales à 0,0.
- Pour une propriété globale, si des valeurs minimales et maximales doivent être définies, une configuration de zone avec l'ID de zone 0 doit être utilisée.
- Cette valeur est statique et ne change pas, même si la valeur minimale ou maximale change au moment de l'exécution. Implémentez
IVehicle#getMinMaxSupportedValue pour la valeur minimale ou maximale dynamique.
|
(Nouveauté d'Android 14)
supportedEnumValues |
- Liste facultative des valeurs acceptées au démarrage si la propriété est définie comme une propriété de type énumération. Si ce n'est pas le cas (si la valeur est vide) ou avant Android 14, on considère que toutes les valeurs d'énumération sont acceptées.
- Pour les propriétés globales, si des valeurs d'énumération compatibles doivent être définies, une configuration de zone avec l'ID de zone 0 doit être utilisée.
- Cette valeur est statique et ne change pas, même si les valeurs compatibles changent au moment de l'exécution. Implémentez
IVehicle#getSupportedValuesLists pour les valeurs dynamiques acceptées.
- Cela ne s'applique qu'aux propriétés de type énumération. Pour les autres types, ce champ doit être vide.
Pour exposer les valeurs acceptées pour d'autres types non énumérés, utilisez
IVehicle#getSupportedValuesLists .
|
(Nouveauté d'Android 15)
supportVariableUpdateRate |
- Indique si la fréquence de mise à jour variable est prise en charge. Cette règle ne s'applique qu'aux propriétés continues.
- Si la valeur est
true , l'application peut activer le taux de mise à jour variable pour un abonnement afin de ne recevoir des événements de mise à jour de propriété que lorsque la valeur de la propriété change (ce qui traite les propriétés continues comme des propriétés de modification).
- Si tous les abonnés d'une propriété activent le taux de mise à jour variable, la requête d'abonnement à VHAL active le taux de mise à jour variable pour la propriété et VHAL ne doit envoyer des événements de mise à jour de la propriété que lorsque la valeur de la propriété change.
- Si un abonné demande un taux de mise à jour fixe, la requête d'abonnement à VHAL désactive le taux de mise à jour variable pour la propriété et AAOS filtre les événements en double pour les clients qui demandent un taux de mise à jour variable.
- Il est vivement recommandé d'accepter un taux de mise à jour variable pour toutes les propriétés continues autres que le battement de cœur afin d'améliorer les performances, sauf si les données de la propriété sont volumineuses (par exemple, un tableau d'octets de 1 ko) et peuvent occuper une grande quantité de mémoire pour le cache.
|
(Nouveauté d'Android 16)
hasSupportedValueInfo |
- Si la valeur n'est pas
null , indique si cette propriété spécifie des valeurs minimales ou maximales acceptées ou une liste de valeurs acceptées.
- Ce champ indique si les API de valeurs acceptées dynamiques (
getMinMaxSupportedValue , getSupportedValuesLists , subscribeSupportedValueChange et unsubscribeSupportedValueChange ) sont compatibles avec cet ID de propriété et cet ID de zone.
- Si ce n'est pas
null , VHAL doit implémenter ces API pour cet ID de propriété et cet ID de zone.
- Si
null ou Android 15 ou version antérieure est utilisé, les valeurs dynamiques acceptées pour cet ID de propriété et cet ID de zone ne sont pas prises en charge. Le client doit utiliser les informations sur les valeurs statiques compatibles fournies dans la configuration de la propriété du véhicule.
|
Types de zones
Définis comme énumérations dans VehicleArea.aidl
. Vous trouverez ci-dessous la liste des types d'aires acceptés.
Type de zone |
Valeur |
Description |
---|
GÉNÉRAL |
0x01000000 |
Il s'agit d'une propriété globale qui ne comporte pas plusieurs zones. |
WINDOW |
0x03000000 |
Zone basée sur les fenêtres, utilise l'énumération VehicleAreaWindow . |
MIRROR |
0x04000000 |
Zone basée sur les miroirs, utilise l'énumération VehicleAreaMirror . |
SEAT |
0x05000000 |
Zone basée sur le nombre de sièges, utilise l'énumération VehicleAreaSeat . |
DOOR |
0x06000000 |
Zone basée sur les portes, utilise l'énumération VehicleAreaDoor . |
ROUE |
0x07000000 |
Zone basée sur les roues, utilise l'énumération VehicleAreaWheel . |
Chaque propriété zonée doit utiliser un type d'espace prédéfini. Chaque type d'aire possède un ensemble d'indicateurs définis dans un énumérateur pour le type d'aire. Par exemple, la zone SEAT définit les énumérations 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 de zone
Les propriétés zonées sont adressées via des ID de zone. Chaque propriété zonée peut prendre en charge un ou plusieurs ID de zone. Un ID de zone se compose d'un ou de plusieurs indicateurs de son énumération respective. Par exemple, une propriété utilisant VehicleAreaSeat
peut utiliser les ID de zone suivants:
Élément |
Description |
---|
ROW_1_LEFT | ROW_1_RIGHT |
L'ID de zone s'applique aux deux sièges avant. |
ROW_2_LEFT |
S'applique uniquement au siège arrière gauche. |
ROW_2_RIGHT |
S'applique uniquement au siège arrière droit. |
Pour en savoir plus, consultez CVC.