Propiedades especiales

Propiedades del proveedor

Para satisfacer las necesidades específicas de los socios, la VHAL permite el acceso a las propiedades del proveedor a las que se accede. solo a través de las APIs del sistema. Usa los siguientes lineamientos cuando trabajes con propiedades de proveedores:

  • Siempre intenta usar primero las propiedades del sistema; las propiedades del proveedor deben usarse como último recurso cuando ninguna de las propiedades del sistema cumple con tu requisito.
  • Para evitar la fragmentación del ecosistema, las propiedades del proveedor no deben usarse para replicar el uso del vehículo Propiedades que ya existen en el SDK VehiclePropertyIds. Para obtener más información, consulta la sección 2.5, Requisitos de la industria automotriz en el CDD.
  • Usa los siguientes campos para generar el ID de propiedad:
    • El grupo VehiclePropertyGroup:VENDOR VENDOR solo se usa para propiedades de proveedores.
    • VehicleArea Selecciona un tipo de área adecuado.
    • VehiclePropertyType Selecciona el tipo de datos adecuado. El tipo BYTES permite pasar datos sin procesar, lo cual es suficiente en la mayoría de los casos. Enviar macrodatos con frecuencia a través de las propiedades del proveedor puede ralentizar el acceso a toda la red del vehículo. Ten cuidado cuando agregues una carga útil grande.
    • Property ID Elige un ID de dos bytes único para la propiedad del proveedor. Por ejemplo, 0x1234.
  • Completa VehiclePropConfig.configString con una breve descripción del proveedor. propiedad. Esto permite que las herramientas de verificación de validez marquen la replicación accidental de datos existentes propiedades del vehículo. Por ejemplo, “Mi propiedad personalizada para XYZ”.
  • Acceso a través de CarPropertyManager (para componentes de Java) o a través de la libvhalclient (para anuncios nativos). Lo que debes hacer No modifiques otras APIs de vehículos, ya que hacerlo podría generar problemas de compatibilidad en el futuro.

Permiso de propiedades del proveedor

El permiso predeterminado para cualquier propiedad definida del proveedor es android.car.Car.PERMISSION_VENDOR_EXTENSION Para un permiso más detallado y admite la propiedad SUPPORT_CUSTOMIZE_VENDOR_PERMISSION. Esta ESTÁTICA es de solo lectura, para el cual su array de configuración especifica los permisos para las propiedades del proveedor. configArray se establece de la siguiente manera (i es un número entero que comienza desde 0):

  • configArray[3 * i] propId, el ID de la propiedad del proveedor
  • configArray[3 * i + 1] Una enumeración en VehicleVendorPermission.aidl para indicar permiso para leer el valor de la propiedad.
  • configArray[3 * i + 2] Una enumeración en VehicleVendorPermission.aidl para indicar permiso para escribir el valor de la propiedad.

Por ejemplo, el siguiente array de configuración configura dos propiedades del proveedor: vendor_prop_1 y vendor_prop_2, para tener los permisos:

  • vendor_prop_1 requiere android.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_SEAT para leer, android.car.hardware.property.VehicleVendorPermission.PERMISSION_SET_CAR_VENDOR_CATEGORY_SEAT escribir.
  • vendor_prop-2 requiere android.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_INFO de lectura y no admite escritura en apps para Android.
configArray = {
  PERMISSION_SET_VENDOR_CATEGORY_SEAT
    vendor_prop_2, PERMISSION_GET_VENDOR_CATEGORY_INFO, PERMISSION_NOT_ACCESSIBLE
}

Las propiedades de proveedor que no estén en este array toman el permiso de proveedor predeterminado. Cuándo PERMISSION_NOT_ACCESSIBLE está seleccionada, las apps para Android no pueden acceder a la propiedad. En el ejemplo, las apps para Android no pueden escribir un valor para vendor_prop_2. Solo anuncios nativos Los clientes de VHAL pueden escribir en esta propiedad.

Sistemas avanzados de asistencia al conductor (ADAS)

Consulta las Propiedades de vehículos de ADT.

ASIENTO y DIRECCIÓN

Consulta Propiedades del asiento y del volante.

HVAC

Puedes usar la VHAL para controlar el sistema de HVAC mediante la configuración de propiedades relacionadas con el sistema de HVAC. La mayoría de las propiedades de HVAC están asociados con áreas particulares del vehículo, aunque varias son propiedades globales. Las propiedades definidas de ejemplo incluyen lo siguiente:

Propiedad Propósito
HVAC_TEMPERATURE_SET Configura la temperatura según el ID de área.
HVAC_POWER_ON El estado de alimentación del sistema de HVAC por ID de área.

