Configuraciones de propiedades

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

El ID de la propiedad. Debe ser una de las propiedades del sistema definidas en las Propiedades del sistema compatibles o una propiedad del proveedor. El ID de la propiedad se construye con el operador or de bits 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 define el tipo de propiedad.
  • (0x00000000) 4 bits: Tipos de área.
  • (0x00000000) 4 bits: VehiclePropertyGroup> Es SYSTEM (0x10000000) o VENDOR (0x20000000). Consulta Propiedades del proveedor para ver las propiedades que puedes personalizar.

Por ejemplo,
INFO_VIN (0x11100100) = UniqueID (0x00000100) | VehiclePropertyType.STRING (0x00100000) | VehicleArea.GLOBAL (0x01000000) | VehiclePropertyGroup.SYSTEM (0x10000000)

access El modo de acceso de la propiedad. Debe ser READ, WRITE o READ_WRITE. Debe ser igual al modo de acceso definido en Propiedades del sistema compatibles.
changeMode
  • Cambia el modo 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 la VHAL debe informar cuando cambia el valor. CONTINUOUS significa que el valor de la propiedad cambia de forma continua y que VHAL debe informar en función de la tasa de muestreo de la suscripción.
  • El modo de cambio debe ser igual al modo de cambio definido en Propiedades del sistema compatibles.
configArray Es un array opcional para contener la configuración específica de la propiedad. Puede estar vacío.
configString Una cadena opcional que contiene una configuración específica de la propiedad. Puede estar vacío.
minSampleRate y maxSampleRate

La tasa de muestreo mínima y máxima admitida para la propiedad continua No se usa si la propiedad no es continua.

Tipos de propiedad

Se define 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 el valor de la propiedad del vehículo.
BOOLEAN 0x00200000 Es una propiedad booleana que usa el primer elemento en el campo int32Values en Valor de la propiedad del vehículo. 0 significa false, None 0 significa true.
INT32 0x00400000 Propiedad de número entero, usa el primer elemento del campo int32Values en Valor de 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 en el 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 propiedad del vehículo.
FLOAT 0x00600000 Propiedad de número de punto flotante, usa el primer elemento del campo floatValues en Valor de 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.
MIXTO 0x00e00000 Propiedad de tipo mixto. Cualquier combinación de tipos escalares o vectoriales El formato exacto se debe proporcionar en el array de configuración en la configuración de la propiedad.

En el caso de las propiedades de tipo MIXED del proveedor, configArray debe tener el formato de esta estructura:

  • configArray[0], 1 indica que la propiedad tiene un valor de String.
  • configArray[1], 1 indica que la propiedad tiene un valor booleano
  • configArray[2], 1 indica que la propiedad tiene un valor de número entero
  • configArray[3], el número indica el tamaño de Integer[] en la propiedad
  • configArray[4], 1 indica que la propiedad tiene un valor 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 número de punto flotante.
  • configArray[7], el número indica el tamaño de Float[] en la propiedad
  • configArray[8], el número indica el tamaño del byte[] en la propiedad.

Por ejemplo, configArray = {1, 1, 1, 3, 0, 0, 0, 0, 0} indica que la propiedad tiene un valor de string, un valor booleano, un valor de número entero 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 por zonas (propiedades con varias áreas compatibles). Cada configuración de ID de área tiene los siguientes campos.

Campo Descripción
areaId El ID de esta área. Consulta IDs de área.
minInt32Value y maxInt32Value
  • Valor mínimo y máximo opcionales para las propiedades de tipo INT32. Se ignora para todos los demás tipos. Se ignora si ambos son 0.
  • En el caso de la propiedad global, si se deben definir los valores mínimo y máximo, se debe usar una configuración de área con el ID de área 0.
minInt64Value y maxInt64Value
  • Valor mínimo y máximo opcional para las propiedades de tipo INT64. Se ignora para todos los demás tipos. Se ignora si ambos son 0.
  • En el caso de la propiedad global, si se deben definir los valores mínimo y máximo, se debe usar una configuración de área con el ID de área 0.
minFloatValue y maxFloatValue
  • Valor mínimo y máximo opcional para propiedades de tipo flotante. Se ignora para todos los demás tipos. Se ignora si ambos son 0.0.
  • En el caso de la propiedad global, si se deben definir los valores mínimo y máximo, se debe usar una configuración de área con el ID de área 0.
(Novedad de Android 14)
supportedEnumValues
  • Es una lista opcional de valores admitidos si la propiedad se define como una propiedad de tipo enumeración. Si no se especifica (está vacío) o es anterior a Android 14, se supone que todos los valores de enumeración son compatibles.
  • En el caso de la propiedad global, si se deben definir los valores de enumeración admitidos, se debe usar una configuración de área con el ID de área 0.

Tipos de áreas

Se definen como enums 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 El área basada en espejos usa la enumeración VehicleAreaMirror.
SEAT 0x05000000 El área según los asientos usa enum VehicleAreaSeat.
PUERTA 0x06000000 El área basada en puertas usa enum VehicleAreaDoor.
RUEDA 0x07000000 Área basada en ruedas, usa enum VehicleAreaWheel.

Cada propiedad por zonas 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 las enumeraciones 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 por zonas se abordan mediante los IDs de área. Cada propiedad con zonas puede admitir uno o más ID de área. Un ID de área consta de una o más marcas de su enum respectiva. 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.