Propiedades del proveedor
Para satisfacer las necesidades específicas de los socios, VHAL permite propiedades de proveedores a las que se accede únicamente a través de las API del sistema. Utilice las siguientes pautas cuando trabaje con propiedades de proveedores:
- Intente siempre utilizar las propiedades del sistema primero; las propiedades del proveedor deben usarse como último recurso cuando ninguna de las propiedades del sistema satisface sus necesidades.
- Para evitar la fragmentación del ecosistema, las propiedades del proveedor no se deben utilizar para replicar propiedades del vehículo que ya existen en el SDK VehiclePropertyIds . Para obtener más información, consulte la Sección 2.5, Requisitos automotrices en la CDD.
- Utilice los siguientes campos para generar el ID de propiedad:
-
VehiclePropertyGroup:VENDOR
El grupo VENDOR se utiliza solo para propiedades de proveedores. -
VehicleArea
Seleccione un tipo de área apropiado. -
VehiclePropertyType
Seleccione el tipo de datos adecuado. El tipo BYTES permite pasar datos sin procesar, lo cual es suficiente en la mayoría de los casos. El envío frecuente de big data a través de las propiedades de los proveedores puede ralentizar el acceso a toda la red de vehículos. Tenga cuidado al agregar una carga útil grande. -
Property ID
Elija una ID única de dos bytes para la propiedad del proveedor. Por ejemplo, 0x1234.
-
- Complete
VehiclePropConfig.configString
con una breve descripción de la propiedad del proveedor. Esto permite que las herramientas de verificación de validez marquen la replicación accidental de propiedades de vehículos existentes. Por ejemplo, "Mi propiedad personalizada para XYZ". - Acceso a través de CarPropertyManager (para componentes Java) o mediante
libvhalclient
(para nativos). No modifique las API de otros automóviles, ya que hacerlo puede generar problemas de compatibilidad en el futuro.
Permiso de propiedades del proveedor
El permiso predeterminado para cualquier propiedad de proveedor definida es android.car.Car.PERMISSION_VENDOR_EXTENSION
. Para una mayor granularidad del control de permisos, admita la propiedad SUPPORT_CUSTOMIZE_VENDOR_PERMISSION
. Esta propiedad ESTÁTICA es de solo lectura, por lo que su matriz de configuración especifica los permisos para las propiedades del proveedor. El configArray
se establece de la siguiente manera (i es un número entero que comienza en 0):
-
configArray[3 * i]
propId, el ID de propiedad de la propiedad del proveedor. -
configArray[3 * i + 1]
Una enumeración enVehicleVendorPermission.aidl
para indicar permiso para leer el valor de la propiedad. -
configArray[3 * i + 2]
Una enumeración enVehicleVendorPermission.aidl
para indicar permiso para escribir el valor de la propiedad.
Por ejemplo, la siguiente matriz de configuración configura dos propiedades de proveedor, vendor_prop_1
y vendor_prop_2
, para tener los permisos:
-
vendor_prop_1
requiereandroid.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_SEAT
para leer,android.car.hardware.property.VehicleVendorPermission.PERMISSION_SET_CAR_VENDOR_CATEGORY_SEAT
para escribir. -
vendor_prop-2
requiereandroid.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_INFO
para leer y no se puede escribir en aplicaciones de 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 esta matriz obtienen el permiso de proveedor predeterminado. Cuando se selecciona PERMISSION_NOT_ACCESSIBLE
, las aplicaciones de Android no pueden acceder a la propiedad. En el ejemplo, las aplicaciones de Android no pueden escribir un valor para vendor_prop_2
. Sólo los clientes VHAL nativos pueden escribir en esta propiedad.
Sistemas avanzados de asistencia al conductor (ADAS)
Consulte Propiedades del vehículo ADAS .ASIENTO y DIRECCIÓN
Consulte Propiedades del asiento y el volante .
climatización
Puede utilizar VHAL para controlar HVAC configurando propiedades relacionadas con HVAC. La mayoría de las propiedades de HVAC están asociadas con áreas particulares del vehículo, aunque varias son propiedades globales. Las propiedades definidas de ejemplo incluyen:
Propiedad | Objetivo |
---|---|
HVAC_TEMPERATURE_SET | Establezca la temperatura por ID de área. |
HVAC_POWER_ON | El estado de energía del sistema HVAC por ID de área. |
Para las propiedades de HVAC que dependen del estado de energía del sistema HVAC, deben aparecer en la lista de configuración HVAC_POWER_ON
. Para ver una lista completa de propiedades de HVAC, busque HVAC_*
en VehicleProperty.aidl
, consulte Propiedades del sistema admitidas . propiedades.
Reglas para asignar propiedades HVAC de tipo VehicleArea no GLOBALES a AreaID: Cada “área” para un tipo VehicleArea
específico que se ve afectada por la propiedad debe incluirse en un ID de área para esa propiedad. Los controladores de temperatura se asignan a los asientos en los que "influyen más", pero cada asiento afectado debe incluirse exactamente una vez. La asignación del asiento trasero central al AreaID izquierdo o derecho puede parecer arbitraria, pero la inclusión de cada asiento afectado en exactamente un AreaID garantiza que todos los asientos del automóvil se expresen y que esté disponible una forma razonable de afectar a cada asiento.
Ejemplo 1
Un automóvil tiene dos asientos delanteros (ROW_1_LEFT, ROW_1_RIGHT) y tres asientos traseros (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT). Hay dos unidades de control de temperatura, una para el lado del conductor y otra para el lado del pasajero. Un conjunto de mapeo válido de AreaID para HVAC_TEMPERATURE_SET
sería una matriz de dos elementos:
- ROW_1_LEFT | ROW_2_LEFT
- ROW_1_RIGHT | ROW_2_CENTER | ROW_2_RIGHT
Una asignación alternativa para la misma configuración de hardware sería:
- ROW_1_LEFT | ROW_2_CENTER | ROW_2_LEFT
- ROW_1_RIGHT | ROW_2_RIGHT
Ejemplo 2
Un automóvil tiene tres filas de asientos con dos asientos en la primera fila (ROW_1_LEFT, ROW_1_RIGHT) y tres asientos en la segunda (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT) y tercera filas (ROW_3_LEFT, ROW_3_CENTER, ROW_3_RIGHT). Hay tres unidades de control de temperatura, una para el lado del conductor, una para el lado del pasajero y una para la parte trasera. Una forma razonable de asignar HVAC_TEMPERATURE_SET
a AreaID es una matriz de tres elementos:
- ROW_1_LEFT
- ROW_1_RIGHT
- ROW_2_LEFT | ROW_2_CENTER | ROW_2_RIGHT | ROW_3_LEFT | FILA_3_CENTRO | ROW_3_RIGHT
Ejemplo 3
Un automóvil tiene dos asientos delanteros (ROW_1_LEFT, ROW_1_RIGHT) y tres asientos traseros (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT). Supongamos que el automóvil admite HVAC_AUTO_ON solo para los dos asientos delanteros. Un conjunto de mapeo válido de AreaID para HVAC_AUTO_ON sería una matriz de un solo elemento:
- ROW_1_LEFT | ROW_1_RIGHT
Si HVAC_AUTO_ON
tuviera dos unidades de control separadas para el lado del conductor y el lado del pasajero, un mapeo alternativo sería una matriz de dos elementos:
- ROW_1_LEFT
- ROW_1_RIGHT
Cumplimiento de la normativa general de seguridad de la Unión Europea
Si el vehículo debe cumplir con los requisitos del Reglamento general de seguridad (GSR) de la Unión Europea a través de Android, se debe admitir la propiedad GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT
. Un caso de uso de ejemplo es GSR-ISA (Asistencia de velocidad inteligente) tal como se define en el Reglamento de la UE 2019/2144. Esta propiedad se agrega en AIDL VHAL desde Android 13, sin embargo, es compatible con Car Service desde el lanzamiento de Android 12. Esta propiedad se define como una propiedad entera global estática de solo lectura, con valores posibles definidos por la enumeración GsrComplianceRequirementType
:
Nombre | Valor | Descripción |
---|---|---|
GSR_COMPLIANCE_NOT_REQUIRED | 0 | No se requiere el cumplimiento de GSR |
GSR_COMPLIANCE_REQUIRED_V1 | 1 | Se requiere el cumplimiento de GSR y la versión de la solución de requisitos es 1. |
Para admitir esta propiedad en HIDL VHAL (en Android 12), los proveedores deben codificar el ID de la propiedad. Por ejemplo, el siguiente fragmento muestra cómo se admite esto en la referencia 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}}, }
Para admitir esta propiedad en AIDL VHAL (a partir de Android 13), los proveedores pueden usar el ID de propiedad de VehicleProperty.h
y la enumeración de GsrComplianceRequirementType.h
. Por ejemplo, como en la referencia AIDL VHAL DefaultProperties.json
:
{ "property": "VehicleProperty::GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT", "defaultValue": { "int32Values": [ "GsrComplianceRequirementType::GSR_COMPLIANCE_REQUIRED_V1" ] } }
Para leer esta propiedad desde una aplicación de Android, use CarPropertyManager.getIntProperty
.
- En Android 13 y versiones posteriores, utilice
VehiclePropertyIds.GENERAL_SAFETY_REGULATION_COMPLIANCE
como ID de propiedad. - En Android 12, utilice el valor codificado de 0x11400F47 como ID de propiedad. Esta propiedad requiere el permiso
Car#PERMISSION_CAR_INFO
.