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 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
, per avere le autorizzazioni:
vendor_prop_1
richiedeandroid.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
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 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
- 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à. Questo
richiede l'autorizzazione
Car#PERMISSION_CAR_INFO
.