Конфигурации недвижимости

Каждое поддерживаемое свойство указывается конфигурацией свойства, определенной через структуру VehiclePropConfig , и имеет следующие поля.

Поле Описание
prop

Идентификатор свойства. Это должно быть либо одно из определенных системных свойств из VehicleProperty.aidl , либо свойство поставщика. Идентификатор свойства формируется с помощью битового ИЛИ следующих полей (справа налево):

  • (0x0000 0000 ) 16 бит: уникальный идентификатор из диапазона 0x0100 - 0xffff.
  • (0x00 00 0000) 8 бит: Типы свойств , определяющие тип свойства.
  • (0x0 0 000000) 4 бита: Типы областей .
  • (0x 0 0000000) 4 бита: VehiclePropertyGroup Это либо SYSTEM (0x10000000), либо VENDOR (0x20000000). См. Vendor Properties для свойств, которые можно настроить.

Например,
INFO_VIN (0x11100100) = UniqueID (0x00000100) | VehiclePropertyType.STRING (0x00100000) | VehicleArea.GLOBAL (0x01000000) | VehiclePropertyGroup.SYSTEM (0x10000000)

access
  • Режим доступа к свойству. Должен быть одним из READ , WRITE или READ_WRITE .
  • Для системных свойств это должен быть один из определенных режимов доступа, задокументированных в VehicleProperty.aidl .
  • Для свойств, имеющих доступ по областям, это максимальное подмножество доступа по областям, например, если свойства имеют две области с доступом READ и READ_WRITE , это должно быть установлено на READ .
changeMode
  • Режим изменения свойства. Должен быть одним из STATIC , ON_CHANGE или CONTINUOUS . STATIC означает, что значение свойства никогда не изменяется после загрузки системы. ON_CHANGE означает, что VHAL должен сообщать об изменении значения. CONTINUOUS означает, что значение свойства изменяется непрерывно, и VHAL должен сообщать на основе частоты выборки подписки.
  • Для свойств системы это должно быть равно режиму изменения, описанному в VehicleProperty.aidl .
configArray Необязательный массив для хранения конфигурации, специфичной для свойств. Может быть пустым. Для некоторых системных свойств, например, GEAR_SELECTION , массив конфигурации имеет особое значение и должен быть указан.
configString Необязательная строка, содержащая конфигурацию конкретного свойства. Может быть пустой.
minSampleRate и maxSampleRate Минимальная и максимальная поддерживаемая частота дискретизации для непрерывного свойства (в герцах). Не используется, если свойство не непрерывное. minSampleRate и maxSampleRate должны быть достижимы реализацией VHAL. Не все частоты дискретизации между минимальной и максимальной должны поддерживаться.

Типы недвижимости

Определены как перечисления в VehiclePropertyType.aidl . Поддерживаемые типы свойств перечислены в следующей таблице.

Тип недвижимости Ценить Описание
STRING 0x00100000 Строковое свойство, использует поле stringValue в значении свойства Vehicle .
BOOLEAN 0x00200000 Boolean свойство, использует первый элемент в поле int32Values ​​в значении свойства Vehicle . 0 означает false , None 0 означает true .
INT32 0x00400000 Integer свойство, использует первый элемент в поле int32Values ​​в значении свойства Vehicle .
INT32_VEC 0x00410000 Свойство Integer[] использует элементы в поле int32Values ​​в значении свойства Vehicle .
INT64 0x00500000 Длинное свойство, использует первый элемент в поле int64Values ​​в значении свойства Vehicle .
INT64_VEC 0x00510000 Свойство Long[] , использует элементы в поле int64Values ​​в значении свойства Vehicle .
FLOAT 0x00600000 Свойство Float , использует первый элемент в поле floatValues ​​в значении свойства Vehicle .
FLOAT_VEC 0x00610000 Свойство Float[] использует элементы в поле floatValues ​​в значении свойства Vehicle .
BYTES 0x00700000 Свойство byte[] использует элементы в поле byteValues ​​в значении свойства Vehicle .
MIXED 0x00e00000 Свойство смешанного типа. Любая комбинация скалярных или векторных типов. Точный формат должен быть указан в массиве конфигурации в конфигурации свойства.

Для свойств типа MIXED поставщика configArray необходимо отформатировать в следующей структуре:

  • configArray[0] , 1 указывает, что свойство имеет String значение
  • configArray[1] , 1 указывает, что свойство имеет Boolean значение
  • configArray[2] , 1 указывает, что свойство имеет Integer значение
  • configArray[3] , число указывает размер Integer[] в свойстве
  • configArray[4] , 1 указывает, что свойство имеет Long значение
  • configArray[5] , число указывает размер Long[] в свойстве
  • configArray[6] , 1 указывает, что свойство имеет значение Float
  • configArray[7] , число указывает размер Float[] в свойстве
  • configArray[8] , число указывает размер byte[] в свойстве.

Например, configArray = {1, 1, 1, 3, 0, 0, 0, 0, 0} указывает, что свойство имеет String значение, Boolean значение, Integer значение и массив из трех целых чисел.

Конфигурация идентификатора области

Каждая конфигурация свойства также может содержать список конфигураций идентификаторов областей. Этот список необязателен для глобальных свойств и обязателен для зонированных свойств (свойств с несколькими поддерживаемыми областями). Каждая конфигурация идентификатора области имеет следующие поля.

Поле Описание
areaId Идентификатор этой области. См. Идентификаторы областей .
minInt32Value и maxInt32Value
  • Необязательное минимальное и максимальное значение для свойств типа INT32 во время загрузки. Для всех остальных типов должно быть 0. Игнорируется, если оба равны 0.
  • Для глобального свойства, если необходимо определить минимальное и максимальное значение, необходимо использовать одну конфигурацию области с идентификатором области 0.
  • Это значение статическое и не изменится, даже если минимальное или максимальное значение изменится во время выполнения. Реализуйте IVehicle#getMinMaxSupportedValue для динамического минимального или максимального значения.
