Особые свойства

Свойства продавца

Для поддержки потребностей партнёров VHAL позволяет использовать свойства поставщика, доступ к которым осуществляется только через системные API. При работе со свойствами поставщика следуйте следующим рекомендациям:

  • Всегда старайтесь в первую очередь использовать системные свойства, свойства поставщика следует использовать в качестве крайней меры, если ни одно из системных свойств не отвечает вашим требованиям.
  • Во избежание фрагментации экосистемы свойства поставщика не должны использоваться для копирования свойств транспортного средства, уже существующих в VehiclePropertyIds SDK. Подробнее см. в разделе 2.5 «Требования к автомобильной технике» в CDD.
  • Для генерации идентификатора недвижимости используйте следующие поля:
    • VehiclePropertyGroup:VENDOR Группа VENDOR используется только для свойств поставщика.
    • VehicleArea Выберите подходящий тип области.
    • VehiclePropertyType выберите правильный тип данных. Тип BYTES позволяет передавать необработанные данные, чего достаточно в большинстве случаев. Частая отправка больших объёмов данных через свойства поставщика может замедлить доступ ко всей сети транспортного средства. Будьте осторожны при добавлении большого объёма полезной нагрузки.
    • Property ID Выберите уникальный двухбайтовый идентификатор для свойства поставщика. Например, 0x1234.
  • Заполните VehiclePropConfig.configString кратким описанием свойства поставщика. Это позволит инструментам проверки корректности отмечать случайное копирование существующих свойств транспортного средства. Например, «Моё пользовательское свойство для XYZ».
  • Доступ через CarPropertyManager (для компонентов Java) или через libvhalclient (для нативных компонентов). Не изменяйте другие автомобильные API, так как это может привести к проблемам совместимости в будущем.

Разрешение на продажу недвижимости

Разрешение по умолчанию для любых определённых свойств поставщика — android.car.Car.PERMISSION_VENDOR_EXTENSION . Для более точного управления разрешениями используйте свойство SUPPORT_CUSTOMIZE_VENDOR_PERMISSION . Это СТАТИЧЕСКОЕ свойство доступно только для чтения, и его массив config определяет разрешения для свойств поставщика. Массив configArray задаётся следующим образом (i — целое число, начиная с 0):

  • configArray[3 * i] propId, идентификатор свойства поставщика.
  • configArray[3 * i + 1] Перечисление в VehicleVendorPermission.aidl для указания разрешения на чтение значения свойства.
  • configArray[3 * i + 2] Перечисление в VehicleVendorPermission.aidl для указания разрешения на запись значения свойства.

Например, следующий массив конфигурации настраивает два свойства поставщика, vendor_prop_1 и vendor_prop_2 , для предоставления разрешений:

  • vendor_prop_1 требует android.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_SEAT для чтения и android.car.hardware.property.VehicleVendorPermission.PERMISSION_SET_CAR_VENDOR_CATEGORY_SEAT для записи.
  • vendor_prop-2 требует android.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_INFO для чтения и недоступен для записи в приложениях Android.
configArray = {
  PERMISSION_SET_VENDOR_CATEGORY_SEAT
    vendor_prop_2, PERMISSION_GET_VENDOR_CATEGORY_INFO, PERMISSION_NOT_ACCESSIBLE
}

Свойства поставщика, не входящие в этот массив, используют разрешение поставщика по умолчанию. Если выбрано PERMISSION_NOT_ACCESSIBLE , приложения Android не могут получить доступ к свойству. В этом примере приложения Android не могут записывать значение для vendor_prop_2 . Запись в это свойство доступна только нативным клиентам VHAL.

Усовершенствованные системы помощи водителю (ADAS)

См. Свойства транспортного средства ADAS .

СИДЕНЬЕ и РУЛЕВОЕ УПРАВЛЕНИЕ

См. Свойства сиденья и рулевого колеса .

ОВКВ

Вы можете использовать VHAL для управления системой отопления, вентиляции и кондиционирования воздуха (HVAC), настроив связанные с ней свойства. Большинство свойств HVAC связаны с определёнными зонами автомобиля, хотя некоторые из них являются глобальными. Примеры определяемых свойств:

Свойство Цель
HVAC_TEMPERATURE_SET Установите температуру для каждого идентификатора области.
HVAC_POWER_ON Состояние питания системы HVAC по идентификатору области.

Свойства HVAC, зависящие от состояния питания системы HVAC, должны быть указаны в массиве конфигурации HVAC_POWER_ON . Чтобы увидеть полный список свойств HVAC, выполните поиск по запросу HVAC_* в файле VehicleProperty.aidl . См. раздел «Поддерживаемые системные свойства ».

Правила сопоставления неглобального типа VehicleArea систем отопления, вентиляции и кондиционирования воздуха (HVAC) с идентификаторами AreaID: каждая «зона» конкретного типа VehicleArea , на которую влияет это свойство, должна быть включена в идентификатор области для этого свойства. Регуляторы температуры назначаются сиденьям, на которые они «наиболее влияют», но каждое затронутое сиденье должно быть включено ровно один раз. Назначение центрального заднего сиденья левому или правому идентификатору AreaID может показаться произвольным, но включение каждого затронутого сиденья ровно в один идентификатор AreaID гарантирует, что все места в автомобиле будут отображены, и что для каждого из них будет доступен разумный способ воздействия.

Пример 1

В автомобиле два передних сиденья (ROW_1_LEFT, ROW_1_RIGHT) и три задних (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT). Имеется два блока управления температурой: по одному для стороны водителя и стороны пассажира. Допустимым набором сопоставлений AreaID для HVAC_TEMPERATURE_SET будет массив из двух элементов:

  • ROW_1_LEFT | ROW_2_LEFT
  • ROW_1_ПРАВАЯ | ROW_2_ЦЕНТРАЛЬНАЯ | ROW_2_ПРАВАЯ

