Configurations des propriétés

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.