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