Konfiguracje właściwości

Każda obsługiwana właściwość jest określona przez konfigurację właściwości zdefiniowaną w strukturze VehiclePropConfig i ma następujące pola.

Pole Opis
prop

Identyfikator właściwości. Musi to być albo jedna z właściwości systemu zdefiniowanych w obszarze Obsługiwane właściwości systemu, albo właściwość dostawcy. Identyfikator właściwości jest konstruowany przy użyciu bitu lub następujących pól (od prawej do lewej):

  • (0x0000 0000 ) 16 bitów: unikalny identyfikator z zakresu 0x0100 - 0xffff.
  • (0x00 00 0000) 8 bitów: Typy właściwości , które definiują typ właściwości.
  • (0x0 0 000000) 4 bity: Typy obszarów .
  • (0x 0 0000000) 4 bity: VehiclePropertyGroup > To jest albo SYSTEM (0x10000000), albo VENDOR (0x20000000). Zobacz Właściwości dostawcy , aby poznać właściwości, które możesz dostosować.

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

access Tryb dostępu do właściwości. Musi to być READ , WRITE lub READ_WRITE . Musi to być równe trybowi dostępu zdefiniowanemu we właściwościach obsługiwanego systemu .
changeMode
  • Zmień tryb właściwości. Musi to być jedna z 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 zgłosić zmianę wartości. CONTINUOUS oznacza, że ​​wartość właściwości zmienia się w sposób ciągły i VHAL musi raportować w oparciu o częstotliwość próbkowania subskrypcji.
  • Tryb zmiany musi być równy trybowi zmiany zdefiniowanemu we właściwościach obsługiwanego systemu .
configArray Opcjonalna tablica zawierająca konfigurację specyficzną dla właściwości. Może być pusty.
configString Opcjonalny ciąg znaków zawierający konfigurację specyficzną dla właściwości. Może być pusty.
minSampleRate i maxSampleRate

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

Typy nieruchomości

Zdefiniowane jako wyliczenia w VehiclePropertyType.aidl . Obsługiwane typy właściwości wymieniono w poniższej tabeli.

Typ nieruchomości Wartość Opis
STRUNOWY 0x00100000 String, używa pola stringValue w wartości właściwości pojazdu.
BOOLEAN 0x00200000 Właściwość logiczna, wykorzystuje pierwszy element w polu int32Values ​​w wartości właściwości pojazdu . 0 oznacza false , None 0 oznacza true .
INT32 0x00400000 Integer, wykorzystuje pierwszy element z pola int32Values ​​we właściwości Vehicle value .
INT32_VEC 0x00410000 Integer[] wykorzystuje elementy z pola int32Values ​​we właściwości Vehicle value .
INT64 0x00500000 Long, wykorzystuje pierwszy element z pola int64Values ​​w wartości właściwości pojazdu .
INT64_VEC 0x00510000 Long[] , wykorzystuje elementy z pola int64Values ​​w wartości właściwości pojazdu .
PLATFORMA 0x00600000 Float, wykorzystuje pierwszy element z pola floatValues ​​w wartości właściwości pojazdu .
FLOAT_VEC 0x00610000 Float[], wykorzystuje elementy z pola floatValues ​​w wartości właściwości pojazdu .
BAJTY 0x00700000 byte[], wykorzystuje elementy z pola byteValues ​​w wartości właściwości pojazdu .
MIESZANY 0x00e00000 Właściwość typu mieszanego. Dowolna kombinacja typów skalarnych lub wektorowych. Dokładny format musi zostać podany w tablicy config w konfiguracji właściwości.

W przypadku właściwości typu MIXED dostawcy configArray musi być sformatowany w następującej strukturze:

  • configArray[0], 1 wskazuje, że właściwość ma wartość typu String
  • configArray[1], 1 wskazuje, że właściwość ma wartość logiczną
  • configArray[2], 1 wskazuje, że właściwość ma wartość całkowitą
  • configArray[3], liczba wskazuje rozmiar Integer[] we właściwości
  • configArray[4], 1 wskazuje, że właściwość ma wartość Long
  • configArray[5], liczba wskazuje rozmiar Long[] we właściwości
  • configArray[6], 1 wskazuje, że właściwość ma wartość Float
  • configArray[7], liczba wskazuje rozmiar Float[] we właściwości
  • configArray[8], liczba wskazuje rozmiar bajtu[] 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ść typu String, wartość logiczną, wartość całkowitą i tablicę z trzema liczbami całkowitymi.

