Właściwości dostawcy
Aby zaspokoić konkretne potrzeby partnerów, VHAL zezwala na dostęp do właściwości dostawcy tylko przez systemowe interfejsy API. Podczas pracy z usługami dostawcy stosuj się do tych wskazówek:
- Zawsze najpierw używaj właściwości systemu, a właściwości dostawcy należy stosować w ostateczności. gdy żadna z usług systemowych nie spełnia wymagań.
- Aby zapobiec fragmentacji ekosystemu, nie wolno używać właściwości dostawcy do powielania pojazdu usług, które występują już w pakiecie SDK Identyfikatory pojazdów. Więcej informacji można znaleźć w sekcji 2.5 „Wymagania motoryzacyjne” w CDD.
- Aby wygenerować identyfikator usługi, użyj tych pól:
- Grupa VENDOR
VehiclePropertyGroup:VENDOR
jest używana tylko w przypadku usług dostawcy. VehicleArea
Wybierz odpowiedni typ obszaru.VehiclePropertyType
Wybierz odpowiedni typ danych. Typ BYTES umożliwia przekazywanie nieprzetworzonych danych, co w większości przypadków wystarczy. Częste przesyłanie big data za pomocą usług dostawcy może spowolnić dostęp do sieci w pojeździe. Zachowaj ostrożność przy dodawaniu dużych ładunków.Property ID
Wybierz unikalny 2-bajtowy identyfikator dla usługi dostawcy. Na przykład 0x1234.
- Grupa VENDOR
- W polu
VehiclePropConfig.configString
podaj krótki opis dostawcy. usłudze. Dzięki temu narzędzia do sprawdzania poprawności oznaczają przypadkową replikację istniejących właściwości pojazdu. Na przykład „Moja usługa niestandardowa dla: XYZ”. - Dostęp przez
CarpropertyManager
(w przypadku komponentów Java) lub za pomocą metody
libvhalclient
(na potrzeby reklam natywnych). Tak nie modyfikować innych interfejsów API samochodu, ponieważ może to spowodować problemy ze zgodnością w przyszłości.
Uprawnienia dotyczące usług dostawcy
Domyślne uprawnienie wszystkich zdefiniowanych usług dostawcy to
android.car.Car.PERMISSION_VENDOR_EXTENSION
Aby zwiększyć szczegółowość uprawnień
, obsługują właściwość SUPPORT_CUSTOMIZE_VENDOR_PERMISSION
. Ta STATYSTYKA
usługa jest tylko do odczytu, dla której jej tablica config określa uprawnienia do właściwości dostawcy.
configArray
jest ustawiony w następujący sposób (i to liczba całkowita rozpoczynająca się od 0):
configArray[3 * i]
propId, identyfikator usługi dostawcy.configArray[3 * i + 1]
Wyliczenie w zakresieVehicleVendorPermission.aidl
do wskazują uprawnienia do odczytu wartości właściwości.configArray[3 * i + 2]
Wyliczenie w zakresieVehicleVendorPermission.aidl
do wskazać uprawnienia do zapisu wartości właściwości.
Na przykład poniższa tablica konfiguracji konfiguruje 2 właściwości dostawcy,
vendor_prop_1
i vendor_prop_2
, by mieć uprawnienia:
vendor_prop_1
wymagaandroid.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_SEAT
do przeczytania,android.car.hardware.property.VehicleVendorPermission.PERMISSION_SET_CAR_VENDOR_CATEGORY_SEAT
do pisania.vendor_prop-2
wymagaandroid.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_INFO
tylko do czytania i zapisu w aplikacjach na Androida.
configArray = { PERMISSION_SET_VENDOR_CATEGORY_SEAT vendor_prop_2, PERMISSION_GET_VENDOR_CATEGORY_INFO, PERMISSION_NOT_ACCESSIBLE }
Właściwości dostawcy, którego nie ma w tej tablicy, przyjmują domyślne uprawnienia dostawcy. Kiedy
Wybrano PERMISSION_NOT_ACCESSIBLE
. Aplikacje na Androida nie mają dostępu do usługi.
W tym przykładzie aplikacje na Androida nie mogą zapisać wartości w polu vendor_prop_2
. Tylko natywne
Klienci VHAL mogą zapisywać w tej usłudze.
Zaawansowane systemy wspomagania kierowcy (ADAS)
Zobacz Właściwości pojazdu ADAS.SEAT i STEERING
Patrz Właściwości fotela i sterowania.
ogrzewanie/wentylacja/klimatyzacja
Za pomocą VHAL możesz sterować ogrzewaniem, wentylacją i klimatyzacją, ustawiając właściwości związane z ogrzewaniem, wentylacją i klimatyzacją. Większość obiektów ogrzewania/wentylacji/klimatyzacji są powiązane z konkretnymi obszarami pojazdu, chociaż kilka z nich jest właściwościami globalnymi. Przykładowe zdefiniowane właściwości:
Właściwość | Cel |
---|---|
HVAC_TEMPERATURE_SET |
Ustaw temperaturę według identyfikatora obszaru. |
HVAC_POWER_ON |
Stan zasilania systemu ogrzewania/wentylacji/klimatyzacji według identyfikatora obszaru. |
W przypadku obiektów ogrzewania/wentylacji/klimatyzacji, które zależą od stanu zasilania systemu ogrzewania/wentylacji/klimatyzacji,
są wymienione w tablicy konfiguracji HVAC_POWER_ON
. Aby zobaczyć pełną listę właściwości ogrzewania/wentylacji/klimatyzacji:
szukaj HVAC_*
w VehicleProperty.aidl
, zobacz
Obsługiwane właściwości systemowe.
usług.
Reguły mapowania właściwości ogrzewania/wentylacji/klimatyzacji spoza całego świata na identyfikatory AreaID:
Każdy „obszar” określonego typu VehicleArea
, którego dotyczy usługa, musi zostać
zawarte w identyfikatorze obszaru dla danej nieruchomości. Kontrolery temperatury są przypisane do
miejsc, na które mają „największy wpływ”, ale każde miejsce, którego dotyczy problem, musi zostać uwzględnione dokładnie raz.
Przypisanie środkowego tylnego siedzenia do lewej lub prawej strony AreaID może wydawać się dowolne,
ale uwzględnienie wszystkich stanowisk, których dotyczy problem,
do jednego identyfikatora obszaru zapewnia,
w samochodzie są wyrażone i że można w sposób rozsądny wpłynąć na każde miejsce.
Przykład 1
Samochód ma 2 miejsca z przodu (ROW_1_LEFT, ROW_1_RIGHT) i 3 tylne
(ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT). Dostępne są dwie jednostki sterowania temperaturą, po jednej
po stronie kierowcy i pasażera. Prawidłowy zestaw mapowań identyfikatorów AreaID dla
HVAC_TEMPERATURE_SET
byłaby tablicą dwuelementową:
- ROW_1_LEFT | WIERSZ_2_LEWY
- ROW_1_RIGHT | ROW_2_CENTER | ROW_2_PRAWY
Alternatywne mapowanie dla tej samej konfiguracji sprzętowej to:
- ROW_1_LEFT | ROW_2_CENTER | WIERSZ_2_LEWY
- ROW_1_RIGHT | ROW_2_PRAWY
Przykład 2
Samochód ma 3 rzędy miejsc z 2 miejscami w pierwszym rzędzie (ROW_1_LEFT, ROW_1_RIGHT)
i 3 miejsca w drugim rzędzie (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT) i w trzecim rzędzie
(ROW_3_LEFT, ROW_3_CENTER, ROW_3_RIGHT). Dostępne są trzy jednostki sterowania temperaturą, po jednej
po stronie kierowcy, po stronie pasażera i z tyłu. rozsądny sposób tworzenia map
Od HVAC_TEMPERATURE_SET
do identyfikatorów AreaID jest tablica z 3 elementami:
- ROW_1_LEFT
- ROW_1_PRAWO
- ROW_2_LEFT | ROW_2_CENTER | ROW_2_RIGHT | ROW_3_LEFT | ROW_3_CENTER | WIERSZ_3_PRAWY
Przykład 3
Samochód ma 2 miejsca z przodu (ROW_1_LEFT, ROW_1_RIGHT) i 3 tylne (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT). Załóżmy, że samochód obsługuje system HVAC_AUTO_ON tylko przez dwa przednie fotele. Prawidłowym zestawem mapowań identyfikatorów AreaID dla HVAC_AUTO_ON byłby pojedynczy tablica elementów:
- ROW_1_LEFT | ROW_1_PRAWO
Jeśli HVAC_AUTO_ON
ma 2 oddzielne jednostki sterujące po stronie kierowcy i pasażera
, alternatywnym mapowaniem byłaby tablica z dwoma elementami:
- ROW_1_LEFT
- ROW_1_PRAWO
INFO_EXTERIOR_DIMENSIONS
Wymiary zewnętrzne pojazdu są mierzone w milimetrach, jak pokazano na Rys. 1.
.Użyj właściwości opisanych w tej tabeli, aby określić wygląd zewnętrzny pojazdu wymiarów.
Obiekt związany z pojazdem | pole VHAL | Opis |
---|---|---|
Wzrost | int32Values[0] |
Odległość w pionie między podłożem a najwyższym punktem pojazdu. Zakładamy tutaj, zwykle dmuchane koła fabryczne. |
Długość | int32Values[1] |
Odległość w poziomie między najbardziej zewnętrznymi punktami przedniego i tylnego pojazdu. |
Szerokość, bez luster | int32Values[2] |
Odległość w poziomie między dwoma najbardziej zewnętrznymi punktami po każdej stronie pojazdu z wyłączeniem w lusterkach bocznych. |
Szerokość razem z lustrami | int32Values[3] |
Odległość w poziomie między dwoma najbardziej zewnętrznymi punktami po każdej stronie pojazdu w tym w lusterkach bocznych. |
Podstawa kół | int32Values[4] |
Odległość między osią przedniego i tylnego kół pojazdu. |
Rozstaw kół, z przodu | int32Values[5] |
Odległość między przednim kołem mierzona od środkowej linii bieżnika jednego opony do na linii środkowej przeciwległego bieżnika. |
Rozstaw kół z tyłu | int32Values[6] |
Odległość między tylnym kołem mierzona od środkowej linii bieżnika opony do na linii środkowej przeciwległego bieżnika. |
Średnica do skrętu na zewnątrz | int32Values[7] |
Średnica okręgu utworzona przez zewnętrzne koła pojazdu podczas wykonywania pełnego skrętu z w pełni zablokowana kierownicą. |
Zgodność z ogólnymi przepisami bezpieczeństwa obowiązującymi w Unii Europejskiej
Jeśli pojazd musi spełniać wymagania Ogólnego rozporządzenia o bezpieczeństwie w Unii Europejskiej (GSR)
za pomocą Androida, właściwość GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT
musi
nie są obsługiwane. Przykładem zastosowania jest GSR-ISA (Intelligent Speed Assist) zgodny z definicją w Unii Europejskiej.
Rozporządzenie 2019/2144. Ta właściwość została dodana w AIDL VHAL z Androida 13, ale jest
obsługiwane w usłudze samochodowej od wersji Androida 12. Ta właściwość jest zdefiniowana jako dostępna tylko do odczytu
statyczna globalna właściwość całkowita z możliwymi wartościami określonymi przez
Wyliczenie GsrComplianceRequirementType
:
Nazwa | Wartość | Opis |
---|---|---|
GSR_COMPLIANCE_NOT_REQUIRED |
0 | Zgodność z GSR nie jest wymagana |
GSR_COMPLIANCE_REQUIRED_V1 |
1 | Zgodność z GSR jest wymagana, a rozwiązanie wymagające w wersji 1 to 1. |
Aby obsługiwać tę właściwość w HIDL VHAL (w Androidzie 12), dostawcy muszą na stałe zakodować identyfikator usługi.
Na przykład ten fragment kodu pokazuje, jak jest to obsługiwane w referencyjnym 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}}, }
Aby obsługiwać tę usługę w AIDL VHAL (z Androida 13), dostawcy mogą używać identyfikatora usługi z
VehicleProperty.h
i wyliczenie z GsrComplianceRequirementType.h
. Dla:
przykład jak w informacjach o AIDL VHAL
DefaultProperties.json
:
{ "property": "VehicleProperty::GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT", "defaultValue": { "int32Values": [ "GsrComplianceRequirementType::GSR_COMPLIANCE_REQUIRED_V1" ] } }
Aby odczytać tę właściwość z aplikacji na Androida, użyj
CarPropertyManager.getIntProperty
- W Androidzie 13 i nowszych użyj funkcji
VehiclePropertyIds.GENERAL_SAFETY_REGULATION_COMPLIANCE
. - W Androidzie 12 jako identyfikatora usługi użyj zakodowanej na stałe wartości 0x11400F47. Ten
właściwość wymaga uprawnienia
Car#PERMISSION_CAR_INFO
.