Proprietà speciali

Proprietà fornitore

Per soddisfare le esigenze specifiche dei partner, VHAL consente le proprietà del fornitore a cui si accede solo tramite le API di sistema. Segui queste indicazioni quando lavori con le proprietà del fornitore:

  • Cerca sempre di utilizzare prima le proprietà di sistema. Le proprietà del fornitore devono essere utilizzate come ultima risorsa quando nessuna delle proprietà di sistema soddisfa i tuoi requisiti.
  • Per evitare la frammentazione dell'ecosistema, le proprietà del fornitore non devono essere utilizzate per replicare le proprietà del veicolo che esistono già nell'SDK VehiclePropertyIds. Per saperne di più, consulta la sezione 2.5, Requisiti per il settore automobilistico nel CDD.
  • Utilizza i seguenti campi per generare l'ID proprietà:
    • Il gruppo VehiclePropertyGroup:VENDOR VENDOR viene utilizzato solo per le proprietà del fornitore.
    • VehicleArea Seleziona un tipo di area appropriato.
    • VehiclePropertyType Seleziona il tipo di dati corretto. Il tipo BYTES consente di passare dati non elaborati, il che è sufficiente nella maggior parte dei casi. L'invio frequente di big data tramite le proprietà del fornitore può rallentare l'accesso all'intera rete del veicolo. Fai attenzione quando aggiungi un payload di grandi dimensioni.
    • Property ID Scegli un ID univoco di due byte per la proprietà del fornitore. Ad esempio, 0x1234.
  • Compila VehiclePropConfig.configString con una breve descrizione della proprietà del fornitore. In questo modo, gli strumenti di controllo della validità possono segnalare la replica accidentale delle proprietà esistenti dei veicoli. Ad esempio, "La mia proprietà personalizzata per XYZ".
  • Accesso tramite CarPropertyManager (per i componenti Java) o tramite libvhalclient (per quelli nativi). Non modificare altre API per auto, in quanto ciò potrebbe causare problemi di compatibilità futuri.

Autorizzazione per le proprietà del fornitore

L'autorizzazione predefinita per qualsiasi proprietà del fornitore definita è android.car.Car.PERMISSION_VENDOR_EXTENSION. Per un controllo più granulare delle autorizzazioni, supporta la proprietà SUPPORT_CUSTOMIZE_VENDOR_PERMISSION. Questa proprietà STATIC è di sola lettura e il relativo array di configurazione specifica le autorizzazioni per le proprietà del fornitore. configArray è impostato come segue (i è un numero intero che inizia da 0):

  • configArray[3 * i] propId, l'ID proprietà della proprietà del fornitore.
  • configArray[3 * i + 1] Un enum in VehicleVendorPermission.aidl per indicare l'autorizzazione a leggere il valore della proprietà.
  • configArray[3 * i + 2] Un'enumerazione in VehicleVendorPermission.aidl per indicare l'autorizzazione a scrivere il valore della proprietà.

Ad esempio, il seguente array di configurazione configura due proprietà del fornitore, vendor_prop_1 e vendor_prop_2, in modo che abbiano le autorizzazioni:

  • vendor_prop_1 richiede android.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_SEAT per leggere, android.car.hardware.property.VehicleVendorPermission.PERMISSION_SET_CAR_VENDOR_CATEGORY_SEAT per scrivere.
  • vendor_prop-2 richiede android.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_INFO per la lettura e non è scrivibile per le app per Android.
configArray = {
  PERMISSION_SET_VENDOR_CATEGORY_SEAT
    vendor_prop_2, PERMISSION_GET_VENDOR_CATEGORY_INFO, PERMISSION_NOT_ACCESSIBLE
}

Le proprietà del fornitore non presenti in questo array acquisiscono l'autorizzazione predefinita del fornitore. Quando PERMISSION_NOT_ACCESSIBLE è selezionato, le app per Android non possono accedere alla proprietà. Nell'esempio, le app per Android non possono scrivere un valore per vendor_prop_2. Solo i client VHAL nativi possono scrivere in questa proprietà.

Sistemi avanzati di assistenza alla guida (ADAS)

Consulta Proprietà del veicolo ADAS.

SEAT e STEERING

Vedi Proprietà di sedile e volante.

Climatizzazione

Puoi utilizzare VHAL per controllare l'impianto di climatizzazione impostando le proprietà correlate. La maggior parte delle proprietà HVAC sono associate a particolari aree del veicolo, anche se diverse sono proprietà globali. Le proprietà definite di esempio includono:

Proprietà Finalità
HVAC_TEMPERATURE_SET Imposta la temperatura in base all'ID zona.
HVAC_POWER_ON Lo stato di alimentazione dell'impianto di climatizzazione per ID area.

Per le proprietà dell'impianto di climatizzazione che dipendono dallo stato di alimentazione dell'impianto, devono essere elencate nell'array di configurazione HVAC_POWER_ON. Per visualizzare un elenco completo delle proprietà di climatizzazione, cerca HVAC_* in VehicleProperty.aidl, consulta Proprietà di sistema supportate. proprietà.

Regole per il mapping delle proprietà HVAC di tipo VehicleArea non GLOBAL agli AreaID: Ogni "area" per un tipo VehicleArea specifico interessato dalla proprietà deve essere incluso in un ID area per quella proprietà. I regolatori di temperatura sono assegnati ai sedili che "influenzano" maggiormente, ma ogni sedile interessato deve essere incluso esattamente una volta. L'assegnazione del sedile posteriore centrale all'AreaID sinistra o destra potrebbe sembrare arbitraria, ma l'inclusione di ogni sedile interessato in esattamente un'AreaID garantisce che i sedili dell'auto siano tutti espressi e che sia disponibile un modo ragionevole per agire su ogni sedile.

