Parámetros de configuración de la propiedad
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Cada propiedad admitida se especifica mediante una configuración de propiedad definida a través de la estructura VehiclePropConfig
y tiene los siguientes campos.
Campo |
Descripción |
---|
prop |
Es el ID de la propiedad. Debe ser una de las propiedades del sistema definidas en VehicleProperty.aidl o una propiedad del proveedor. El ID de la propiedad se construye con la operación bit a bit OR de los siguientes campos (de derecha a izquierda):
- (0x00000000) 16 bits: Es un ID único del rango 0x0100 a 0xffff.
- (0x00000000) 8 bits: Tipos de propiedad que definen el tipo de propiedad.
- (0x00000000) 4 bits: Tipos de área.
- (0x00000000) 4 bits:
VehiclePropertyGroup Puede ser SYSTEM (0x10000000) o VENDOR (0x20000000). Consulta Propiedades del proveedor para conocer las propiedades que puedes personalizar.
Por ejemplo,
INFO_VIN (0x11100100) = UniqueID (0x00000100) | VehiclePropertyType.STRING (0x00100000) | VehicleArea.GLOBAL (0x01000000) | VehiclePropertyGroup.SYSTEM (0x10000000)
|
access |
- Es el modo de acceso a la propiedad. Debe ser
READ , WRITE o
READ_WRITE .
- En el caso de las propiedades del sistema, debe ser uno de los modos de acceso definidos que se documentan en
VehicleProperty.aidl .
- En el caso de las propiedades que tienen acceso por área, este es el subconjunto máximo del acceso por área. Por ejemplo, si las propiedades tienen dos áreas cuyo acceso es
READ y READ_WRITE , esto se debe establecer en READ .
|
changeMode |
- Modo de cambio de la propiedad. Debe ser
STATIC ,
ON_CHANGE o CONTINUOUS . STATIC significa que el valor de la propiedad nunca cambia después de un inicio del sistema. ON_CHANGE significa que el VHAL
debe informar cuando cambia el valor. CONTINUOUS significa que el valor de la propiedad cambia continuamente y que el VHAL debe informar según la frecuencia de muestreo de la suscripción.
- En el caso de las propiedades del sistema, este valor debe ser igual al modo de cambio que se documenta en
VehicleProperty.aidl .
|
configArray |
Es un array opcional que contiene la configuración específica de la propiedad. Puede estar vacío. Para ciertas propiedades del sistema, por ejemplo, GEAR_SELECTION , el array de configuración tiene un significado especial y se debe especificar.
|
configString |
Es una cadena opcional que contiene la configuración específica de la propiedad. Puede estar vacío. |
minSampleRate y maxSampleRate |
Tasa de muestreo mínima y máxima admitida para la propiedad continua (en hercios). No se usa si la propiedad no es continua. La implementación de VHAL debe poder lograr minSampleRate y maxSampleRate . No es necesario que se admitan todas las tasas de muestreo entre el valor mínimo y el máximo. |
Tipos de propiedad
Se definen como enumeraciones en VehiclePropertyType.aidl
. Los tipos de propiedades admitidos se enumeran en la siguiente tabla.
Tipo de propiedad |
Valor |
Descripción |
---|
STRING |
0x00100000 |
Es una propiedad de cadena que usa el campo stringValue en Valor de propiedad del vehículo. |
BOOLEAN |
0x00200000 |
La propiedad Boolean usa el primer elemento del campo int32Values en Valor de la propiedad del vehículo.
0 significa false y None 0 significa true . |
INT32 |
0x00400000 |
La propiedad Integer usa el primer elemento del campo int32Values en Valor de la propiedad del vehículo. |
INT32_VEC |
0x00410000 |
La propiedad Integer[] usa los elementos del campo int32Values en Valor de la propiedad del vehículo. |
INT64 |
0x00500000 |
Es una propiedad larga que usa el primer elemento del campo int64Values en Valor de la propiedad del vehículo. |
INT64_VEC |
0x00510000 |
La propiedad Long[] usa los elementos del campo int64Values en Valor de la propiedad del vehículo. |
FLOAT |
0x00600000 |
La propiedad Float usa el primer elemento del campo floatValues en Valor de la propiedad del vehículo. |
FLOAT_VEC |
0x00610000 |
La propiedad Float[] usa los elementos del campo floatValues en Valor de la propiedad del vehículo. |
BYTES |
0x00700000 |
La propiedad byte[] usa los elementos del campo byteValues en Valor de la propiedad del vehículo. |
MIXED |
0x00e00000 |
Es una propiedad de tipo mixto. Cualquier combinación de tipos vectoriales o escalares El formato exacto se debe proporcionar en el array de configuración de la propiedad.
En el caso de las propiedades de tipo MIXED del proveedor, configArray debe tener este formato:
configArray[0] , 1 indica que la propiedad tiene un valor de String
configArray[1] , 1 indica que la propiedad tiene un valor de Boolean
configArray[2] , 1 indica que la propiedad tiene un valor de Integer
configArray[3] , el número indica el tamaño de Integer[] en la propiedad.
configArray[4] , 1 indica que la propiedad tiene un valor de Long
configArray[5] , el número indica el tamaño de Long[] en la propiedad.
configArray[6] , 1 indica que la propiedad tiene un valor de Float
configArray[7] , el número indica el tamaño de Float[] en la propiedad.
configArray[8] , el número indica el tamaño de byte[] en la propiedad.
Por ejemplo, configArray = {1, 1, 1, 3, 0, 0, 0, 0, 0} indica que la propiedad tiene un valor String , un valor Boolean , un valor Integer y un array con tres números enteros.
|
Configuración del ID de área
Cada configuración de propiedad también puede contener una lista de configuraciones de ID de área. Esta lista es opcional para las propiedades globales y obligatoria para las propiedades zonificadas (propiedades con varias áreas admitidas). Cada configuración de ID de área tiene los siguientes campos.
Campo |
Descripción |
---|
areaId |
Es el ID de esta área. Consulta IDs de área. |
minInt32Value y maxInt32Value |
- Valores mínimo y máximo opcionales para las propiedades de tipo INT32 en el momento del arranque. Debe ser 0 para todos los demás tipos. Se ignoran si ambos son 0.
- En el caso de la propiedad global, si se deben definir valores mínimos y máximos, se debe usar una configuración de área con el ID de área 0.
- Este valor es estático y no cambiará, incluso si el valor mínimo o máximo cambia en el tiempo de ejecución. Implementa
IVehicle#getMinMaxSupportedValue para el valor mínimo o máximo dinámico.
|
minInt64Value y maxInt64Value |
- Valores mínimo y máximo opcionales para las propiedades de tipo INT64 en el momento del arranque. Debe ser 0 para todos los demás tipos. Se ignoran si ambos son 0.
- En el caso de la propiedad global, si se deben definir valores mínimos y máximos, se debe usar una configuración de área con el ID de área 0.
- Este valor es estático y no cambiará, incluso si el valor mínimo o máximo cambia en el tiempo de ejecución. Implementa
IVehicle#getMinMaxSupportedValue para el valor mínimo o máximo dinámico.
|
minFloatValue y maxFloatValue |
- Valores mínimo y máximo opcionales para las propiedades de tipo flotante en el momento del arranque. Debe ser 0 para todos los demás tipos. Se ignora si ambos son 0.0.
- En el caso de la propiedad global, si se deben definir valores mínimos y máximos, se debe usar una configuración de área con el ID de área 0.
- Este valor es estático y no cambiará, incluso si el valor mínimo o máximo cambia en el tiempo de ejecución. Implementa
IVehicle#getMinMaxSupportedValue para el valor mínimo o máximo dinámico.
|
(Novedad de Android 14)
supportedEnumValues |
- Lista opcional de valores admitidos en el momento del inicio si la propiedad se define como una propiedad de tipo enum. Si no se especifica (está vacío) o es anterior a Android 14, se supone que se admiten todos los valores de enumeración.
- En el caso de la propiedad global, si se deben definir valores de enumeración admitidos, se debe usar una configuración de área con el ID de área 0.
- Este valor es estático y no cambiará, incluso si los valores admitidos cambian en el tiempo de ejecución. Implementa
IVehicle#getSupportedValuesLists para los valores admitidos dinámicos.
- Esto solo se aplica a las propiedades de tipo enum. Para otros tipos, este campo debe estar vacío.
Para exponer valores admitidos para otros tipos que no son de enumeración, usa
IVehicle#getSupportedValuesLists .
|
(Novedades de Android 15)
supportVariableUpdateRate |
- Indica si se admite la frecuencia de actualización variable. Esto solo se aplica a las propiedades continuas.
- Si es
true , la app puede habilitar una tasa de actualización variable para una suscripción y recibir eventos de actualización de propiedades solo cuando cambia el valor de la propiedad (lo que trata las propiedades continuas como propiedades de cambio).
- Si todos los suscriptores de una propiedad habilitan la tasa de actualización variable, la solicitud de suscripción a VHAL habilita la tasa de actualización variable para la propiedad y VHAL debe enviar eventos de actualización de la propiedad solo cuando cambia el valor de la propiedad.
- Si algún suscriptor solicita una frecuencia de actualización fija, la solicitud de suscripción a VHAL
inhabilita la frecuencia de actualización variable para la propiedad y AAOS filtra los
eventos duplicados para los clientes que solicitan una frecuencia de actualización variable.
- Se RECOMIENDA ENCARECIDAMENTE admitir una frecuencia de actualización variable para todas las propiedades continuas que no sean de latido para obtener un mejor rendimiento, a menos que los datos de la propiedad sean grandes (por ejemplo, un array de bytes de 1 KB de tamaño) y puedan ocupar una gran cantidad de memoria para el almacenamiento en caché.
|
(Novedades de Android 16)
hasSupportedValueInfo |
- Si no es
null , muestra si esta propiedad especifica valores mínimos o máximos admitidos, o bien una lista de valores admitidos.
- Este campo controla si las APIs de valores admitidos dinámicos:
getMinMaxSupportedValue , getSupportedValuesLists ,
subscribeSupportedValueChange , unsubscribeSupportedValueChange
son compatibles con este ID de propiedad y este ID de área.
- Si no es
null , VHAL debe implementar estas APIs para este ID de propiedad y este ID de área.
- Si es
null o Android 15 o versiones anteriores, no se admiten los valores dinámicos admitidos para este ID de propiedad y este ID de área. El cliente debe usar la información de valores admitidos estáticos que se proporciona en la configuración de la propiedad del vehículo.
|
Tipos de área
Se definen como enumeraciones en VehicleArea.aidl
. A continuación, se indican los tipos de áreas admitidos.
Tipo de área |
Valor |
Descripción |
---|
GLOBAL |
0x01000000 |
Esta propiedad es global y no tiene varias áreas. |
VENTANA |
0x03000000 |
Área basada en ventanas, usa la enumeración VehicleAreaWindow . |
MIRROR |
0x04000000 |
Es el área basada en espejos y usa la enumeración VehicleAreaMirror . |
SEAT |
0x05000000 |
Es el área según los asientos y usa la enumeración VehicleAreaSeat . |
DOOR |
0x06000000 |
Es el área según las puertas y usa la enumeración VehicleAreaDoor . |
RUEDA |
0x07000000 |
Es el área basada en ruedas y usa la enumeración VehicleAreaWheel . |
Cada propiedad zonificada debe usar un tipo de área predefinido. Cada tipo de área tiene un conjunto de marcas de bits definidas en una enumeración para el tipo de área. Por ejemplo, el área SEAT define los siguientes enums VehicleAreaSeat
:
ROW_1_LEFT = 0x0001
ROW_1_CENTER = 0x0002
ROW_1_RIGHT = 0x0004
ROW_2_LEFT = 0x0010
ROW_2_CENTER = 0x0020
ROW_2_RIGHT = 0x0040
ROW_3_LEFT = 0x0100
...
IDs de área
Las propiedades zonificadas se abordan a través de los IDs de área. Cada propiedad zonificada puede admitir uno o más IDs de área. Un ID de área consta de una o más marcas de su respectivo enum. Por ejemplo, una propiedad que usa VehicleAreaSeat
podría usar los siguientes IDs de área:
Artículo |
Descripción |
---|
ROW_1_LEFT | ROW_1_RIGHT |
El ID de área se aplica a ambos asientos delanteros. |
ROW_2_LEFT |
Solo se aplica al asiento trasero izquierdo. |
ROW_2_RIGHT |
Solo se aplica al asiento trasero derecho. |
Para obtener más información, consulta HVAC.