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.
- El grupo
- 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 proveedorconfigArray[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, 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
requiereandroid.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
requiereandroid.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
INFO_EXTERIOR_DIMENSIONS
Las dimensiones exteriores de un vehículo se miden en milímetros, como se ilustra en la Figura 1.
Usa las propiedades que se describen en esta tabla para definir el exterior de un vehículo dimensiones.
Propiedad del vehículo | Campo de VHAL | Descripción |
---|---|---|
Altura | int32Values[0] |
Distancia vertical entre el suelo y el punto más alto del vehículo. Esto supone ruedas de fábrica normalmente infladas. |
Duración | int32Values[1] |
Distancia horizontal entre los puntos más externos del frente y el trasero del vehículo |
Ancho, sin incluir espejos | int32Values[2] |
Distancia horizontal entre los dos puntos más externos de cada lado del vehículo, sin incluir los espejos laterales. |
Ancho, incluidos espejos | int32Values[3] |
Distancia horizontal entre los dos puntos más exteriores de cada lado del vehículo incluidos los espejos laterales. |
Distancia entre ejes | int32Values[4] |
Distancia entre el centro de las ruedas delantera y trasera del vehículo. |
Ancho de vía, frente | int32Values[5] |
La distancia entre la rueda delantera, medida desde la línea central de una banda de rodadura hasta la línea central de la banda de rodadura opuesta. |
Ancho de vía, atrás | int32Values[6] |
La distancia entre la rueda trasera, medida desde la línea central de una banda de rodadura hasta la línea central de la banda de rodadura opuesta. |
Diámetro de giro de rampa a acera | int32Values[7] |
El diámetro del círculo formado por las ruedas exteriores del vehículo cuando se hace un giro completo con un volante completamente cerrado. |
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 una cuenta de servicio
propiedad de número entero global estática, con valores posibles definidos por
Enumeración GsrComplianceRequirementType
:
Name | Valor | Descripción |
---|---|---|
GSR_COMPLIANCE_NOT_REQUIRED |
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
- En Android 13 y versiones posteriores, usa
VehiclePropertyIds.GENERAL_SAFETY_REGULATION_COMPLIANCE
como el ID de propiedad. - En Android 12, usa el valor hard-coded de 0x11400F47 como ID de propiedad. Esta
propiedad requiere el permiso
Car#PERMISSION_CAR_INFO
.