Właściwości dostawcy
Aby zaspokoić potrzeby specyficzne dla partnera, VHAL udostępnia właściwości dostawcy, do których można uzyskać dostęp wyłącznie za pośrednictwem systemowych interfejsów API. Podczas pracy z właściwościami dostawcy postępuj zgodnie z poniższymi wytycznymi:
- Zawsze staraj się najpierw użyć właściwości systemu. Właściwości dostawcy powinny być używane w ostateczności, gdy żadna z właściwości systemu nie spełnia Twoich wymagań.
- Aby zapobiec fragmentacji ekosystemu, nie można używać właściwości dostawcy do replikowania właściwości pojazdu, które już istnieją w zestawie SDK VehiclePropertyIds . Aby dowiedzieć się więcej, zobacz sekcję 2.5, Wymagania motoryzacyjne w CDD.
- Użyj następujących pól, aby wygenerować identyfikator usługi:
-
VehiclePropertyGroup:VENDOR
Grupa VENDOR jest używana tylko dla właściwości dostawcy. -
VehicleArea
Wybierz odpowiedni typ obszaru. -
VehiclePropertyType
Wybierz odpowiedni typ danych. Typ BYTES umożliwia przekazywanie surowych danych, co w większości przypadków jest wystarczające. Częste wysyłanie dużych zbiorów danych za pośrednictwem właściwości dostawcy może spowolnić dostęp do całej sieci pojazdu. Zachowaj ostrożność podczas dodawania dużego ładunku. -
Property ID
Wybierz unikalny dwubajtowy identyfikator właściwości dostawcy. Na przykład 0x1234.
-
- Wypełnij
VehiclePropConfig.configString
krótkim opisem właściwości dostawcy. Dzięki temu narzędzia sprawdzające ważność mogą wykryć przypadkową replikację istniejących właściwości pojazdu. Na przykład „Moja właściwość niestandardowa dla XYZ”. - Dostęp poprzez CarPropertyManager (dla komponentów Java) lub poprzez
libvhalclient
(dla komponentów natywnych). Nie modyfikuj interfejsów API innych samochodów, ponieważ może to prowadzić do przyszłych problemów ze zgodnością.
Zezwolenie na właściwości dostawcy
Domyślne uprawnienie dla dowolnych zdefiniowanych właściwości dostawcy to android.car.Car.PERMISSION_VENDOR_EXTENSION
. Aby uzyskać większą szczegółowość kontroli uprawnień, obsługuj właściwość SUPPORT_CUSTOMIZE_VENDOR_PERMISSION
. Ta właściwość STATIC jest tylko do odczytu, a jej tablica konfiguracyjna określa uprawnienia do właściwości dostawcy. configArray
ustawia się w następujący sposób (i jest liczbą całkowitą zaczynającą się od 0):
-
configArray[3 * i]
propId, identyfikator właściwości dostawcy. -
configArray[3 * i + 1]
Wyliczenie w plikuVehicleVendorPermission.aidl
wskazujące uprawnienia do odczytu wartości właściwości. -
configArray[3 * i + 2]
Wyliczenie w plikuVehicleVendorPermission.aidl
wskazujące uprawnienia do zapisu wartości właściwości.
Na przykład poniższa tablica konfiguracyjna konfiguruje dwie właściwości dostawcy, vendor_prop_1
i vendor_prop_2
, aby mieć uprawnienia:
-
vendor_prop_1
wymagaandroid.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_SEAT
do odczytu,android.car.hardware.property.VehicleVendorPermission.PERMISSION_SET_CAR_VENDOR_CATEGORY_SEAT
do zapisu. -
vendor_prop-2
wymaga do odczytu plikuandroid.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_INFO
i nie można go zapisywać 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órych nie ma w tej tablicy, wymagają domyślnego uprawnienia dostawcy. Jeśli wybrano opcję PERMISSION_NOT_ACCESSIBLE
, aplikacje na Androida nie będą miały dostępu do tej usługi. W tym przykładzie aplikacje na Androida nie mogą zapisać wartości dla vendor_prop_2
. Tylko natywni klienci VHAL mogą zapisywać w tej właściwości.
Zaawansowane systemy wspomagania kierowcy (ADAS)
Zobacz Właściwości pojazdu ADAS .SIEDZENIE i KIEROWNICA
Zobacz Właściwości siedzenia i kierownicy .
HVAC
Można używać VHAL do sterowania HVAC, ustawiając właściwości związane z HVAC. Większość właściwości HVAC jest powiązana z określonymi obszarami pojazdu, chociaż kilka z nich ma charakter globalny. Przykładowe zdefiniowane właściwości obejmują:
Nieruchomość | Zamiar |
---|---|
HVAC_TEMPERATURE_SET | Ustaw temperaturę według identyfikatora obszaru. |
HVAC_POWER_ON | Stan zasilania systemu HVAC według identyfikatora obszaru. |
W przypadku właściwości HVAC, które zależą od stanu zasilania systemu HVAC, muszą one być wymienione w tablicy konfiguracyjnej HVAC_POWER_ON
. Aby wyświetlić pełną listę właściwości HVAC, wyszukaj HVAC_*
w VehicleProperty.aidl
, zobacz Obsługiwane właściwości systemu . nieruchomości.
Zasady mapowania nieGLOBALNYCH właściwości HVAC typu VehicleArea na AreaIDs: Każdy „obszar” określonego typu VehicleArea
, na który wpływa dana właściwość, musi być uwzględniony w identyfikatorze obszaru dla tej właściwości. Kontrolery temperatury są przypisane do siedzeń, na które „najbardziej wpływają”, ale każde siedzenie, którego to dotyczy, musi zostać uwzględnione dokładnie raz. Przypisanie środkowego tylnego siedzenia do lewego lub prawego obszaru AreaID może wydawać się arbitralne, ale włączenie każdego dotkniętego siedzenia do dokładnie jednego obszaru ID zapewnia, że wszystkie siedzenia w samochodzie są wyrażone i że dostępny jest rozsądny sposób oddziaływania na każde siedzenie.
Przykład 1
Samochód ma dwa przednie siedzenia (ROW_1_LEFT, ROW_1_RIGHT) i trzy tylne siedzenia (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT). Istnieją dwa moduły kontroli temperatury, po jednym dla kierowcy i pasażera. Prawidłowy zestaw mapowania identyfikatorów AreaID dla HVAC_TEMPERATURE_SET
byłby tablicą dwuelementową:
- ROW_1_LEFT | ROW_2_LEFT
- WIERSZ_1_PRAWY | WIERSZ_2_CENTRUM | WIERSZ_2_PRAWY
Alternatywnym mapowaniem dla tej samej konfiguracji sprzętowej byłoby:
- ROW_1_LEFT | WIERSZ_2_CENTRUM | ROW_2_LEFT
- WIERSZ_1_PRAWY | WIERSZ_2_PRAWY
Przykład 2
Samochód ma trzy rzędy siedzeń z dwoma siedzeniami w pierwszym rzędzie (ROW_1_LEFT, ROW_1_RIGHT) i trzema siedzeniami w drugim (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT) i trzecim rzędzie (ROW_3_LEFT, ROW_3_CENTER, ROW_3_RIGHT). Istnieją trzy sterowniki temperatury, po jednym dla kierowcy, pasażera i tyłu. Rozsądnym sposobem mapowania HVAC_TEMPERATURE_SET
na AreaID jest tablica składająca się z trzech elementów:
- ROW_1_LEFT
- WIERSZ_1_PRAWY
- ROW_2_LEFT | WIERSZ_2_CENTRUM | WIERSZ_2_PRAWY | ROW_3_LEFT | WIERSZ_3_CENTRUM | WIERSZ_3_PRAWY
Przykład 3
Samochód ma dwa przednie siedzenia (ROW_1_LEFT, ROW_1_RIGHT) i trzy tylne siedzenia (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT). Załóżmy, że samochód obsługuje HVAC_AUTO_ON tylko dla dwóch przednich siedzeń. Prawidłowy zestaw mapowania identyfikatorów AreaID dla HVAC_AUTO_ON będzie tablicą jednoelementową:
- ROW_1_LEFT | WIERSZ_1_PRAWY
Jeżeli HVAC_AUTO_ON
miałby dwie oddzielne jednostki sterujące po stronie kierowcy i pasażera, alternatywnym mapowaniem byłaby tablica dwóch elementów:
- ROW_1_LEFT
- WIERSZ_1_PRAWY
Zgodność z ogólnymi przepisami bezpieczeństwa Unii Europejskiej
Jeśli pojazd musi być zgodny z wymaganiami rozporządzenia dotyczącego bezpieczeństwa ogólnego Unii Europejskiej (GSR) w systemie Android, musi być obsługiwana właściwość GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT
. Przykładowym przypadkiem użycia jest GSR-ISA (inteligentny asystent prędkości) zgodnie z definicją zawartą w rozporządzeniu UE 2019/2144. Ta właściwość została dodana w AIDL VHAL z Androida 13, jednak jest obsługiwana w Car Service od wydania Androida 12. Ta właściwość jest zdefiniowana jako statyczna globalna właściwość całkowita tylko do odczytu, z możliwymi wartościami zdefiniowanymi przez wyliczenie GsrComplianceRequirementType
:
Nazwa | Wartość | Opis |
---|---|---|
GSR_COMPLIANCE_NOT_REQUIRED | 0 | Zgodność z GSR nie jest wymagana |
GSR_COMPLIANCE_REQUIRED_V1 | 1 | Wymagana jest zgodność z GSR, a wersja rozwiązania wymagań to 1. |
Aby obsługiwać tę właściwość w HIDL VHAL (w systemie Android 12), dostawcy muszą zakodować na stałe identyfikator właściwości. Na przykład poniższy fragment pokazuje, jak jest to obsługiwane w referencyjnym pliku 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ę właściwość w AIDL VHAL (od Androida 13), dostawcy mogą użyć identyfikatora właściwości z VehicleProperty.h
i wyliczenia z GsrComplianceRequirementType.h
. Na przykład, jak w odniesieniu 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
VehiclePropertyIds.GENERAL_SAFETY_REGULATION_COMPLIANCE
jako identyfikatora właściwości. - W systemie Android 12 użyj zakodowanej na stałe wartości 0x11400F47 jako identyfikatora właściwości. Ta właściwość wymaga pozwolenia
Car#PERMISSION_CAR_INFO
.