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

Свойства поставщика

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

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

Разрешение на использование объектов недвижимости поставщика

По умолчанию для любых заданных свойств поставщика используется разрешение android.car.Car.PERMISSION_VENDOR_EXTENSION . Для более точного управления разрешениями поддерживается свойство SUPPORT_CUSTOMIZE_VENDOR_PERMISSION . Это статическое свойство доступно только для чтения, и его массив конфигурации определяет разрешения для свойств поставщика. 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 .

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

См. свойства SEAT и STEERING_WHEEL .

системы отопления, вентиляции и кондиционирования воздуха (HVAC)

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

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

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

Правила сопоставления неглобальных свойств системы отопления, вентиляции и кондиционирования воздуха типа 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
  • Ряд 1 справа | Ряд 2 по центру | Ряд 2 справа

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

  • Ряд 1 слева | Ряд 2 по центру | Ряд 2 слева
  • СТРОК_1_ПРАВЫЙ | СТРОК_2_ПРАВЫЙ

Пример 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
  • Ряд 2 слева | Ряд 2 по центру | Ряд 2 справа | Ряд 3 слева | Ряд 3 по центру | Ряд 3 справа

Пример 3

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

  • Ряд 1 слева | Ряд 1 справа

Если бы 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) разработчикам необходимо жестко задать идентификатор свойства. Например, следующий фрагмент кода показывает, как это поддерживается в файле DefaultConfig.h используемом в HIDL VHAL:

{
  .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 .