Propriétés spéciales

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 dans VehicleVendorPermission.aidl pour indiquer l'autorisation de lire la valeur de la propriété.
  • configArray[3 * i + 2] : énumération dans VehicleVendorPermission.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 requiert android.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 requiert android.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.

Figure 1. Dimensions de l'extérieur du véhicule, vue de face.
Figure 2. Dimensions de l'extérieur du véhicule, vue latérale.

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