Starting March 27, 2025, we recommend using android-latest-release
instead of aosp-main
to build and contribute to AOSP. For more information, see Changes to AOSP.
Property configurations
Stay organized with collections
Save and categorize content based on your preferences.
Each supported property is specified by a property configuration defined through
VehiclePropConfig
structure and has the following fields.
Field |
Description |
prop |
The property ID. This must be either one of the defined system properties from the
VehicleProperty.aidl
or a vendor property. The property ID is constructed using bit-or of the following fields
(right to left):
- (0x00000000) 16 bits: A unique ID from range 0x0100 - 0xffff.
- (0x00000000) 8 bits: Property types which defines the type for the property.
- (0x00000000) 4 bits: Area types.
- (0x00000000) 4 bits:
VehiclePropertyGroup This is either SYSTEM
(0x10000000) or VENDOR (0x20000000). See
Vendor Properties
for properties you can customize.
For example,
INFO_VIN (0x11100100) = UniqueID (0x00000100) | VehiclePropertyType.STRING (0x00100000) | VehicleArea.GLOBAL (0x01000000) | VehiclePropertyGroup.SYSTEM (0x10000000)
|
access |
- The access mode for the property. Must be one of
READ , WRITE , or
READ_WRITE .
- For system properties, this must be one of the defined access modes documented in
VehicleProperty.aidl .
- For properties that have per-area access, this is the maximal subset of the per-area
access, for example, if the properties have two areas whose access is
READ and READ_WRITE , this
should be set to READ .
|
changeMode |
- Change mode for the property. Must be one of
STATIC ,
ON_CHANGE , or CONTINUOUS . STATIC means the
property value never changes after a system boot. ON_CHANGE means the VHAL
must report when the value changes. CONTINUOUS means the property value
changes continuously and VHAL must report based on the subscription sample rate.
- For system properties, this must be equal to the change mode documented in
VehicleProperty.aidl .
|
configArray |
An optional array to contain property-specific configuration. Can be empty. For certain
system properties, for example, GEAR_SELECTION , the config array has special meaning and
must be specified.
|
configString |
An optional string to contain property specific configuration. Can be empty. |
minSampleRate and maxSampleRate |
The minimum and maximum supported sample rate for continuous property (in Hertz). Not used if property
isn't continuous. minSampleRate and maxSampleRate must be achievable by the VHAL
implementation. Not all sample rates between minimum and maximum have to be supported. |
Property types
Defined as enums in VehiclePropertyType.aidl
. Supported property types are
listed in the following table.
Property type |
Value |
Description |
STRING |
0x00100000 |
String property, uses the stringValue field in Vehicle property value. |
BOOLEAN |
0x00200000 |
Boolean property, uses the first element in int32Values field in
Vehicle property value.
0 means false , None 0 means true . |
INT32 |
0x00400000 |
Integer property, uses the first element in int32Values field in
Vehicle property value. |
INT32_VEC |
0x00410000 |
Integer[] property, uses the elements in the int32Values field in
Vehicle property value. |
INT64 |
0x00500000 |
Long property, uses the first element in int64Values field in
Vehicle property value. |
INT64_VEC |
0x00510000 |
Long[] property, uses the elements in int64Values field in
Vehicle property value. |
FLOAT |
0x00600000 |
Float property, uses the first element in floatValues field in
Vehicle property value. |
FLOAT_VEC |
0x00610000 |
Float[] property, uses the elements in floatValues field in
Vehicle property value. |
BYTES |
0x00700000 |
byte[] property, uses the elements in byteValues field in
Vehicle property value. |
MIXED |
0x00e00000 |
Mixed type property. Any combination of scalar or vector types. The exact format must be
provided in the config array in the property configuration.
For vendor MIXED type properties, configArray needs to be formatted in this structure:
configArray[0] , 1 indicates the property has a String value
configArray[1] , 1 indicates the property has a Boolean value
configArray[2] , 1 indicates the property has an Integer value
configArray[3] , the number indicates the size of Integer[] in the property
configArray[4] , 1 indicates the property has a Long value
configArray[5] , the number indicates the size of Long[] in the property
configArray[6] , 1 indicates the property has a Float value
configArray[7] , the number indicates the size of Float[] in the property
configArray[8] , the number indicates the size of byte[] in the property.
For example, configArray = {1, 1, 1, 3, 0, 0, 0, 0, 0} indicates the
property has a String value, a Boolean value, an Integer value, and an array with
three integers.
|
Area ID configuration
Each property configuration also may contain a list of area ID configurations. This list is
optional for global properties and required for zoned properties (properties with multiple
supported areas). Each area ID configuration has the following fields.
Field |
Description |
areaId |
The ID for this area. See Area IDs. |
minInt32Value and maxInt32Value |
- Optional minimum and maximum value for INT32 type properties at boot time. Must be 0
for all other types. Ignored if both are 0.
- For global property, if minimum and maximum value needs to be defined, one area configuration
with the area ID 0 must be used.
- This value is static and won't change even if the minimum or maximum value changes
at runtime. Implement
IVehicle#getMinMaxSupportedValue for dynamic minimum or maximum
value.
|
minInt64Value and maxInt64Value |
- Optional minimum and maximum value for INT64 type properties at boot time. Must be 0
for all other types. Ignored if both are 0.
- For global property, if minimum and maximum value needs to be defined, one area configuration
with the area ID 0 must be used.
- This value is static and won't change even if the minimum or maximum value changes
at runtime. Implement
IVehicle#getMinMaxSupportedValue for dynamic minimum or maximum
value.
|
minFloatValue and maxFloatValue |
- Optional minimum and maximum value for Float type properties at boot time. Must be 0
for all other types. Ignored if both are 0.0.
- For global property, if minimum and maximum value needs to be defined, one area configuration
with the area ID 0 must be used.
- This value is static and won't change even if the minimum or maximum value changes
at runtime. Implement
IVehicle#getMinMaxSupportedValue for dynamic minimum or maximum
value.
|
(New in Android 14)
supportedEnumValues |
- Optional list of supported values at boot time if the property is defined as an enum
type property. If not specified (empty) or before Android 14, it is assumed all enum
values are supported.
- For global property, if supported enum values need to be defined, one area
configuration with the area ID 0 must be used.
- This value is static and won't change even if the supported values change
at runtime. Implement
IVehicle#getSupportedValuesLists for dynamic supported
values.
- This only applies for enum type properties. For other types, this field must be empty.
To expose supported values for other non-enum types, use
IVehicle#getSupportedValuesLists .
|
(New in Android 15)
supportVariableUpdateRate |
- Whether variable update rate is supported. This applies only for continuous properties.
- If this is
true , the app can enable variable update rate for a subscription to
receive property update events only when the property value changes
(which is treating continuous properties as on-change properties).
- If all subscribers for a property are enabling variable update rate, the subscription
request to VHAL enables variable update rate for the property and VHAL must
send property update events only when the property value changes.
- If any subscriber is requesting fixed update rate, the subscription request to VHAL
disables variable update rate for the property and AAOS filters out the
duplicate events for the clients that request variable update rate.
- It is HIGHLY RECOMMENDED to support variable update rate for all non-heartbeat
continuous properties for better performance unless the property data is large (for
example, a byte array of 1k in size) and might occupy large amount of memory for caching.
|
(New in Android 16)
hasSupportedValueInfo |
- If not
null , shows whether this property specifies minimum or maximum
supported values or supported values list.
- This field controls whether the dynamic supported value APIs:
getMinMaxSupportedValue , getSupportedValuesLists ,
subscribeSupportedValueChange , unsubscribeSupportedValueChange
are supported for this property ID and area ID.
- If not
null , VHAL must implement these APIs for this
property ID and area ID.
- If
null or in Android 15 or lower, dynamic supported
values for this property ID and area ID are not supported. The client must use the
static supported value information provided in the vehicle property configuration.
|
Area types
Defined as enums in VehicleArea.aidl
. The supported area types are listed below.
Area type |
Value |
Description |
GLOBAL |
0x01000000 |
This property is a global property and does not have multiple areas. |
WINDOW |
0x03000000 |
Area based on windows, uses VehicleAreaWindow enum. |
MIRROR |
0x04000000 |
Area based on mirrors, uses VehicleAreaMirror enum. |
SEAT |
0x05000000 |
Area based on seats, uses VehicleAreaSeat enum. |
DOOR |
0x06000000 |
Area based on doors, uses VehicleAreaDoor enum. |
WHEEL |
0x07000000 |
Area based on wheels, uses VehicleAreaWheel enum. |
Each zoned property must use a pre-defined area type. Each area type has a set of bit flags
defined in an enum for the area type. For example, the SEAT area defines
VehicleAreaSeat
enums:
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
...
Area IDs
Zoned properties are addressed through Area IDs. Each zoned property may support one or more
Area IDs. An Area ID consists of one or more flags from its respective enum. For example, a
property using VehicleAreaSeat
might use the following Area IDs:
Item |
Description |
ROW_1_LEFT | ROW_1_RIGHT |
The Area ID applies to both front seats. |
ROW_2_LEFT |
Applies only to the rear left seat. |
ROW_2_RIGHT |
Applies only to the rear right seat. |
To learn more, see HVAC.
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2025-06-06 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-06-06 UTC."],[],[]]