Konfiguracja identyfikatora obszaru

Każda konfiguracja właściwości może również zawierać listę konfiguracji identyfikatorów obszarów. Ta lista jest opcjonalna w przypadku nieruchomości globalnych i wymagana w przypadku nieruchomości strefowych (nieruchomości z wieloma obsługiwanymi obszarami). Każda konfiguracja identyfikatora obszaru ma następujące pola.

Pole Opis
areaId Identyfikator tego obszaru. Zobacz Identyfikatory obszarów .
minInt32Value i maxInt32Value
  • Opcjonalna wartość minimalna i maksymalna dla właściwości typu INT32. Ignorowane dla wszystkich innych typów. Ignorowane, jeśli oba mają wartość 0.
  • W przypadku właściwości globalnych, jeśli konieczne jest zdefiniowanie wartości minimalnej i maksymalnej, należy zastosować jedną konfigurację obszaru z identyfikatorem obszaru 0.
minInt64Value i maxInt64Value
  • Opcjonalna wartość minimalna i maksymalna dla właściwości typu INT64. Ignorowane dla wszystkich innych typów. Ignorowane, jeśli oba mają wartość 0.
  • W przypadku właściwości globalnych, jeśli konieczne jest zdefiniowanie wartości minimalnej i maksymalnej, należy zastosować jedną konfigurację obszaru z identyfikatorem obszaru 0.
minFloatValue i maxFloatValue
  • Opcjonalna minimalna i maksymalna wartość właściwości typu Float. Ignorowane dla wszystkich innych typów. Ignorowane, jeśli oba mają wartość 0,0.
  • W przypadku właściwości globalnych, jeśli konieczne jest zdefiniowanie wartości minimalnej i maksymalnej, należy zastosować jedną konfigurację 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 wyliczeniowego. Jeśli nie określono (puste) lub przed wersją Androida 14, zakłada się, że obsługiwane są wszystkie wartości wyliczeniowe.
  • W przypadku właściwości globalnych, jeśli konieczne jest zdefiniowanie obsługiwanych wartości wyliczeniowych, należy zastosować jedną konfigurację obszaru z identyfikatorem obszaru 0.

Typy obszarów

Zdefiniowane jako wyliczenia w VehicleArea.aidl . Obsługiwane typy obszarów są wymienione poniżej.

Typ obszaru Wartość Opis
ŚWIATOWY 0x01000000 Ta nieruchomość jest własnością globalną i nie obejmuje wielu obszarów.
OKNO 0x03000000 Obszar oparty na oknach, używa wyliczenia VehicleAreaWindow .
LUSTRO 0x04000000 Obszar oparty na lusterkach, wykorzystuje wyliczenie VehicleAreaMirror .
SIEDZIBA 0x05000000 Obszar oparty na siedzeniach, wykorzystuje wyliczenie VehicleAreaSeat .
DRZWI 0x06000000 Obszar oparty na drzwiach, wykorzystuje wyliczenie VehicleAreaDoor .
KOŁO 0x07000000 Obszar oparty na kołach, wykorzystuje wyliczenie VehicleAreaWheel .

Każda nieruchomość strefowa musi używać wstępnie zdefiniowanego typu obszaru. Każdy typ obszaru ma zestaw flag bitowych zdefiniowanych w wyliczeniu dla typu obszaru. 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

Nieruchomości strefowe są adresowane za pomocą identyfikatorów obszarów. Każda nieruchomość strefowa może obsługiwać jeden lub więcej identyfikatorów obszarów. Identyfikator obszaru składa się z jednej lub większej liczby flag z odpowiedniego wyliczenia. Na przykład nieruchomość korzystająca VehicleAreaSeat może używać następujących identyfikatorów obszarów:

Przedmiot 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 tylnego prawego siedzenia.

Aby dowiedzieć się więcej, zobacz HVAC .