Konfiguracje usługi

Każda obsługiwana usługa jest określana przez konfigurację usługi zdefiniowaną w strukturze VehiclePropConfig. Ma ona te pola:

Pole Opis
prop

Identyfikator usługi. Musi to być jedna z definiowanych właściwości systemowych z Obsługiwanych właściwości systemowych lub właściwość dostawcy. Identyfikator usługi jest tworzony na podstawie funkcji bitowej OR z tych pól (od prawej do lewej):

  • (0x00000000) 16 bitów: unikalny identyfikator z zakresu 0x0100 – 0xffff.
  • (0x00000000) 8 bitów: Typy usług, które definiują typ usługi.
  • (0x00000000) 4 bity: Typy obszarów.
  • (0x00000000) 4 bity: VehiclePropertyGroup> może to być SYSTEM(0x10000000) lub VENDOR (0x20000000). Właściwości, które możesz dostosować, znajdziesz w sekcji Właściwości dostawcy.

Na przykład:
INFO_VIN (0x11100100) = UniqueID (0x00000100) | VehiclePropertyType.STRING (0x00100000) | VehicleArea.GLOBAL (0x01000000) | VehiclePropertyGroup.SYSTEM (0x10000000)

access Tryb dostępu do usługi. Musi być to READ, WRITE lub READ_WRITE. Musi być równy trybowi dostępu zdefiniowanemu w Obsługiwanych właściwościach systemu.
changeMode
  • Zmień tryb usługi. Musi być to STATIC, ON_CHANGE lub CONTINUOUS. STATIC oznacza, że wartość właściwości nigdy się nie zmienia po uruchomieniu systemu. ON_CHANGE oznacza, że VHAL musi raportować, gdy wartość się zmienia. CONTINUOUS oznacza, że wartość właściwości zmienia się stale i VHAL musi raportować na podstawie częstotliwości próbkowania subskrypcji.
  • Tryb zmiany musi być taki sam jak tryb zmiany zdefiniowany w Obsługiwanych właściwościach systemu.
configArray Opcjonalny tablica zawierająca konfigurację specyficzną dla usługi. Może być puste.
configString Opcjonalny ciąg tekstowy zawierający konfigurację specyficzną dla usługi. Może być puste.
minSampleRatemaxSampleRate

Minimalna i maksymalna obsługiwana częstotliwość próbkowania w przypadku właściwości ciągłej. Nieużywana, jeśli obiekt nie jest ciągły.

Typy obiektów

Zdefiniowane jako typy zbiorcze w VehiclePropertyType.aidl. Obsługiwane typy właściwości zostały wymienione w tabeli poniżej.

Typ nieruchomości Wartość Opis
CIĄG ZNAKÓW 0x00100000 Właściwość ciągu znaków, która korzysta z pola stringValue w sekcji Wartość właściwości pojazdu.
WARTOŚĆ LOGICZNA 0x00200000 Właściwość logiczna, która używa pierwszego elementu w polu int32Valueswartości właściwości pojazdu. 0 oznacza false, a None 0 – true.
INT32 0x00400000 Właściwość typu liczba całkowita, która używa pierwszego elementu w polu int32Valueswartości właściwości pojazdu.
INT32_VEC 0x00410000 Właściwość Integer[] korzysta z elementów w polu int32Valueswartości właściwości Pojazd.
INT64 0x00500000 Długa właściwość, która używa pierwszego elementu w polu int64Valueswartości właściwości pojazdu.
INT64_VEC 0x00510000 Właściwość Long[] korzysta z elementów w polu int64ValuesWłaściwości pojazdu.
FLOAT 0x00600000 Właściwość typu float, która używa pierwszego elementu w polu floatValueswartości właściwości pojazdu.
FLOAT_VEC 0x00610000 Właściwość float[], która korzysta z elementów w polu floatValueswartości właściwości pojazdu.
BYTES 0x00700000 Właściwość byte[], która korzysta z elementów w polu byteValueswartości właściwości pojazdu.
MIESZANE STYLE 0x00e00000 Obiekt typu mieszanego. dowolna kombinacja typów skalarnych lub wektorowych. Dokładny format musi być podany w tablicy config w konfiguracji usługi.

W przypadku usług typu MIXED dostawcy parametr configArray musi mieć taki format:

  • configArray[0], 1 wskazuje, że właściwość ma wartość String.
  • configArray[1], 1 oznacza, że właściwość ma wartość logiczną
  • configArray[2], 1 wskazuje, że właściwość ma wartość liczby całkowitej.
  • configArray[3], liczba oznacza rozmiar tablicy Integer[] w danej właściwości
  • configArray[4], 1 oznacza, że właściwość ma wartość Long
  • configArray[5], liczba oznacza rozmiar tablicy Long[] w danej usłudze
  • configArray[6], 1 wskazuje, że właściwość ma wartość typu Float
  • configArray[7], liczba oznacza rozmiar tablicy Float[] w usłudze
  • configArray[8], gdzie liczba wskazuje rozmiar tablicy byte[] w usłudze.