minInt64Value и maxInt64Value
  • Необязательное минимальное и максимальное значение для свойств типа INT64 во время загрузки. Для всех остальных типов должно быть 0. Игнорируется, если оба равны 0.
  • Для глобального свойства, если необходимо определить минимальное и максимальное значение, необходимо использовать одну конфигурацию области с идентификатором области 0.
  • Это значение статическое и не изменится, даже если минимальное или максимальное значение изменится во время выполнения. Реализуйте IVehicle#getMinMaxSupportedValue для динамического минимального или максимального значения.
minFloatValue и maxFloatValue
  • Необязательное минимальное и максимальное значение для свойств типа Float во время загрузки. Для всех других типов должно быть 0. Игнорируется, если оба равны 0.0.
  • Для глобального свойства, если необходимо определить минимальное и максимальное значение, необходимо использовать одну конфигурацию области с идентификатором области 0.
  • Это значение статическое и не изменится, даже если минимальное или максимальное значение изменится во время выполнения. Реализуйте IVehicle#getMinMaxSupportedValue для динамического минимального или максимального значения.
( Новое в Android 14 )
supportedEnumValues
  • Необязательный список поддерживаемых значений во время загрузки, если свойство определено как свойство типа enum. Если не указано (пусто) или до Android 14, предполагается, что поддерживаются все значения enum.
  • Для глобального свойства, если необходимо определить поддерживаемые значения перечисления, необходимо использовать одну конфигурацию области с идентификатором области 0.
  • Это значение статическое и не изменится, даже если поддерживаемые значения изменятся во время выполнения. Реализуйте IVehicle#getSupportedValuesLists для динамических поддерживаемых значений.
  • Это применимо только к свойствам типа enum. Для других типов это поле должно быть пустым. Чтобы предоставить поддерживаемые значения для других неперечислимых типов, используйте IVehicle#getSupportedValuesLists .
( Новое в Android 15 )
supportVariableUpdateRate
  • Поддерживается ли переменная скорость обновления. Это применимо только к непрерывным свойствам.
  • Если это true , приложение может включить переменную частоту обновления для подписки, чтобы получать события обновления свойств только при изменении значения свойства (что рассматривает непрерывные свойства как свойства, изменяющиеся при изменении).
  • Если все подписчики на свойство включают переменную частоту обновления, запрос на подписку к VHAL включает переменную частоту обновления для свойства, и VHAL должен отправлять события обновления свойства только при изменении его значения.
  • Если какой-либо подписчик запрашивает фиксированную частоту обновления, запрос на подписку к VHAL отключает переменную частоту обновления для свойства, а AAOS отфильтровывает дублирующиеся события для клиентов, запрашивающих переменную частоту обновления.
  • НАСТОЯТЕЛЬНО РЕКОМЕНДУЕТСЯ поддерживать переменную частоту обновления для всех непрерывных свойств, не относящихся к тактовому импульсу, для повышения производительности, если только данные свойств не являются большими (например, массив байтов размером 1 КБ) и не могут занимать большой объем памяти для кэширования.
( Новое в Android 16 )
hasSupportedValueInfo
  • Если не равно null , показывает, указывает ли это свойство минимальные или максимальные поддерживаемые значения или список поддерживаемых значений.
  • Это поле определяет, поддерживаются ли динамические поддерживаемые значения API: getMinMaxSupportedValue , getSupportedValuesLists , subscribeSupportedValueChange , unsubscribeSupportedValueChange для этого идентификатора свойства и идентификатора области.
  • Если значение не равно null , VHAL должен реализовать эти API для этого идентификатора свойства и идентификатора области.
  • Если null или в Android 15 или ниже, динамические поддерживаемые значения для этого идентификатора свойства и идентификатора области не поддерживаются. Клиент должен использовать информацию о статическом поддерживаемом значении, предоставленную в конфигурации свойства транспортного средства.

Типы площадей

Определены как перечисления в VehicleArea.aidl . Поддерживаемые типы областей перечислены ниже.

Тип площади Ценить Описание
ГЛОБАЛЬНЫЙ 0x01000000 Данный объект недвижимости является глобальным и не имеет нескольких областей.
ОКНО 0x03000000 Область основана на окнах, использует перечисление VehicleAreaWindow .
ЗЕРКАЛО 0x04000000 Площадь на основе зеркал, использует перечисление VehicleAreaMirror .
СИДЕНЬЕ 0x05000000 Площадь определяется по количеству мест, используется перечисление VehicleAreaSeat .
ДВЕРЬ 0x06000000 Площадь на основе дверей, использует перечисление VehicleAreaDoor .
КОЛЕСО 0x07000000 Площадь основана на колесах, используется перечисление VehicleAreaWheel .

Каждое зонированное свойство должно использовать предопределенный тип области. Каждый тип области имеет набор битовых флагов, определенных в перечислении для типа области. Например, область SEAT определяет перечисления 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
  • ...

Идентификаторы областей

Зонированные свойства адресуются через идентификаторы областей. Каждое зонированное свойство может поддерживать один или несколько идентификаторов областей. Идентификатор области состоит из одного или нескольких флагов из соответствующего перечисления. Например, свойство, использующее VehicleAreaSeat , может использовать следующие идентификаторы областей:

Элемент Описание
ROW_1_LEFT | ROW_1_RIGHT Идентификатор зоны применяется к обоим передним сиденьям.
ROW_2_LEFT Применимо только к заднему левому сиденью.
ROW_2_RIGHT Применимо только к заднему правому сиденью.

Чтобы узнать больше, см. раздел HVAC .