Para las propiedades de HVAC que dependen del estado de alimentación del sistema de HVAC, deben cumplir con en el array de configuración HVAC_POWER_ON. Para ver una lista completa de las propiedades de HVAC, busca HVAC_* en VehicleProperty.aidl, consulta Propiedades del sistema compatibles. propiedades.

Reglas para asignar propiedades de HVAC de tipo VehicleArea que no sean GLOBAL a AreaID: Cada “área” de un tipo de VehicleArea específico que se ve afectado por la propiedad se debe incluido en un ID de área para esa propiedad. Los controladores de temperatura se asignan a en los que más influyen, pero todos los puestos afectados deben incluirse exactamente una vez. La asignación del asiento trasero central del AreaID de la izquierda o la derecha puede parecer arbitraria, pero la inclusión de todas las licencias afectadas en exactamente un área de ID garantiza en el vehículo y que se encuentra disponible una forma razonable de modificar cada asiento.

Ejemplo 1

Un automóvil tiene dos asientos delanteros (ROW_1_LEFT, ROW_1_RIGHT) y tres traseros. (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT) Hay dos unidades de control de temperatura, una para cada el lado del conductor y el lado del pasajero. un conjunto válido de asignaciones de AreaIDs para HVAC_TEMPERATURE_SET sería un array de dos elementos:

  • ROW_1_LEFT | FILA_2_LEFT
  • ROW_1_RIGHT | ROW_2_CENTER | FILA_2_DERECHA

Una asignación alternativa para la misma configuración de hardware sería la siguiente:

  • ROW_1_LEFT | ROW_2_CENTER | FILA_2_LEFT
  • ROW_1_RIGHT | FILA_2_DERECHA

Ejemplo 2

Un auto tiene tres filas de asientos con dos asientos en la primera fila (ROW_1_LEFT, ROW_1_RIGHT) y tres bancas en la segunda (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT) y tercera fila (ROW_3_LEFT, ROW_3_CENTER, ROW_3_RIGHT) Hay tres unidades de control de temperatura, una para cada una el lado del conductor, el lado del pasajero y el trasero. Una forma razonable de asignar HVAC_TEMPERATURE_SET a AreaIDs es un array de tres elementos:

  • FILA_1_LEFT
  • ROW_1_RIGHT
  • ROW_2_LEFT | ROW_2_CENTER | ROW_2_RIGHT | ROW_3_LEFT | ROW_3_CENTER | ROW_3_DERECHA

Ejemplo 3

Un automóvil tiene dos asientos delanteros (ROW_1_LEFT, ROW_1_RIGHT) y tres traseros. (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT) Supongamos que el automóvil admite HVAC_AUTO_ON solo los dos asientos delanteros. Un conjunto de asignaciones válido de AreaIDs para HVAC_AUTO_ON sería un único array de elementos:

  • ROW_1_LEFT | ROW_1_RIGHT

Si HVAC_AUTO_ON tuviera dos unidades de control separadas para el lado del conductor y el pasajero una asignación alternativa sería un array de dos elementos:

  • FILA_1_LEFT
  • ROW_1_RIGHT

Cumplimiento de las reglamentaciones de seguridad general de la Unión Europea

Si el vehículo debe cumplir con los requisitos de la Reglamentación General de Seguridad (GSR) de la Unión Europea a través de Android, la propiedad GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT debe ser compatibles. Un ejemplo de caso de uso es GSR-ISA (Asistente de velocidad inteligente), como se define en la UE Reglamento 2019/2144 Esta propiedad se agregó en la VHAL de AIDL de Android 13, pero con Car Service desde el lanzamiento de Android 12. Esta propiedad se define como un directorio propiedad de número entero global estática, con valores posibles definidos por Enumeración GsrComplianceRequirementType:

Name Valor Descripción
NO_OBLIGATORIO 0 No se requiere el cumplimiento de la GSR.
GSR_COMPLIANCE_REQUIRED_V1 1 El cumplimiento de GSR es obligatorio y la versión requerida de la solución es 1.

Para admitir esta propiedad en el VHAL de HIDL (en Android 12), los proveedores deben codificar el ID de propiedad. Por ejemplo, el siguiente fragmento muestra la compatibilidad con esto en el HIDL de referencia 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}},
}

Para admitir esta propiedad en el VHAL de AIDL (de Android 13), los proveedores pueden usar el ID de propiedad de VehicleProperty.h y enumeración de GsrComplianceRequirementType.h. Para (por ejemplo, como referencia del VHAL del AIDL) DefaultProperties.json:

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

Para leer esta propiedad desde una app para Android, usa CarPropertyManager.getIntProperty