Na przykład configArray = {1, 1, 1, 3, 0, 0, 0, 0, 0} wskazuje, że właściwość ma wartość ciągu znaków, wartość logiczną, wartość całkowitą i tablicę z 3 wartościami całkowitymi.

Konfiguracja identyfikatora obszaru

Każda konfiguracja usługi może też zawierać listę konfiguracji identyfikatorów obszarów. Ta lista jest opcjonalna w przypadku usług globalnych i wymagana w przypadku usług strefowych (usług z wieloma obsługiwanymi obszarami). Każda konfiguracja identyfikatora obszaru zawiera te pola.

Pole Opis
areaId Identyfikator tego obszaru. Zobacz identyfikatory obszarów.
minInt32ValuemaxInt32Value
  • Opcjonalna minimalna i maksymalna wartość właściwości typu INT32. Pozostałe typy są ignorowane. Jeśli obie wartości są równe 0, są ignorowane.
  • Jeśli w przypadku usługi globalnej trzeba zdefiniować minimalną i maksymalną wartość, należy użyć jednej konfiguracji obszaru z identyfikatorem obszaru 0.
minInt64ValuemaxInt64Value
  • Opcjonalna minimalna i maksymalna wartość właściwości typu INT64. Ignorowane w przypadku wszystkich innych typów. Jeśli obie wartości są równe 0, są ignorowane.
  • Jeśli w przypadku usługi globalnej trzeba zdefiniować minimalną i maksymalną wartość, należy użyć jednej konfiguracji obszaru z identyfikatorem obszaru 0.
minFloatValuemaxFloatValue
  • Opcjonalna minimalna i maksymalna wartość właściwości typu Float. Pozostałe typy są ignorowane. Ta wartość jest ignorowana, jeśli obie wartości są równe 0,0.
  • Jeśli w przypadku usługi globalnej trzeba zdefiniować minimalną i maksymalną wartość, należy użyć jednej konfiguracji obszaru z identyfikatorem obszaru 0.
(Nowość w Androidzie 14)
supportedEnumValues
  • Opcjonalna lista obsługiwanych wartości, jeśli właściwość jest zdefiniowana jako właściwość typu enum. Jeśli nie jest określony (pusty) lub jeśli jest to wersja starsza niż Android 14, przyjmuje się, że obsługiwane są wszystkie wartości enumeracji.
  • W przypadku usługi globalnej, jeśli trzeba zdefiniować obsługiwane wartości wyliczenia, należy użyć jednej konfiguracji obszaru z identyfikatorem obszaru 0.

Typy obszarów

Zdefiniowane jako typy zbiorcze w VehicleArea.aidl. Obsługiwane typy obszarów:

Typ obszaru Wartość Opis
GLOBAL 0x01000000 Ta usługa jest usługą globalną i nie ma wielu obszarów.
OKNO 0x03000000 Obszar na podstawie okien, używa enum VehicleAreaWindow.
MIRROR 0x04000000 Obszar na podstawie luster, używa enum VehicleAreaMirror.
SEAT 0x05000000 Obszar na podstawie miejsc, używa enum VehicleAreaSeat.
DOOR 0x06000000 Obszar na podstawie drzwi, używa VehicleAreaDoor enum.
KOŁO 0x07000000 Pole Area określane na podstawie kół, używa enum VehicleAreaWheel.

Każda strefa w danej usłudze musi używać zdefiniowanego wstępnie typu obszaru. Każdy typ obszaru ma zestaw flag bitowych zdefiniowanych w enumeracji dla tego typu. Na przykład obszar SEAT definiuje te enumy:VehicleAreaSeat

  • ROW_1_LEFT = 0x0001
  • ROW_1_CENTER = 0x0002
  • ROW_1_RIGHT = 0x0004
  • ROW_2_LEFT = 0x0010
  • ROW_2_CENTER = 0x0020
  • ROW_2_RIGHT = 0x0040
  • ROW_3_LEFT = 0x0100
  • ...

Identyfikatory obszarów

Właściwości z podziałem na strefy są adresowane za pomocą identyfikatorów obszarów. Każda usługa z podziałem na strefy może obsługiwać co najmniej 1 identyfikator obszaru. Identyfikator obszaru składa się z co najmniej 1 flagi z odpowiedniego typu zbiorczego. Na przykład usługa korzystająca z usługi VehicleAreaSeat może używać tych identyfikatorów obszaru:

Produkt Opis
ROW_1_LEFT | ROW_1_RIGHT Identyfikator obszaru dotyczy obu przednich siedzeń.
ROW_2_LEFT Dotyczy tylko lewego tylnego siedzenia.
ROW_2_RIGHT Dotyczy tylko prawego tylnego siedzenia.

Więcej informacji znajdziesz w artykule HVAC.