Proprietà speciali

Proprietà del fornitore

Per soddisfare le esigenze specifiche dei partner, il VHAL consente le proprietà dei fornitori a cui si accede 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 dovrebbero essere usate come ultima risorsa se nessuna delle proprietà di sistema soddisfa il requisito.
  • 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 ulteriori informazioni, consulta la Sezione 2.5, Automotive requirements del CDD.
  • Utilizza i seguenti campi per generare l'ID proprietà:
    • VehiclePropertyGroup:VENDOR Il gruppo VENDOR viene utilizzato solo per le proprietà dei fornitori.
    • VehicleArea Seleziona un tipo di area appropriato.
    • VehiclePropertyType Seleziona il tipo di dati appropriato. il tipo di BYTES consente di trasmettere dati non elaborati, che nella maggior parte dei casi è sufficiente. 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 a due byte univoco per la proprietà del fornitore. Ad esempio, 0x1234.
  • Compila VehiclePropConfig.configString con una breve descrizione del fornitore proprietà. Ciò consente agli strumenti di controllo della validità di segnalare la replica accidentale di proprietà del veicolo. Ad esempio, "La mia proprietà personalizzata per XYZ".
  • Accedi tramite AutoPropertyManager (per componenti Java) o tramite libvhalclient (per gli annunci nativi). Cosa fare non modificare altre API dell'auto in quanto ciò può portare a futuri problemi di compatibilità.

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. Il valore 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'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, per avere le autorizzazioni:

  • vendor_prop_1 richiede android.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_SEAT 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 Android.
configArray = {
  PERMISSION_SET_VENDOR_CATEGORY_SEAT
    vendor_prop_2, PERMISSION_GET_VENDOR_CATEGORY_INFO, PERMISSION_NOT_ACCESSIBLE
}

Le proprietà del fornitore non in questo array ricevono l'autorizzazione del fornitore predefinita. Quando La proprietà PERMISSION_NOT_ACCESSIBLE è selezionata, 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 la sezione Proprietà dei veicoli ADAS.

SEDILE e STERZO

Consulta la sezione Proprietà dei sedili e del volante.

Climatizzazione

Puoi utilizzare VHAL per controllare l'impianto di climatizzazione impostando le proprietà relative all'impianto. La maggior parte delle proprietà di climatizzazione sono associate a determinate aree del veicolo, anche se diverse 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à dell'impianto di 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 la mappatura di 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 di temperatura sono assegnati seggi su cui "influenzano" maggiormente, ma ogni utenza interessata deve essere inclusa una volta sola. L'assegnazione del sedile posteriore centrale ad AreaID sinistro o destro potrebbe sembrare arbitraria, ma l'inclusione di tutte le utenze interessate in un solo AreaID garantisce che le utenze in auto sono tutti espressi e che è disponibile un modo ragionevole per influire su ogni posto.

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_DESTRA | ROW_2_CENTER | ROW_2_DESTRA

Una mappatura alternativa per la stessa configurazione hardware potrebbe essere:

  • ROW_1_LEFT | ROW_2_CENTER | ROW_2_SINISTRA
  • ROW_1_DESTRA | ROW_2_DESTRA

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). Ci sono tre unità di controllo della temperatura, una per lato conducente, lato passeggero e posteriore. Un modo ragionevole per mappare Da HVAC_TEMPERATURE_SET ad AreaIDs è un array di tre elementi:

  • ROW_1_SINISTRA
  • ROW_1_DESTRA
  • 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 posti anteriori. Un insieme di mappatura valido di ID area per HVAC_AUTO_ON è un singolo array di elementi:

  • ROW_1_LEFT | ROW_1_DESTRA

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_SINISTRA
  • ROW_1_DESTRA

Conformità alle normative generali di 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 caso d'uso di esempio è GSR-ISA (Intelligent Speed Assist), come definito nell'UE Regolamento 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à a GSR non è obbligatoria
GSR_COMPLIANCE_REQUIRED_V1 1 La conformità GSR è obbligatoria e la versione della soluzione del requisito è 1.

Per supportare questa proprietà in HIDL VHAL (in Android 12), i fornitori devono impostare l'ID proprietà come hardcoded. 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