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.
- Il gruppo
- 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 inVehicleVendorPermission.aidl
per indicare l'autorizzazione a leggere il valore della proprietà.configArray[3 * i + 2]
Un'enumerazione inVehicleVendorPermission.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
richiedeandroid.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
richiedeandroid.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.


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
- In Android 13 e versioni successive, utilizza
VehiclePropertyIds.GENERAL_SAFETY_REGULATION_COMPLIANCE
come ID proprietà. - In Android 12, utilizza il valore hardcoded 0x11400F47 come ID proprietà. Questa proprietà richiede l'autorizzazione
Car#PERMISSION_CAR_INFO
.