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

Каждое поддерживаемое свойство задается конфигурацией свойств, определенной через структуру 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). См. раздел «Свойства поставщика» для получения информации о свойствах, которые можно настроить.

Например,
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 В свойстве типа Long используется первый элемент поля 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
  • Необязательный список поддерживаемых значений при загрузке, если свойство определено как свойство типа перечисления. Если не указано (пусто) или до Android 14 предполагается, что поддерживаются все значения перечисления.
  • Для глобальных свойств, если необходимо определить поддерживаемые значения перечислений, следует использовать одну конфигурацию области с идентификатором области 0.
  • Это значение является статическим и не изменится, даже если поддерживаемые значения изменятся во время выполнения. Для динамически поддерживаемых значений реализуйте IVehicle#getSupportedValuesLists .
  • Это относится только к свойствам типа перечисления. Для других типов это поле должно быть пустым. Чтобы отобразить поддерживаемые значения для других типов, не являющихся перечислениями, используйте 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 .

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

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

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

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

Для получения более подробной информации см. раздел «Системы отопления, вентиляции и кондиционирования» .