Esempio 1

Un'auto ha due sedili anteriori (ROW_1_LEFT, ROW_1_RIGHT) e tre sedili posteriori (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT). Ci sono due unità di controllo della temperatura, una per il lato del conducente e una per il lato del passeggero. Un insieme di mappatura valido di AreaID per HVAC_TEMPERATURE_SET sarebbe un array di due elementi:

  • ROW_1_LEFT | ROW_2_LEFT
  • ROW_1_RIGHT | ROW_2_CENTER | ROW_2_RIGHT

Una mappatura alternativa per la stessa configurazione hardware potrebbe essere:

  • ROW_1_LEFT | ROW_2_CENTER | ROW_2_LEFT
  • ROW_1_RIGHT | ROW_2_RIGHT

Esempio 2

Un'auto ha tre file di sedili con due sedili nella prima fila (ROW_1_LEFT, ROW_1_RIGHT) e tre sedili nella seconda (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT) e nella terza fila (ROW_3_LEFT, ROW_3_CENTER, ROW_3_RIGHT). Ci sono tre unità di controllo della temperatura, una per il lato guida, il lato passeggero e la parte posteriore. Un modo ragionevole per mappare HVAC_TEMPERATURE_SET agli AreaID è un array di tre elementi:

  • ROW_1_LEFT
  • ROW_1_RIGHT
  • ROW_2_LEFT | ROW_2_CENTER | ROW_2_RIGHT | ROW_3_LEFT | ROW_3_CENTER | ROW_3_RIGHT

Esempio 3

Un'auto ha due sedili anteriori (ROW_1_LEFT, ROW_1_RIGHT) e tre sedili posteriori (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT). Supponiamo che l'auto supporti HVAC_AUTO_ON solo per i due sedili anteriori. Un insieme di mappatura valido di AreaID per HVAC_AUTO_ON sarebbe un singolo array di elementi:

  • ROW_1_LEFT | ROW_1_RIGHT

Se HVAC_AUTO_ON avesse due unità di controllo separate per il lato conducente e il lato passeggero, una mappatura alternativa sarebbe un array di due elementi:

  • ROW_1_LEFT
  • ROW_1_RIGHT

INFO_EXTERIOR_DIMENSIONS

Le dimensioni esterne di un veicolo sono misurate in millimetri, come illustrato nella Figura 1.

Figura 1. Dimensioni esterne del veicolo, vista frontale.
Figura 2. Dimensioni esterne del veicolo, vista laterale.

Utilizza le proprietà descritte in questa tabella per definire le dimensioni esterne di un veicolo.

Proprietà del veicolo Campo VHAL Descrizione
Altezza int32Values[0] Distanza verticale tra il terreno e il punto più alto del veicolo. Ciò presuppone ruote di fabbrica normalmente gonfiate.
Lunghezza int32Values[1] Distanza orizzontale tra i punti più esterni della parte anteriore e posteriore del veicolo.
Larghezza, specchietti esclusi int32Values[2] Distanza orizzontale tra i due punti più esterni su ciascun lato del veicolo, esclusi gli specchietti laterali.
Larghezza, specchietti inclusi int32Values[3] Distanza orizzontale tra i due punti più esterni su ciascun lato del veicolo, inclusi gli specchietti laterali.
Interasse int32Values[4] Distanza tra il centro delle ruote anteriori e posteriori del veicolo.
Larghezza carreggiata anteriore int32Values[5] Distanza tra la ruota anteriore, misurata dalla linea centrale di un battistrada alla linea centrale del battistrada opposto.
Larghezza carreggiata posteriore int32Values[6] Distanza tra la ruota posteriore, misurata dalla linea centrale di un battistrada alla linea centrale del battistrada opposto.
Diametro di sterzata da marciapiede a marciapiede int32Values[7] Il diametro del cerchio formato dalle ruote esterne del veicolo quando effettua una svolta completa con il volante completamente bloccato.

Conformità al Regolamento generale sulla sicurezza dell'Unione Europea

Se il veicolo deve rispettare i requisiti del Regolamento generale sulla sicurezza (GSR) dell'Unione Europea tramite Android, la proprietà GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT deve essere supportata. Un esempio di caso d'uso è GSR-ISA (Intelligent Speed Assist) come definito nel regolamento UE 2019/2144. Questa proprietà viene aggiunta in AIDL VHAL a partire da Android 13, ma è supportata in Car Service dal rilascio di Android 12. Questa proprietà è definita come proprietà di tipo intero globale statica di sola lettura, con valori possibili definiti dall'enumerazione GsrComplianceRequirementType:

Nome Valore Descrizione
GSR_COMPLIANCE_NOT_REQUIRED 0 La conformità al GSR non è obbligatoria
GSR_COMPLIANCE_REQUIRED_V1 1 La conformità al GSR è obbligatoria e la versione della soluzione richiesta è 1.

Per supportare questa proprietà in HIDL VHAL (in Android 12), i fornitori devono codificare l'ID proprietà. Ad esempio, lo snippet seguente mostra come è supportato nell'HIDL di riferimento 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}},
}

Per supportare questa proprietà in AIDL VHAL (a partire da Android 13), i fornitori possono utilizzare l'ID proprietà di VehicleProperty.h e l'enum di GsrComplianceRequirementType.h. Ad esempio, come nel riferimento AIDL VHAL DefaultProperties.json:

{
  "property": "VehicleProperty::GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT",
  "defaultValue": {
    "int32Values": [
      "GsrComplianceRequirementType::GSR_COMPLIANCE_REQUIRED_V1"
    ]
  }
}

Per leggere questa proprietà da un'app per Android, utilizza CarPropertyManager.getIntProperty.