Propriétés du fournisseur
Pour répondre aux besoins spécifiques des partenaires, le VHAL autorise les propriétés de fournisseurs accessibles uniquement via des API système. Respectez les consignes suivantes lorsque vous utilisez les propriétés de fournisseur:
- Essayez toujours d'utiliser d'abord les propriétés système (les propriétés du fournisseur doivent être utilisées en dernier recours). si aucune des propriétés système ne répond à vos besoins.
- Pour éviter la fragmentation de l'écosystème, les propriétés des fournisseurs ne doivent pas être utilisées pour reproduire le véhicule propriétés qui existent déjà dans le SDK VehiclePropertyIds Pour en savoir plus, consultez la section 2.5, Exigences relatives aux automobiles, dans le CDD.
- Utilisez les champs suivants pour générer l'ID de propriété:
<ph type="x-smartling-placeholder">
- </ph>
VehiclePropertyGroup:VENDOR
groupe FOURNISSEURs n'est utilisé que pour les propriétés de fournisseur.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. Envoyer fréquemment du big data via les propriétés des fournisseurs peut ralentir tout l'accès au réseau du véhicule. Soyez prudent lorsque vous ajoutez une charge utile volumineuse.Property ID
Choisissez un ID unique sur deux octets pour la propriété du fournisseur. Par exemple, 0x1234.
- Renseignez
VehiclePropConfig.configString
avec une brève description du fournisseur. . Les outils de vérification de la validité peuvent ainsi signaler la réplication accidentelle des propriétés du véhicule. Par exemple, "Ma propriété personnalisée pour XYZ". - Accès via
CarPropertyManager
(pour les composants Java) ou via le
libvhalclient
(pour les annonces natives). À faire modifier d'autres API pour voitures, car cela pourrait entraîner de futurs problèmes de compatibilité.
Autorisation des 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 affiner la précision des autorisations
sont compatibles avec la propriété SUPPORT_CUSTOMIZE_VENDOR_PERMISSION
. Ce STATIQUE
est en lecture seule, pour laquelle son tableau de configuration spécifie les autorisations pour les propriétés du fournisseur.
configArray
est défini comme suit (i correspond à un entier commençant à 0):
configArray[3 * i]
propId, l'ID de la propriété du fournisseur.configArray[3 * i + 1]
: énumération dansVehicleVendorPermission.aidl
pour indiquer l'autorisation de lire la valeur de la propriété.configArray[3 * i + 2]
: énumération 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 de fournisseur :
vendor_prop_1
et vendor_prop_2
, pour disposer des autorisations:
vendor_prop_1
requiertandroid.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_SEAT
à lire,android.car.hardware.property.VehicleVendorPermission.PERMISSION_SET_CAR_VENDOR_CATEGORY_SEAT
à écrire.vendor_prop-2
requiertandroid.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_INFO
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 de fournisseur qui ne figurent pas dans ce tableau utilisent l'autorisation de fournisseur par défaut. Quand ?
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
. Native uniquement
Les clients VHAL peuvent écrire dans cette propriété.
Systèmes avancés d'aide à la conduite (ADAS)
Consultez la section Propriétés des véhicules équipés d'ADAS.SIège et Direction
Consultez la section Propriétés du siège et du volant.
CVC
Vous pouvez utiliser le VHAL pour contrôler le système CVC en définissant des propriétés liées au système CVC. La plupart des systèmes CVC sont associées à des zones spécifiques du véhicule, bien que plusieurs d'entre elles soient des propriétés mondiales. Voici quelques exemples de propriétés définies:
Propriété | Objectif |
---|---|
HVAC_TEMPERATURE_SET |
Régler la température par identifiant de zone |
HVAC_POWER_ON |
État de l'alimentation du système CVC par identifiant de zone. |
Pour les propriétés CVC qui dépendent de l'état de l'alimentation du système CVC, elles doivent être
figurant dans le tableau de configuration HVAC_POWER_ON
. Pour obtenir la liste complète
des propriétés des systèmes CVC,
recherchez HVAC_*
dans VehicleProperty.aidl
, consultez
Propriétés système compatibles
propriétés.
Règles pour mapper les propriétés CVC de type VehicleArea non GLOBAL avec des ID de zone:
Chaque "zone" d'un type de VehicleArea
spécifique affecté par l'établissement doit être
inclus dans l'identifiant de zone de cet établissement. Les régulateurs de température sont associés
des 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,
Toutefois, si tous les sièges sont inclus
dans un seul identifiant de zone,
dans la voiture sont toutes exprimées et qu'une manière raisonnable de modifier chaque siège est disponible.
Exemple 1
Une voiture a 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 chacune.
côté conducteur et côté passager. Un ensemble d'ID de zone valide pour le mappage
HVAC_TEMPERATURE_SET
serait un tableau à deux éléments:
- ROW_1_LEFT | ROW_2_LEFT
- ROW_1_RIGHT | ROW_2_CENTER | ROW_2_DROITE
Voici un autre mappage pour la même configuration matérielle:
- ROW_1_LEFT | ROW_2_CENTER | ROW_2_LEFT
- ROW_1_RIGHT | ROW_2_DROITE
Exemple 2
Une voiture a trois rangées de sièges, dont deux au premier rang (ROW_1_LEFT, ROW_1_RIGHT)
et trois sièges en deuxième (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT) et en troisième ligne
(ROW_3_LEFT, ROW_3_CENTER, ROW_3_RIGHT). Il y a trois unités de contrôle de la température, une pour chacune
le côté conducteur, le côté passager et l'arrière. Une façon raisonnable
de cartographier
HVAC_TEMPERATURE_SET
pour AreaIDs est un tableau à trois éléments:
- ROW_1_LEFT
- ROW_1_DROITE
- ROW_2_LEFT | ROW_2_CENTER | ROW_2_RIGHT | ROW_3_LEFT | ROW_3_CENTER | ROW_3_DROITE
Exemple 3
Une voiture a 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 soit compatible avec le système HVAC_AUTO_ON sur les deux sièges avant. Un ensemble valide d'ID de zone pour le système HVAC_AUTO_ON correspondrait d'éléments:
- ROW_1_LEFT | ROW_1_DROITE
Si HVAC_AUTO_ON
disposait de deux unités de commande distinctes pour le côté conducteur et le passager
un autre mappage serait un tableau à deux éléments:
- ROW_1_LEFT
- ROW_1_DROITE
INFO_EXTERIOR_DIMENSIONS
Les dimensions extérieures d'un véhicule sont mesurées en millimètres, comme illustré dans la figure 1.
Utilisez les propriétés décrites dans ce tableau pour définir l'extérieur 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 élevé du véhicule. Cela suppose normalement gonflées pour les roues d'usine. |
Durée | int32Values[1] |
Distance horizontale entre les points les plus extérieurs de l'avant et de l'arrière du véhicule. |
Largeur, hors miroirs | int32Values[2] |
Distance horizontale entre les deux points les plus extérieurs de chaque côté du véhicule, hors les rétroviseurs latéraux. |
Largeur, miroirs compris | int32Values[3] |
Distance horizontale entre les deux points les plus extérieurs 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] |
La distance entre la roue avant, mesurée entre la ligne centrale d'une bande de pneu et le ligne centrale de la bande de roulement opposée. |
Largeur de la voie, arrière | int32Values[6] |
La distance entre la roue arrière, mesurée entre la ligne centrale d'une bande de pneu et la ligne centrale de la bande de roulement opposée. |
Diamètre de trottoir | int32Values[7] |
Diamètre du cercle formé par les roues extérieures du véhicule lors d'un virage complet avec un volant entièrement verrouillé. |
Conformité avec la réglementation générale de l'Union européenne sur la sécurité
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 pris en charge. C'est le cas, par exemple, de la solution GSR-ISA (Intelligent Speed Assist), telle que définie dans l'UE.
Règlement 2019/2144. Cette propriété est ajoutée dans AIDL VHAL à partir d'Android 13, mais elle est
pris en charge par Car Service depuis la sortie d'Android 12. Cette propriété est définie en lecture seule
propriété d'entier global statique, avec des valeurs possibles définies par
Énumération GsrComplianceRequirementType
:
Nom | Valeur | Description |
---|---|---|
GSR_COMPLIANCE_NOT_REQUIRED |
0 | Conformité avec le GSR non requise |
GSR_COMPLIANCE_REQUIRED_V1 |
1 | La conformité GSR est obligatoire et la version de solution requise est 1. |
Pour prendre en charge cette propriété dans HIDL VHAL (sous 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 HIDL de référence
VHAL
DefaultConfig.h
:
{ .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é
VehicleProperty.h
et énumération de GsrComplianceRequirementType.h
. Pour
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
- Sous Android 13 ou version ultérieure, 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é. Ce
nécessite l'autorisation
Car#PERMISSION_CAR_INFO
.