Propriétés du fournisseur
Pour répondre aux besoins spécifiques des partenaires, la VHAL autorise les propriétés du fournisseur qui ne sont accessibles que par le biais des API système. Suivez les consignes ci-dessous lorsque vous utilisez des propriétés de fournisseur :
- Essayez toujours d'utiliser d'abord les propriétés système. Les propriétés du fournisseur ne doivent être utilisées qu'en dernier recours, lorsqu'aucune des propriétés système ne répond à vos besoins.
- Pour éviter la fragmentation de l'écosystème, les propriétés du fournisseur ne doivent pas être utilisées pour répliquer les propriétés du véhicule qui existent déjà dans VehiclePropertyIds du SDK. Pour en savoir plus, consultez la section 2.5, Exigences pour l'automobile du CDD.
- Utilisez les champs suivants pour générer l'ID de propriété :
- Le groupe
VehiclePropertyGroup:VENDOR
VENDOR n'est utilisé que pour les propriétés des fournisseurs. VehicleArea
Sélectionnez un type de zone approprié.VehiclePropertyType
Sélectionnez le type de données approprié. Le type BYTES permet de transmettre des données brutes, ce qui est suffisant dans la plupart des cas. L'envoi fréquent de big data via des propriétés de fournisseur peut ralentir l'accès à l'ensemble du réseau du véhicule. Soyez prudent lorsque vous ajoutez une charge utile importante.Property ID
Choisissez un ID unique de deux octets pour la propriété du fournisseur. Par exemple, 0x1234.
- Le groupe
- Remplissez
VehiclePropConfig.configString
avec une brève description de la propriété du fournisseur. Cela permet aux outils de vérification de la validité de signaler la réplication accidentelle de propriétés de véhicules existantes. Par exemple, "Ma propriété personnalisée pour XYZ". - Accès via CarPropertyManager (pour les composants Java) ou via
libvhalclient
(pour les composants natifs). Ne modifiez pas les autres API de voiture, car cela pourrait entraîner des problèmes de compatibilité à l'avenir.
Autorisation pour les propriétés du fournisseur
L'autorisation par défaut pour toutes les propriétés de fournisseur définies est android.car.Car.PERMISSION_VENDOR_EXTENSION
. Pour un contrôle plus précis des autorisations, prenez en charge la propriété SUPPORT_CUSTOMIZE_VENDOR_PERMISSION
. Cette propriété STATIC est en lecture seule. Son tableau de configuration spécifie les autorisations pour les propriétés du fournisseur.
configArray
est défini comme suit (i est un entier commençant par 0) :
configArray[3 * i]
propId, l'ID de propriété de la propriété du fournisseur.configArray[3 * i + 1]
Enum dansVehicleVendorPermission.aidl
pour indiquer l'autorisation de lire la valeur de la propriété.configArray[3 * i + 2]
: enum dansVehicleVendorPermission.aidl
pour indiquer l'autorisation d'écrire la valeur de la propriété.
Par exemple, le tableau de configuration suivant configure deux propriétés du fournisseur, vendor_prop_1
et vendor_prop_2
, pour qu'elles disposent des autorisations suivantes :
vendor_prop_1
nécessiteandroid.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_SEAT
pour la lecture etandroid.car.hardware.property.VehicleVendorPermission.PERMISSION_SET_CAR_VENDOR_CATEGORY_SEAT
pour l'écriture.vendor_prop-2
nécessiteandroid.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_INFO
pour la lecture et n'est pas accessible en écriture pour les applications Android.
configArray = { PERMISSION_SET_VENDOR_CATEGORY_SEAT vendor_prop_2, PERMISSION_GET_VENDOR_CATEGORY_INFO, PERMISSION_NOT_ACCESSIBLE }
Les propriétés du fournisseur qui ne figurent pas dans ce tableau adoptent l'autorisation par défaut du fournisseur. Lorsque PERMISSION_NOT_ACCESSIBLE
est sélectionné, les applications Android ne peuvent pas accéder à la propriété.
Dans l'exemple, les applications Android ne peuvent pas écrire de valeur pour vendor_prop_2
. Seuls les clients VHAL natifs peuvent écrire dans cette propriété.
Systèmes avancés d'aide à la conduite (ADAS)
Consultez Propriétés des véhicules ADAS.SIÈGE ET DIRECTION
Consultez Propriétés du siège et du volant.
CVC
Vous pouvez utiliser la VHAL pour contrôler le système CVC en définissant les propriétés associées. La plupart des propriétés de CVC sont associées à des zones spécifiques du véhicule, bien que plusieurs soient des propriétés globales. Voici quelques exemples de propriétés définies :
Propriété | Objectif |
---|---|
HVAC_TEMPERATURE_SET |
Définissez la température par ID de zone. |
HVAC_POWER_ON |
État d'alimentation du système CVC par ID de zone. |
Les propriétés CVC qui dépendent de l'état d'alimentation du système CVC doivent être listées dans le tableau de configuration HVAC_POWER_ON
. Pour afficher la liste complète des propriétés CVC, recherchez HVAC_*
dans VehicleProperty.aidl
. Consultez Propriétés système compatibles.
propriétés.
Règles de mappage des propriétés de type HVAC VehicleArea non GLOBAL vers des AreaID :
Chaque "zone" d'un type VehicleArea
spécifique affectée par la propriété doit être incluse dans un ID de zone pour cette propriété. Les régulateurs de température sont attribués aux sièges qu'ils "influencent le plus", mais chaque siège concerné doit être inclus une seule fois.
L'attribution du siège arrière central à l'AreaID de gauche ou de droite peut sembler arbitraire, mais l'inclusion de chaque siège concerné dans un seul AreaID garantit que tous les sièges de la voiture sont exprimés et qu'un moyen raisonnable d'affecter chaque siège est disponible.
Exemple 1
Une voiture comporte deux sièges avant (ROW_1_LEFT, ROW_1_RIGHT) et trois sièges arrière (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT). Il existe deux unités de contrôle de la température, une pour le côté conducteur et une pour le côté passager. Un ensemble de mappage valide d'ID de zone pour HVAC_TEMPERATURE_SET
serait un tableau à deux éléments :
- ROW_1_LEFT | ROW_2_LEFT
- ROW_1_RIGHT | ROW_2_CENTER | ROW_2_RIGHT
Un autre mappage pour la même configuration matérielle serait :
- ROW_1_LEFT | ROW_2_CENTER | ROW_2_LEFT
- ROW_1_RIGHT | ROW_2_RIGHT
Exemple 2
Une voiture comporte trois rangées de sièges : deux à l'avant (ROW_1_LEFT, ROW_1_RIGHT) et trois à l'arrière (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT et ROW_3_LEFT, ROW_3_CENTER, ROW_3_RIGHT). Il existe trois unités de contrôle de la température, une pour le côté conducteur, une pour le côté passager et une pour l'arrière. Une façon raisonnable de mapper HVAC_TEMPERATURE_SET
à AreaIDs est un tableau à trois éléments :
- ROW_1_LEFT
- ROW_1_RIGHT
- ROW_2_LEFT | ROW_2_CENTER | ROW_2_RIGHT | ROW_3_LEFT | ROW_3_CENTER | ROW_3_RIGHT
Exemple 3
Une voiture comporte deux sièges avant (ROW_1_LEFT, ROW_1_RIGHT) et trois sièges arrière (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT). Supposons que la voiture ne prenne en charge HVAC_AUTO_ON que pour les deux sièges avant. Un ensemble de mappage valide d'AreaID pour HVAC_AUTO_ON serait un tableau à un seul élément :
- ROW_1_LEFT | ROW_1_RIGHT
Si HVAC_AUTO_ON
comportait deux unités de contrôle distinctes pour le côté conducteur et le côté passager, un autre mappage serait un tableau à deux éléments :
- ROW_1_LEFT
- ROW_1_RIGHT
INFO_EXTERIOR_DIMENSIONS
Les dimensions extérieures d'un véhicule sont mesurées en millimètres, comme illustré sur la figure 1.


