Konfiguracje usługi

Każda obsługiwana właściwość jest określana przez konfigurację usługi zdefiniowaną za pomocą struktury VehiclePropConfig i zawiera poniższe 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 od 0x0100 do 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 mieć wartość 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 jedno z tych wartości: 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ć zgodny z trybem zmiany zdefiniowanym 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 obiektu 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 byteValues w Wartości właściwości Pojazd.
MIESZANE STYLE 0x00e00000 Obiekt typu mieszanego. dowolna kombinacja typów skalarnych lub wektorowych. W tablicy config w konfiguracji usługi musi być podany dokładny format.

W przypadku właściwości 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ść całkowitą
  • configSlate[3], liczba wskazuje rozmiar liczby całkowitej[] we 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 wskazuje rozmiar obiektu Float[] w właściwości
  • configtablica[8], liczba wskazuje rozmiar bajta[] we właściwości.

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 obszaru. 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. Ignorowana, jeśli oba mają wartość 0.
  • Jeśli w usłudze globalnej trzeba określić wartość minimalną i maksymalną, należy użyć jednej konfiguracji obszaru o identyfikatorze obszaru 0.
minInt64ValuemaxInt64Value
  • Opcjonalna wartość minimalna i maksymalna dla właściwości typu INT64. Ignorowane w przypadku wszystkich innych typów. Jeśli obie wartości są równe 0, właściwość jest ignorowana.
  • W przypadku właściwości globalnej, jeśli 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. Ignorowane w przypadku wszystkich innych typów. Ignorowana, jeśli obydwie wartości mają wartość 0,0.
  • W przypadku właściwości globalnej, jeśli trzeba zdefiniować wartość minimalną i maksymalną, 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 wyliczenia. Jeśli nie jest określony (pusty) lub jeśli jest 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 są wymienione poniżej.

Typ obszaru Wartość Opis
GLOBAL 0x01000000 To jest usługa globalna i nie obejmuje wielu obszarów.
OKNO 0x03000000 Obszar na podstawie okien, używa enum VehicleAreaWindow.
MIRROR 0x04000000 Obszar oparty na lustrach, używa enum VehicleAreaMirror.
SEAT 0x05000000 Obszar na podstawie miejsc, używa enum VehicleAreaSeat.
DZWONEK 0x06000000 Obszar na podstawie drzwi, używa enum VehicleAreaDoor.
KOŁO 0x07000000 Obszar na podstawie kół, korzysta z wyliczenia 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 wyliczenia 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 wyliczenia. 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 miejsc z przodu.
ROW_2_LEFT Dotyczy tylko lewego tylnego siedzenia.
ROW_2_RIGHT Dotyczy tylko prawego tylnego siedzenia.

Więcej informacji znajdziesz w artykule Ogrzewanie, wentylacja i klimatyzacja.