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

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

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

  • Всегда старайтесь сначала использовать свойства системы, свойства поставщика следует использовать в крайнем случае, когда ни одно из свойств системы не соответствует вашим требованиям.
  • Чтобы предотвратить фрагментацию экосистемы, свойства поставщиков не должны использоваться для репликации свойств транспортных средств, которые уже существуют в SDK VehiclePropertyIds . Дополнительную информацию см. в разделе 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 . Это свойство STATIC доступно только для чтения, для которого его массив конфигурации определяет разрешения для свойств поставщика. 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 связаны с конкретными областями автомобиля, хотя некоторые из них являются глобальными свойствами. Примеры определенных свойств включают в себя:

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

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

Правила сопоставления свойств HVAC, не относящихся к GLOBAL типу VehicleArea, с 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_RIGHT | ROW_2_CENTER | ROW_2_RIGHT

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

  • 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

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

Если автомобиль должен соответствовать требованиям Общего регламента безопасности Европейского Союза (GSR) через Android, необходимо поддерживать свойство GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT . Примером использования является GSR-ISA (Intelligent Speed ​​Assist), как определено в Регламенте ЕС 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 .