Proprietà speciali

Proprietà del fornitore

Per supportare le esigenze specifiche dei partner, VHAL consente l'accesso alle proprietà del fornitore solo tramite le API di sistema. Attieniti alle linee guida riportate di seguito quando lavori con le proprietà del fornitore:

  • Prova sempre a 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 il veicolo proprietà già esistenti nell'SDK VeicoliPropertyIds. Per saperne di più, consulta la sezione 2.5, Requisiti per i veicoli del 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 i dati non elaborati, che è sufficiente nella maggior parte dei casi. L'invio frequente di big data tramite le proprietà dei fornitori può rallentare l'accesso alla rete dell'intero 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à dei veicoli esistenti. Ad esempio, "La mia proprietà personalizzata per XYZ".
  • Accedi tramite CarPropertyManager (per i componenti Java) o tramite libvhalclient (per i componenti nativi). Non modificare altre API di auto, in quanto ciò potrebbe causare problemi di compatibilità futuri.

Autorizzazione proprietà fornitore

L'autorizzazione predefinita per qualsiasi proprietà definita del fornitore è android.car.Car.PERMISSION_VENDOR_EXTENSION. Per una maggiore granularità delle autorizzazioni supporta la proprietà SUPPORT_CUSTOMIZE_VENDOR_PERMISSION. Questa STATICA è di sola lettura, per cui il relativo array di configurazione specifica le autorizzazioni per le proprietà del fornitore. configArray viene 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'enumerazione 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 di leggere, android.car.hardware.property.VehicleVendorPermission.PERMISSION_SET_CAR_VENDOR_CATEGORY_SEAT di 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 Android.
configArray = {
  PERMISSION_SET_VENDOR_CATEGORY_SEAT
    vendor_prop_2, PERMISSION_GET_VENDOR_CATEGORY_INFO, PERMISSION_NOT_ACCESSIBLE
}

Le proprietà del fornitore non incluse in questo array assumono l'autorizzazione predefinita del fornitore. Quando viene selezionato PERMISSION_NOT_ACCESSIBLE, 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 nativi I client VHAL possono scrivere in questa proprietà.

Sistemi avanzati di assistenza alla guida (ADAS)

Consulta Proprietà dei veicoli ADAS.

SEDILE e STERZO

Vedi Proprietà sedile e volante.

Climatizzazione

Puoi utilizzare il VHAL per controllare l'impianto di climatizzazione impostando le proprietà correlate. La maggior parte delle proprietà HVAC è associata a aree specifiche del veicolo, anche se alcune sono proprietà globali. Ecco alcuni esempi di proprietà definite:

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

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

Regole per mappare proprietà HVAC di tipo VehicleArea non GLOBAL ad AreaID: Ogni "area" di uno specifico tipo di VehicleArea interessato dalla proprietà deve essere incluso in un ID area per quella proprietà. I regolatori della temperatura vengono assegnati ai sedili su cui hanno "maggiore influenza", ma ogni sedile interessato deve essere incluso esattamente una volta. L'assegnazione del sedile posteriore centrale all'AreaID sinistro o destro potrebbe sembrare arbitraria, ma l'inclusione di tutti i sedili interessati in esattamente un AreaID garantisce che i sedili nell'auto siano tutti espressi e che sia disponibile un modo ragionevole per influire 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 lato conducente e lato passeggero. Un set di mappatura di AreaID valido per HVAC_TEMPERATURE_SET sarà un array a due elementi:

  • ROW_1_LEFT | ROW_2_SINISTRA
  • ROW_1_RIGHT | ROW_2_CENTER | ROW_2_RIGHT

Una mappatura alternativa per la stessa configurazione hardware è:

  • ROW_1_LEFT | ROW_2_CENTER | ROW_2_SINISTRA
  • ROW_1_RIGHT | ROW_2_RIGHT

Esempio 2

Un'auto ha tre file di sedili con due posti in prima fila (ROW_1_LEFT, ROW_1_RIGHT) e tre utenze nella seconda (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT) e nella terza fila (ROW_3_LEFT, ROW_3_CENTER, ROW_3_RIGHT). Esistono tre unità di controllo della temperatura, una per lato conducente, lato passeggero e posteriore. Un modo ragionevole per mappareHVAC_TEMPERATURE_SET ad AreaIDs è un array di tre elementi:

  • ROW_1_SINISTRA
  • ROW_1_RIGHT
  • ROW_2_LEFT | ROW_2_CENTER | ROW_2_DESTRA | ROW_3_LEFT | ROW_3_CENTER | ROW_3_DESTRA

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 ID area per HVAC_AUTO_ON è 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 passeggero una mappatura alternativa è un array di due elementi:

  • ROW_1_LEFT
  • ROW_1_DESTRA

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 anteriore.
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 suolo 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, specchi esclusi int32Values[2] Distanza orizzontale tra i due punti più esterni su ciascun lato del veicolo, esclusi gli specchietti laterali.
Larghezza, specchi inclusi int32Values[3] Distanza orizzontale tra i due punti più esterni su ciascun lato del veicolo, inclusi gli specchietti laterali.
Base delle ruote int32Values[4] Distanza tra il centro delle ruote anteriori e posteriori del veicolo.
Carreggiata anteriore int32Values[5] Distanza tra la ruota anteriore, misurata dalla linea di mezzeria di uno pneumatico alla linea di mezzeria dello pneumatico opposto.
Carreggiata posteriore int32Values[6] Distanza tra la ruota posteriore, misurata dalla linea centrale di un battistrada del pneumatico linea centrale del battistrada opposto.
Diametro di svolta da bordo a marciapiede int32Values[7] Il diametro del cerchio tracciato dalle ruote esterne del veicolo quando si effettua una svolta completa con il volante completamente bloccato.

Conformità ai regolamenti generali sulla sicurezza dell'Unione europea

Se il veicolo deve essere conforme ai requisiti del Regolamento generale sulla sicurezza dell'Unione Europea (GSR) tramite Android, la proprietà GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT deve essere supportate. Un esempio di caso d'uso è GSR-ISA (Intelligent Speed Assist) come definito nel Regolamento UE 2019/2144. Questa proprietà è stata aggiunta in AIDL VHAL da Android 13. Tuttavia, è supportata in Car Service sin dal rilascio di Android 12. Questa proprietà è definita come un'istanza una proprietà intera globale statica, con possibili valori definiti da Enum GsrComplianceRequirementType:

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

Per supportare questa proprietà in HIDL VHAL (in Android 12), i fornitori devono codificare l'ID proprietà. Ad esempio, il seguente snippet mostra come questa operazione è supportata nel file 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 (da Android 13), i fornitori possono utilizzare l'ID proprietà di VehicleProperty.h ed enum da GsrComplianceRequirementType.h. Per come in 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, usa CarPropertyManager.getIntProperty