Configurations des propriétés
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Chaque propriété acceptée est spécifiée par une configuration de propriété définie par la structure VehiclePropConfig
et comporte les champs suivants.
Champ |
Description |
---|
prop |
ID de la propriété. Il doit s'agir de l'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 d'un OR bit à bit des champs suivants (de droite à gauche) :
- (0x00000000) 16 bits : ID unique compris entre 0x0100 et 0xffff.
- (0x00000000) 8 bits : types de propriété qui définissent le type de la propriété.
- (0x00000000) 4 bits : types de zones.
- (0x00000000) 4 bits :
VehiclePropertyGroup est SYSTEM
(0x10000000) ou VENDOR (0x20000000). Consultez 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 à 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 et documentés dans
VehicleProperty.aidl .
- Pour les propriétés dont l'accès est défini par zone, il s'agit du sous-ensemble maximal de l'accès par zone. Par exemple, si les propriétés comportent 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 quand la valeur change. CONTINUOUS signifie que la valeur de la propriété change en permanence 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 acceptés 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 VHAL. Il n'est pas nécessaire de prendre en charge tous les taux d'échantillonnage compris entre les valeurs minimale et maximale. |
Types de propriétés
Définies comme des énumérations dans VehiclePropertyType.aidl
. Les types de propriétés acceptés sont listés dans le tableau ci-dessous.
Type de propriété |
Valeur |
Description |
---|
STRING |
0x00100000 |
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é longue, utilise le premier élément du champ int64Values dans Valeur de la propriété du véhicule. |
INT64_VEC |
0x00510000 |
La propriété Long[] utilise les éléments du champ int64Values dans 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 Valeur de la propriété du véhicule. |
BYTES |
0x00700000 |
La propriété byte[] utilise les éléments du champ byteValues dans 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 mis en forme comme suit :
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é a 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 géographiques acceptées). Chaque configuration d'ID de zone comporte les champs suivants.
Champ |
Description |
---|
areaId |
ID de cette zone. Consultez ID de zone. |
minInt32Value et maxInt32Value |
- Valeur minimale et maximale facultative pour les propriétés de type INT32 au moment du démarrage. Doit être défini sur 0 pour tous les autres types. Ignoré si les deux valeurs sont nulles.
- 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 changera pas même si la valeur minimale ou maximale change au moment de l'exécution. Implémentez
IVehicle#getMinMaxSupportedValue pour une valeur minimale ou maximale dynamique.
|
minInt64Value et maxInt64Value |
- Valeur minimale et maximale facultative pour les propriétés de type INT64 au moment du démarrage. Doit être défini sur 0 pour tous les autres types. Ignoré si les deux valeurs sont nulles.
- 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 changera pas même si la valeur minimale ou maximale change au moment de l'exécution. Implémentez
IVehicle#getMinMaxSupportedValue pour une valeur minimale ou maximale dynamique.
|
minFloatValue et maxFloatValue |
- Valeur minimale et maximale facultative pour les propriétés de type Float au moment du démarrage. Doit être défini sur 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 changera pas même si la valeur minimale ou maximale change au moment de l'exécution. Implémentez
IVehicle#getMinMaxSupportedValue pour une valeur minimale ou maximale dynamique.
|
(Nouveauté d'Android 14)
supportedEnumValues |
- Liste facultative des valeurs acceptées au moment du démarrage si la propriété est définie comme une propriété de type enum. Si aucune valeur n'est spécifiée (champ vide) ou si la version d'Android est antérieure à la version 14, toutes les valeurs d'énumération sont considérées comme compatibles.
- Pour une propriété globale, 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 changera pas, même si les valeurs acceptées 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 enum. 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és d'Android 15)
supportVariableUpdateRate |
- Indique si la fréquence d'actualisation variable est prise en charge. Cela ne s'applique qu'aux propriétés continues.
- Si la valeur est
true , l'application peut activer la fréquence de mise à jour variable pour un abonnement afin de recevoir des événements de mise à jour de propriété uniquement lorsque la valeur de la propriété change (ce qui revient à traiter les propriétés continues comme des propriétés de changement).
- Si tous les abonnés d'une propriété activent la fréquence de mise à jour variable, la demande d'abonnement à VHAL active la fréquence de mise à jour variable pour la propriété, et VHAL doit envoyer des événements de mise à jour de la propriété uniquement lorsque la valeur de la propriété change.
- Si un abonné demande une fréquence de mise à jour fixe, la demande d'abonnement à VHAL désactive la fréquence de mise à jour variable pour la propriété, et AAOS filtre les événements en double pour les clients qui demandent une fréquence de mise à jour variable.
- Il est FORTEMENT RECOMMANDÉ de prendre en charge une fréquence de mise à jour variable pour toutes les propriétés continues autres que les battements 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 la mise en cache.
|
(Nouveautés 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 dynamiques acceptées :
getMinMaxSupportedValue , getSupportedValuesLists , subscribeSupportedValueChange , unsubscribeSupportedValueChange sont acceptées pour cet ID de propriété et cet ID de zone.
- Si la valeur 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, les valeurs dynamiques acceptées pour cet ID de propriété et cet ID de zone ne sont pas acceptées. Le client doit utiliser les informations sur les valeurs statiques acceptées fournies dans la configuration des propriétés du véhicule.
|
Types de zones
Définies comme des énumérations dans VehicleArea.aidl
. Les types de zones acceptés sont listés ci-dessous.
Type de zone |
Valeur |
Description |
---|
GÉNÉRAL |
0x01000000 |
Cette propriété est globale et 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 les 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 de zone prédéfini. Chaque type de zone possède un ensemble d'indicateurs binaires définis dans un enum pour le type de zone. 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 traitées à l'aide d'ID de zone. Chaque propriété zonée peut accepter 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.