Proprietà speciali

Proprietà del venditore

Per supportare le esigenze specifiche dei partner, VHAL consente l'accesso alle proprietà del fornitore solo tramite API di sistema. Utilizzare le seguenti linee guida quando si lavora con le proprietà del fornitore:

  • Prova sempre a utilizzare prima le proprietà di sistema, le proprietà del fornitore dovrebbero 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 già esistenti nell'SDK VehiclePropertyIds . Per saperne di più, vedere la Sezione 2.5, Requisiti automobilistici nel CDD.
  • Utilizza i seguenti campi per generare l'ID proprietà:
    • VehiclePropertyGroup:VENDOR Il gruppo VENDOR viene utilizzato solo per le proprietà del fornitore.
    • VehicleArea Selezionare un tipo di area appropriato.
    • VehiclePropertyType Selezionare il tipo di dati corretto. Il tipo BYTES consente il passaggio di dati grezzi, il che è sufficiente nella maggior parte dei casi. L'invio frequente di big data attraverso le proprietà del fornitore può rallentare l'accesso alla rete dell'intero veicolo. Fai attenzione quando aggiungi un grosso carico utile.
    • Property ID Scegli un ID univoco a due byte per la proprietà del fornitore. Ad esempio, 0x1234.
  • Compila VehiclePropConfig.configString con una breve descrizione della proprietà del fornitore. Ciò consente agli strumenti di controllo della validità di segnalare la replica accidentale delle proprietà del veicolo esistente. Ad esempio, "La mia proprietà personalizzata per XYZ".
  • Accesso tramite CarPropertyManager (per componenti Java) o tramite libvhalclient (per nativi). Non modificare le API di altre auto poiché ciò potrebbe causare futuri problemi di compatibilità.

Autorizzazione delle proprietà del venditore

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

  • configArray[3 * i] propId, l'ID 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 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 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 assumono l'autorizzazione del fornitore predefinita. Quando è selezionato PERMISSION_NOT_ACCESSIBLE , le app Android non possono accedere alla proprietà. Nell'esempio, le app Android non possono scrivere un valore per vendor_prop_2 . Solo i client VHAL nativi possono scrivere su questa proprietà.

Sistemi avanzati di assistenza alla guida (ADAS)

Consulta Proprietà veicolo ADAS .

SEDILE e STERZO

Vedere Proprietà del sedile e del volante .

HVAC

È possibile utilizzare VHAL per controllare l'HVAC impostando le proprietà relative all'HVAC. La maggior parte delle proprietà HVAC sono associate ad aree particolari del veicolo, sebbene molte siano proprietà globali. Le proprietà definite del campione includono:

Proprietà Scopo
HVAC_TEMPERATURE_SET Imposta la temperatura per ID area.
HVAC_POWER_ON Lo stato di alimentazione del sistema HVAC per ID area.

Per le proprietà HVAC che dipendono dallo stato di alimentazione del sistema HVAC, devono essere elencate nell'array di configurazione HVAC_POWER_ON . Per visualizzare un elenco completo delle proprietà HVAC, cercare HVAC_* in VehicleProperty.aidl , vedere Proprietà di sistema supportate . proprietà.

Regole per la mappatura delle proprietà HVAC di tipo VehicleArea non GLOBAL sugli AreaID: ogni "area" per un tipo VehicleArea specifico interessato dalla proprietà deve essere inclusa in un ID area per tale proprietà. I termoregolatori vengono assegnati ai posti che "influenzano maggiormente", ma ogni posto 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 ogni posto interessato esattamente in un AreaID garantisce che i posti nell'auto siano tutti espressi e che sia disponibile un modo ragionevole per influenzare ciascun 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). Sono presenti due unità di controllo della temperatura, una per il lato conducente e una per il lato passeggero. Un set di mappatura valido di AreaID per HVAC_TEMPERATURE_SET sarebbe un array di due elementi:

  • RIGA_1_SINISTRA | RIGA_2_SINISTRA
  • RIGA_1_DESTRA | RIGA_2_CENTRO | RIGA_2_DESTRA

Una mappatura alternativa per la stessa configurazione hardware sarebbe:

  • RIGA_1_SINISTRA | RIGA_2_CENTRO | RIGA_2_SINISTRA
  • RIGA_1_DESTRA | RIGA_2_DESTRA

Esempio 2

Un'auto ha tre file di posti con due posti nella prima fila (ROW_1_LEFT, ROW_1_RIGHT) e tre posti nella seconda (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT) e nella terza fila (ROW_3_LEFT, ROW_3_CENTER, ROW_3_RIGHT). Sono presenti tre unità di controllo della temperatura, una per il lato conducente, una per il lato passeggero e una per quella posteriore. Un modo ragionevole per mappare HVAC_TEMPERATURE_SET su AreaID è un array di tre elementi:

  • RIGA_1_SINISTRA
  • RIGA_1_DESTRA
  • RIGA_2_SINISTRA | RIGA_2_CENTRO | RIGA_2_DESTRA | RIGA_3_SINISTRA | RIGA_3_CENTRO | RIGA_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 set di mappatura valido di AreaID per HVAC_AUTO_ON sarebbe un array a elemento singolo:

  • RIGA_1_SINISTRA | RIGA_1_DESTRA

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:

  • RIGA_1_SINISTRA
  • RIGA_1_DESTRA

Conformità alle norme generali di sicurezza dell'Unione Europea

Se il veicolo deve essere conforme ai 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à è stata aggiunta in AIDL VHAL da Android 13, tuttavia, è supportata in Car Service dal rilascio di Android 12. Questa proprietà è definita come una proprietà intera statica globale di sola lettura, con possibili valori definiti dall'enumerazione GsrComplianceRequirementType :

Nome Valore Descrizione
GSR_COMPLIANCE_NON_REQUIRED 0 La conformità GSR non è richiesta
GSR_COMPLIANCE_REQUIRED_V1 1 È richiesta la conformità GSR e la versione della soluzione richiesta è 1.

Per supportare questa proprietà in HIDL VHAL (in Android 12), i fornitori devono codificare l'ID della proprietà. Ad esempio, il seguente frammento mostra come ciò è supportato nel riferimento HIDL 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 e l'enumerazione 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 Android, utilizzare CarPropertyManager.getIntProperty .