Альтернативное сопоставление для той же конфигурации оборудования будет следующим:

  • ROW_1_LEFT | ROW_2_CENTER | ROW_2_LEFT
  • ROW_1_RIGHT | ROW_2_RIGHT

Пример 2

В автомобиле три ряда сидений: два сиденья в первом ряду (ROW_1_LEFT, ROW_1_RIGHT) и по три сиденья во втором (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT) и третьем рядах (ROW_3_LEFT, ROW_3_CENTER, ROW_3_RIGHT). Имеется три блока управления температурой: по одному для стороны водителя, стороны пассажира и задней части салона. Разумный способ сопоставить HVAC_TEMPERATURE_SET с AreaID — использовать массив из трёх элементов:

  • ROW_1_LEFT
  • ROW_1_RIGHT
  • ROW_2_LEFT | ROW_2_CENTER | ROW_2_RIGHT | ROW_3_LEFT | ROW_3_CENTER | ROW_3_RIGHT

Пример 3

В автомобиле два передних сиденья (ROW_1_LEFT, ROW_1_RIGHT) и три задних (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT). Предположим, что автомобиль поддерживает функцию HVAC_AUTO_ON только для двух передних сидений. Допустимым набором сопоставлений AreaID для HVAC_AUTO_ON будет массив из одного элемента:

  • ROW_1_LEFT | ROW_1_RIGHT

Если бы HVAC_AUTO_ON имел два отдельных блока управления для стороны водителя и стороны пассажира, альтернативным отображением был бы массив из двух элементов:

  • ROW_1_LEFT
  • ROW_1_RIGHT

ИНФОРМАЦИЯ_ВНЕШНИЕ_РАЗМЕРЫ

Внешние размеры транспортного средства измеряются в миллиметрах, как показано на рисунке 1.

Рисунок 1. Внешние размеры автомобиля, вид спереди.
Рисунок 2. Внешние размеры автомобиля, вид сбоку.

Используйте свойства, описанные в этой таблице, для определения внешних размеров транспортного средства.

Собственность транспортного средства поле VHAL Описание
Высота int32Values[0] Расстояние по вертикали между землёй и самой высокой точкой автомобиля. Предполагается, что шины на заводе нормально накачаны.
Длина int32Values[1] Горизонтальное расстояние между самыми удаленными точками передней и задней части транспортного средства.
Ширина без учета зеркал int32Values[2] Горизонтальное расстояние между двумя самыми крайними точками с каждой стороны транспортного средства, исключая боковые зеркала.
Ширина, включая зеркала int32Values[3] Горизонтальное расстояние между двумя самыми крайними точками с каждой стороны транспортного средства, включая боковые зеркала.
Колесная база int32Values[4] Расстояние между центрами передних и задних колес транспортного средства.
Ширина колеи, спереди int32Values[5] Расстояние между передними колесами, измеренное от центральной линии протектора одной шины до центральной линии протектора противоположной шины.
Ширина колеи, задняя int32Values[6] Расстояние между задними колесами, измеренное от центральной линии протектора одной шины до центральной линии протектора противоположной шины.
Диаметр поворота от бордюра до бордюра int32Values[7] Диаметр окружности, описываемой внешними колесами транспортного средства при совершении полного поворота с полностью заблокированным рулевым колесом.

Соблюдение общих правил безопасности Европейского Союза

Если автомобиль должен соответствовать требованиям Общих правил безопасности Европейского союза (GSR) через Android, необходимо поддерживать свойство GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT . Примером использования является GSR-ISA (интеллектуальная система контроля скорости), как определено в Регламенте ЕС 2019/2144. Это свойство добавлено в AIDL VHAL с Android 13, однако поддерживается в Car Service с момента выхода Android 12. Это свойство определено как статическое глобальное целочисленное свойство, доступное только для чтения, с возможными значениями, определяемыми перечислением GsrComplianceRequirementType :

Имя Ценить Описание
GSR_COMPLIANCE_NOT_REQUIRED 0 Соблюдение GSR не требуется
GSR_COMPLIANCE_REQUIRED_V1 1 Требуется соответствие GSR, версия требуемого решения — 1.

Для поддержки этого свойства в HIDL VHAL (в Android 12) поставщики должны жёстко закодировать идентификатор свойства. Например, следующий фрагмент кода показывает, как это реализовано в файле HIDL VHAL DefaultConfig.h :

{
  .config =
      {
          // GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT
          .prop = 0x11400F47,
          .access = VehiclePropertyAccess::READ,
          .changeMode = VehiclePropertyChangeMode::STATIC,
      },
  // GsrComplianceRequirementType::GSR_COMPLIANCE_REQUIRED_V1
  .initialValue = {.int32Values = {1}},
}

Для поддержки этого свойства в AIDL VHAL (начиная с Android 13) поставщики могут использовать идентификатор свойства из VehicleProperty.h и перечисление из GsrComplianceRequirementType.h . Например, как в файле AIDL VHAL DefaultProperties.json :

{
  "property": "VehicleProperty::GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT",
  "defaultValue": {
    "int32Values": [
      "GsrComplianceRequirementType::GSR_COMPLIANCE_REQUIRED_V1"
    ]
  }
}

Чтобы прочитать это свойство из приложения Android, используйте CarPropertyManager.getIntProperty .

  • В Android 13 и выше используйте VehiclePropertyIds.GENERAL_SAFETY_REGULATION_COMPLIANCE в качестве идентификатора свойства.
  • В Android 12 используйте жёстко заданное значение 0x11400F47 в качестве идентификатора свойства. Для этого свойства требуется разрешение Car#PERMISSION_CAR_INFO .