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

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

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

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

Например,
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. Для других типов это поле должно быть пустым. Чтобы получить поддерживаемые значения для других типов, не являющихся 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 .