Utilisez les propriétés décrites dans ce tableau pour définir les dimensions extérieures d'un véhicule.
Propriété du véhicule | Champ VHAL | Description |
---|---|---|
Taille | int32Values[0] |
Distance verticale entre le sol et le point le plus haut du véhicule. Cela suppose que les roues d'usine sont normalement gonflées. |
Longueur | int32Values[1] |
Distance horizontale entre les points les plus éloignés de l'avant et de l'arrière du véhicule. |
Largeur, sans les rétroviseurs | int32Values[2] |
Distance horizontale entre les deux points les plus extérieurs de chaque côté du véhicule, à l'exclusion des rétroviseurs latéraux. |
Largeur, rétroviseurs compris | int32Values[3] |
Distance horizontale entre les deux points les plus éloignés de chaque côté du véhicule, y compris les rétroviseurs latéraux. |
Empattement | int32Values[4] |
Distance entre le centre des roues avant et arrière du véhicule. |
Largeur de la voie avant | int32Values[5] |
Distance entre les roues avant, mesurée de la ligne centrale de la bande de roulement d'un pneu à la ligne centrale de la bande de roulement du pneu opposé. |
Largeur de la voie arrière | int32Values[6] |
Distance entre les roues arrière, mesurée de la ligne médiane d'une bande de roulement à la ligne médiane de la bande de roulement opposée. |
Diamètre de braquage de trottoir à trottoir | int32Values[7] |
Diamètre du cercle formé par les roues extérieures du véhicule lorsqu'il effectue un tour complet avec le volant complètement bloqué. |
Conformité avec la réglementation générale de sécurité de l'Union européenne
Si le véhicule doit respecter les exigences du Règlement général sur la sécurité (GSR) de l'Union européenne via Android, la propriété GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT
doit être prise en charge. Un exemple de cas d'utilisation est GSR-ISA (Intelligent Speed Assist) tel que défini dans le règlement UE 2019/2144. Cette propriété est ajoutée dans AIDL VHAL à partir d'Android 13, mais elle est prise en charge dans Car Service depuis la sortie d'Android 12. Cette propriété est définie comme une propriété entière globale statique en lecture seule, avec des valeurs possibles définies par l'énumération GsrComplianceRequirementType
:
Nom | Valeur | Description |
---|---|---|
GSR_COMPLIANCE_NOT_REQUIRED |
0 | La conformité au GSR n'est pas requise |
GSR_COMPLIANCE_REQUIRED_V1 |
1 | La conformité au GSR est obligatoire et la version de la solution requise est 1. |
Pour prendre en charge cette propriété dans HIDL VHAL (dans Android 12), les fournisseurs doivent coder en dur l'ID de propriété.
Par exemple, l'extrait suivant montre comment cela est pris en charge dans le DefaultConfig.h
VHAL HIDL de référence :
{ .config = { // GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT .prop = 0x11400F47, .access = VehiclePropertyAccess::READ, .changeMode = VehiclePropertyChangeMode::STATIC, }, // GsrComplianceRequirementType::GSR_COMPLIANCE_REQUIRED_V1 .initialValue = {.int32Values = {1}}, }
Pour prendre en charge cette propriété dans AIDL VHAL (à partir d'Android 13), les fournisseurs peuvent utiliser l'ID de propriété de VehicleProperty.h
et l'enum de GsrComplianceRequirementType.h
. Par exemple, comme dans la référence AIDL VHAL DefaultProperties.json
:
{ "property": "VehicleProperty::GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT", "defaultValue": { "int32Values": [ "GsrComplianceRequirementType::GSR_COMPLIANCE_REQUIRED_V1" ] } }
Pour lire cette propriété à partir d'une application Android, utilisez CarPropertyManager.getIntProperty
.
- Dans Android 13 et versions ultérieures, utilisez
VehiclePropertyIds.GENERAL_SAFETY_REGULATION_COMPLIANCE
comme ID de propriété. - Dans Android 12, utilisez la valeur codée en dur 0x11400F47 comme ID de propriété. Cette propriété nécessite l'autorisation
Car#PERMISSION_CAR_INFO
.