Specjalne właściwości

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 pliku VehicleVendorPermission.aidl wskazujące uprawnienia do odczytu wartości właściwości.
  • configArray[3 * i + 2] Wyliczenie w pliku VehicleVendorPermission.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 wymaga android.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 pliku android.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 .