blob: e8f5f372f2e26408712910966ba1c2c44df33f24 [file] [log] [blame]
/*
* Copyright (C) 2021 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.hardware.automotive.vehicle;
import android.hardware.automotive.vehicle.VehicleArea;
import android.hardware.automotive.vehicle.VehiclePropertyGroup;
import android.hardware.automotive.vehicle.VehiclePropertyType;
/**
* Declares all vehicle properties. VehicleProperty has a bitwise structure.
* Each property must have:
* - a unique id from range 0x0100 - 0xffff
* - associated data type using VehiclePropertyType
* - property group (VehiclePropertyGroup)
* - vehicle area (VehicleArea)
*
* Vendors are allowed to extend this enum with their own properties. In this
* case they must use VehiclePropertyGroup:VENDOR flag when the property is
* declared.
*
* When a property's status field is not set to AVAILABLE:
* - IVehicle#set may return StatusCode::NOT_AVAILABLE.
* - IVehicle#get is not guaranteed to work.
*
* Properties set to values out of range must be ignored and no action taken
* in response to such ill formed requests.
*/
@VintfStability
@Backing(type="int")
enum VehicleProperty {
/**
* Undefined property.
*
* This property must never be used/supported.
*/
INVALID = 0x00000000,
/**
* VIN of vehicle
*
* @change_mode VehiclePropertyChangeMode.STATIC
* @access VehiclePropertyAccess.READ
*/
INFO_VIN = 0x0100 + 0x10000000 + 0x01000000
+ 0x00100000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:STRING
/**
* Manufacturer of vehicle
*
* @change_mode VehiclePropertyChangeMode.STATIC
* @access VehiclePropertyAccess.READ
*/
INFO_MAKE = 0x0101 + 0x10000000 + 0x01000000
+ 0x00100000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:STRING
/**
* Model of vehicle
*
* @change_mode VehiclePropertyChangeMode.STATIC
* @access VehiclePropertyAccess.READ
*/
INFO_MODEL = 0x0102 + 0x10000000 + 0x01000000
+ 0x00100000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:STRING
/**
* Model year of vehicle.
*
* @change_mode VehiclePropertyChangeMode.STATIC
* @access VehiclePropertyAccess.READ
* @unit VehicleUnit:YEAR
*/
INFO_MODEL_YEAR = 0x0103 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Fuel capacity of the vehicle in milliliters
*
* @change_mode VehiclePropertyChangeMode.STATIC
* @access VehiclePropertyAccess.READ
* @unit VehicleUnit:MILLILITER
*/
INFO_FUEL_CAPACITY = 0x0104 + 0x10000000 + 0x01000000
+ 0x00600000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:FLOAT
/**
* List of fuels the vehicle may use.
*
* FuelType::FUEL_TYPE_ELECTRIC must only be included if the vehicle is plug in rechargeable.
* For example:
* An FHEV (Fully Hybrid Electric Vehicle) must not include FuelType::FUEL_TYPE_ELECTRIC in
* INFO_FUEL_TYPE's INT32_VEC value. So INFO_FUEL_TYPE can be populated as such:
* int32Values = { FuelType::FUEL_TYPE_UNLEADED }
* On the other hand, a PHEV (Partially Hybrid Electric Vehicle) is plug in rechargeable, and
* hence should include FuelType::FUEL_TYPE_ELECTRIC in INFO_FUEL_TYPE's INT32_VEC value. So
* INFO_FUEL_TYPE can be populated as such:
* int32Values = { FuelType::FUEL_TYPE_UNLEADED, FuelType::FUEL_TYPE_ELECTRIC }
*
* @change_mode VehiclePropertyChangeMode.STATIC
* @access VehiclePropertyAccess.READ
* @data_enum FuelType
*/
INFO_FUEL_TYPE = 0x0105 + 0x10000000 + 0x01000000
+ 0x00410000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32_VEC
/**
* Nominal battery capacity for EV or hybrid vehicle
*
* Returns the nominal battery capacity, if EV or hybrid. This is the battery capacity when the
* vehicle is new. This value might be different from EV_CURRENT_BATTERY_CAPACITY because
* EV_CURRENT_BATTERY_CAPACITY returns the real-time battery capacity taking into account
* factors such as battery aging and temperature dependency.
*
* @change_mode VehiclePropertyChangeMode.STATIC
* @access VehiclePropertyAccess.READ
* @unit VehicleUnit:WH
*/
INFO_EV_BATTERY_CAPACITY = 0x0106 + 0x10000000 + 0x01000000
+ 0x00600000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:FLOAT
/**
* List of connectors this EV may use
*
* @change_mode VehiclePropertyChangeMode.STATIC
* @data_enum EvConnectorType
* @access VehiclePropertyAccess.READ
*/
INFO_EV_CONNECTOR_TYPE = 0x0107 + 0x10000000 + 0x01000000
+ 0x00410000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32_VEC
/**
* Fuel door location
*
* @change_mode VehiclePropertyChangeMode.STATIC
* @data_enum PortLocationType
* @access VehiclePropertyAccess.READ
*/
INFO_FUEL_DOOR_LOCATION = 0x0108 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* EV port location
*
* @change_mode VehiclePropertyChangeMode.STATIC
* @access VehiclePropertyAccess.READ
* @data_enum PortLocationType
*/
INFO_EV_PORT_LOCATION = 0x0109 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Driver's seat location
* VHAL implementations must ignore the areaId. Use VehicleArea:GLOBAL.
*
* @change_mode VehiclePropertyChangeMode.STATIC
* @data_enum VehicleAreaSeat
* @access VehiclePropertyAccess.READ
*/
INFO_DRIVER_SEAT = 0x010A + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* Exterior dimensions of vehicle.
*
* int32Values[0] = height
* int32Values[1] = length
* int32Values[2] = width
* int32Values[3] = width including mirrors
* int32Values[4] = wheel base
* int32Values[5] = track width front
* int32Values[6] = track width rear
* int32Values[7] = curb to curb turning diameter
*
* @change_mode VehiclePropertyChangeMode.STATIC
* @access VehiclePropertyAccess.READ
* @unit VehicleUnit:MILLIMETER
*/
INFO_EXTERIOR_DIMENSIONS = 0x010B + 0x10000000 + 0x01000000
+ 0x00410000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32_VEC
/**
* Multiple EV port locations
*
* Implement this property if the vehicle has multiple EV ports.
* Port locations are defined in PortLocationType.
* For example, a car has one port in front left and one port in rear left:
* int32Values[0] = PortLocationType::FRONT_LEFT
* int32Values[0] = PortLocationType::REAR_LEFT
*
* @change_mode VehiclePropertyChangeMode.STATIC
* @access VehiclePropertyAccess.READ
* @data_enum PortLocationType
*/
INFO_MULTI_EV_PORT_LOCATIONS = 0x010C + 0x10000000 + 0x01000000
+ 0x00410000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32_VEC
/**
* Current odometer value of the vehicle
*
* @change_mode VehiclePropertyChangeMode.CONTINUOUS
* @access VehiclePropertyAccess.READ
* @unit VehicleUnit:KILOMETER
*/
PERF_ODOMETER = 0x0204 + 0x10000000 + 0x01000000
+ 0x00600000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:FLOAT
/**
* Speed of the vehicle
*
* The value must be positive when the vehicle is moving forward and negative when
* the vehicle is moving backward. This value is independent of gear value
* (CURRENT_GEAR or GEAR_SELECTION), for example, if GEAR_SELECTION is GEAR_NEUTRAL,
* PERF_VEHICLE_SPEED is positive when the vehicle is moving forward, negative when moving
* backward, and zero when not moving.
*
* @change_mode VehiclePropertyChangeMode.CONTINUOUS
* @access VehiclePropertyAccess.READ
* @unit VehicleUnit:METER_PER_SEC
*/
PERF_VEHICLE_SPEED = 0x0207 + 0x10000000 + 0x01000000
+ 0x00600000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:FLOAT
/**
* Speed of the vehicle for displays
*
* Some cars display a slightly slower speed than the actual speed. This is
* usually displayed on the speedometer.
*
* @change_mode VehiclePropertyChangeMode.CONTINUOUS
* @access VehiclePropertyAccess.READ
* @unit VehicleUnit:METER_PER_SEC
*/
PERF_VEHICLE_SPEED_DISPLAY = 0x0208 + 0x10000000 + 0x01000000
+ 0x00600000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:FLOAT
/**
* Front bicycle model steering angle for vehicle
*
* Angle is in degrees. Left is negative.
*
* @change_mode VehiclePropertyChangeMode.CONTINUOUS
* @access VehiclePropertyAccess.READ
* @unit VehicleUnit:DEGREES
*/
PERF_STEERING_ANGLE = 0x0209 + 0x10000000 + 0x01000000
+ 0x00600000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:FLOAT
/**
* Rear bicycle model steering angle for vehicle
*
* Angle is in degrees. Left is negative.
*
* @change_mode VehiclePropertyChangeMode.CONTINUOUS
* @access VehiclePropertyAccess.READ
* @unit VehicleUnit:DEGREES
*/
PERF_REAR_STEERING_ANGLE = 0x0210 + 0x10000000 + 0x01000000
+ 0x00600000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:FLOAT
/**
* Temperature of engine coolant
*
* @change_mode VehiclePropertyChangeMode.CONTINUOUS
* @access VehiclePropertyAccess.READ
* @unit VehicleUnit:CELSIUS
*/
ENGINE_COOLANT_TEMP = 0x0301 + 0x10000000 + 0x01000000
+ 0x00600000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:FLOAT
/**
* Engine oil level
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleOilLevel
*/
ENGINE_OIL_LEVEL = 0x0303 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Temperature of engine oil
*
* @change_mode VehiclePropertyChangeMode.CONTINUOUS
* @access VehiclePropertyAccess.READ
* @unit VehicleUnit:CELSIUS
*/
ENGINE_OIL_TEMP = 0x0304 + 0x10000000 + 0x01000000
+ 0x00600000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:FLOAT
/**
* Engine rpm
*
* @change_mode VehiclePropertyChangeMode.CONTINUOUS
* @access VehiclePropertyAccess.READ
* @unit VehicleUnit:RPM
*/
ENGINE_RPM = 0x0305 + 0x10000000 + 0x01000000
+ 0x00600000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:FLOAT
/**
* Reports wheel ticks
*
* The first element in the vector is a reset count. A reset indicates
* previous tick counts are not comparable with this and future ones. Some
* sort of discontinuity in tick counting has occurred.
*
* The next four elements represent ticks for individual wheels in the
* following order: front left, front right, rear right, rear left. All
* tick counts are cumulative. Tick counts increment when the vehicle
* moves forward, and decrement when vehicles moves in reverse. The ticks
* should be reset to 0 when the vehicle is started by the user.
*
* int64Values[0] = reset count
* int64Values[1] = front left ticks
* int64Values[2] = front right ticks
* int64Values[3] = rear right ticks
* int64Values[4] = rear left ticks
*
* configArray is used to indicate the micrometers-per-wheel-tick value and
* which wheels are supported. configArray is set as follows:
*
* configArray[0], bits [0:3] = supported wheels. Uses enum Wheel. For example, if all wheels
* are supported, then configArray[0] = VehicleAreaWheel::LEFT_FRONT
* | VehicleAreaWheel::RIGHT_FRONT | VehicleAreaWheel::LEFT_REAR
* | VehicleAreaWheel::RIGHT_REAR
* configArray[1] = micrometers per front left wheel tick
* configArray[2] = micrometers per front right wheel tick
* configArray[3] = micrometers per rear right wheel tick
* configArray[4] = micrometers per rear left wheel tick
*
* NOTE: If a wheel is not supported, its value shall always be set to 0.
*
* VehiclePropValue.timestamp must be correctly filled in.
*
* @change_mode VehiclePropertyChangeMode.CONTINUOUS
* @access VehiclePropertyAccess.READ
*/
WHEEL_TICK = 0x0306 + 0x10000000 + 0x01000000
+ 0x00510000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT64_VEC
/**
* Fuel remaining in the vehicle, in milliliters
*
* Value may not exceed INFO_FUEL_CAPACITY
*
* @change_mode VehiclePropertyChangeMode.CONTINUOUS
* @access VehiclePropertyAccess.READ
* @unit VehicleUnit:MILLILITER
*/
FUEL_LEVEL = 0x0307 + 0x10000000 + 0x01000000
+ 0x00600000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:FLOAT
/**
* Fuel door open
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
FUEL_DOOR_OPEN = 0x0308 + 0x10000000 + 0x01000000
+ 0x00200000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:BOOLEAN
/**
* Battery level for EV or hybrid vehicle
*
* Returns the current battery level, if EV or hybrid. This value will not exceed
* EV_CURRENT_BATTERY_CAPACITY. To calculate the battery percentage, use:
* (EV_BATTERY_LEVEL/EV_CURRENT_BATTERY_CAPACITY)*100.
*
* @change_mode VehiclePropertyChangeMode.CONTINUOUS
* @access VehiclePropertyAccess.READ
* @unit VehicleUnit:WH
*/
EV_BATTERY_LEVEL = 0x0309 + 0x10000000 + 0x01000000
+ 0x00600000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:FLOAT
/**
* Current battery capacity for EV or hybrid vehicle
*
* Returns the actual value of battery capacity, if EV or hybrid. This property captures the
* real-time battery capacity taking into account factors such as battery aging and temperature
* dependency. Therefore, this value might be different from INFO_EV_BATTERY_CAPACITY because
* INFO_EV_BATTERY_CAPACITY returns the nominal battery capacity from when the vehicle was new.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @unit VehicleUnit:WH
*/
EV_CURRENT_BATTERY_CAPACITY =
0x030D + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.FLOAT,
/**
* EV charge port open
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
EV_CHARGE_PORT_OPEN = 0x030A + 0x10000000 + 0x01000000
+ 0x00200000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:BOOLEAN
/**
* EV charge port connected
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
*/
EV_CHARGE_PORT_CONNECTED = 0x030B + 0x10000000 + 0x01000000
+ 0x00200000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:BOOLEAN
/**
* EV instantaneous charge rate in milliwatts
*
* Positive value indicates battery is being charged.
* Negative value indicates battery being discharged.
*
* @change_mode VehiclePropertyChangeMode.CONTINUOUS
* @access VehiclePropertyAccess.READ
* @unit VehicleUnit:MW
*/
EV_BATTERY_INSTANTANEOUS_CHARGE_RATE = 0x030C + 0x10000000 + 0x01000000
+ 0x00600000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:FLOAT
/**
* Range remaining
*
* Meters remaining of fuel and charge. Range remaining shall account for
* all energy sources in a vehicle. For example, a hybrid car's range will
* be the sum of the ranges based on fuel and battery.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE because a navigation app could
* update the range if it has a more accurate estimate based on the upcoming route. However,
* this property can be implemented as VehiclePropertyAccess.READ only at the OEM's discretion.
*
* @change_mode VehiclePropertyChangeMode.CONTINUOUS
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
* @unit VehicleUnit:METER
*/
RANGE_REMAINING = 0x0308 + 0x10000000 + 0x01000000
+ 0x00600000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:FLOAT
/**
* Tire pressure
*
* Each tires is identified by its areaConfig.areaId config and their
* minFloatValue/maxFloatValue are used to store OEM recommended pressure
* range. The minFloatValue and maxFloatValue in VehicleAreaConfig must be defined.
* The minFloatValue in the areaConfig data represents the lower bound of
* the recommended tire pressure.
* The maxFloatValue in the areaConfig data represents the upper bound of
* the recommended tire pressure.
* For example:
* The following areaConfig indicates the recommended tire pressure
* of left_front tire is from 200.0 KILOPASCAL to 240.0 KILOPASCAL.
* .areaConfigs = {
* VehicleAreaConfig {
* .areaId = VehicleAreaWheel::LEFT_FRONT,
* .minFloatValue = 200.0,
* .maxFloatValue = 240.0,
* }
* },
*
* @change_mode VehiclePropertyChangeMode.CONTINUOUS
* @access VehiclePropertyAccess.READ
* @unit VehicleUnit:KILOPASCAL
*/
TIRE_PRESSURE = 0x0309 + 0x10000000 + 0x07000000
+ 0x00600000, // VehiclePropertyGroup:SYSTEM,VehicleArea:WHEEL,VehiclePropertyType:FLOAT
/**
* Critically low tire pressure
*
* This property indicates the critically low pressure threshold for each tire.
* It indicates when it is time for tires to be replaced or fixed. The value
* must be less than or equal to minFloatValue in TIRE_PRESSURE.
* Minimum and maximum property values (that is, minFloatValue, maxFloatValue)
* are not applicable to this property.
*
* @change_mode VehiclePropertyChangeMode.STATIC
* @access VehiclePropertyAccess.READ
* @unit VehicleUnit:KILOPASCAL
*/
CRITICALLY_LOW_TIRE_PRESSURE = 0x030A + 0x10000000 + 0x07000000
+ 0x00600000, // VehiclePropertyGroup:SYSTEM,VehicleArea:WHEEL,VehiclePropertyType:FLOAT
/**
* Represents feature for engine idle automatic stop.
*
* If true, the vehicle may automatically shut off the engine when it is not needed and then
* automatically restart it when needed.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
ENGINE_IDLE_AUTO_STOP_ENABLED =
0x0320 + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.BOOLEAN,
/**
* Currently selected gear
*
* This is the gear selected by the user.
*
* Values in the config data must represent the list of supported gears for this vehicle. For
* example, config data for an automatic transmission must contain {GEAR_NEUTRAL, GEAR_REVERSE,
* GEAR_PARK, GEAR_DRIVE, GEAR_1, GEAR_2,...} and for manual transmission the list must be
* {GEAR_NEUTRAL, GEAR_REVERSE, GEAR_1, GEAR_2,...}
*
* In the case of an automatic transmission vehicle that allows the driver to select specific
* gears on demand (i.e. "manual mode"), GEAR_SELECTION's value must be set to the specific gear
* selected by the driver instead of simply GEAR_DRIVE.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleGear
*/
GEAR_SELECTION = 0x0400 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Current gear. In non-manual case, selected gear may not
* match the current gear. For example, if the selected gear is GEAR_DRIVE,
* the current gear will be one of GEAR_1, GEAR_2 etc, which reflects
* the actual gear the transmission is currently running in.
*
* Values in the config data must represent the list of supported gears
* for this vehicle. For example, config data for an automatic transmission
* must contain {GEAR_NEUTRAL, GEAR_REVERSE, GEAR_PARK, GEAR_1, GEAR_2,...}
* and for manual transmission the list must be
* {GEAR_NEUTRAL, GEAR_REVERSE, GEAR_1, GEAR_2,...}. This list need not be the
* same as that of the supported gears reported in GEAR_SELECTION.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleGear
*/
CURRENT_GEAR = 0x0401 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Parking brake state.
*
* This property is true indicates that the car's parking brake is currently engaged. False
* implies that the car's parking brake is currently disengaged.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
*/
PARKING_BRAKE_ON = 0x0402 + 0x10000000 + 0x01000000
+ 0x00200000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:BOOLEAN
/**
* Auto-apply parking brake.
*
* This property is true indicates that the car's automatic parking brake feature is currently
* enabled. False indicates that the car's automatic parking brake feature is currently
* disabled.
*
* This property is often confused with PARKING_BRAKE_ON. The difference is that
* PARKING_BRAKE_ON describes whether the actual parking brake is currently on/off, whereas
* PARKING_BRAKE_AUTO_APPLY describes whether the feature of automatic parking brake is enabled/
* disabled, and does not describe the current state of the actual parking brake.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
*/
PARKING_BRAKE_AUTO_APPLY = 0x0403 + 0x10000000 + 0x01000000
+ 0x00200000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:BOOLEAN
/**
* Regenerative braking level of a electronic vehicle
*
* The maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. All values between
* minInt32Value and maxInt32Value must be supported. The minInt32Value must be 0.
*
* The maxInt32Value indicates the maximum amount of energy regenerated from braking. The
* minInt32Value indicates no regenerative braking.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
EV_BRAKE_REGENERATION_LEVEL =
0x040C + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.INT32,
/**
* Warning for fuel low level.
*
* This property corresponds to the low fuel warning on the dashboard.
* Once FUEL_LEVEL_LOW is set, it should not be cleared until more fuel is
* added to the vehicle. This property may take into account all fuel
* sources for a vehicle - for example:
*
* For a gas powered vehicle, this property is based soley on gas level.
* For a battery powered vehicle, this property is based solely on battery level.
* For a hybrid vehicle, this property may be based on the combination of gas and battery
* levels, at the OEM's discretion.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
*/
FUEL_LEVEL_LOW = 0x0405 + 0x10000000 + 0x01000000
+ 0x00200000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:BOOLEAN
/**
* Night mode
*
* True indicates that the night mode sensor has detected that the car cabin environment has
* low light. The platform could use this, for example, to enable appropriate UI for
* better viewing in dark or low light environments.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
*/
NIGHT_MODE = 0x0407 + 0x10000000 + 0x01000000
+ 0x00200000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:BOOLEAN
/**
* State of the vehicles turn signals
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleTurnSignal
*/
TURN_SIGNAL_STATE = 0x0408 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Represents ignition state
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleIgnitionState
*/
IGNITION_STATE = 0x0409 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* ABS is active
*
* Set to true when ABS is active. Reset to false when ABS is off. This
* property may be intermittently set (pulsing) based on the real-time
* state of the ABS system.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
*/
ABS_ACTIVE = 0x040A + 0x10000000 + 0x01000000
+ 0x00200000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:BOOLEAN
/**
* Traction Control is active
*
* Set to true when traction control (TC) is active. Reset to false when
* TC is off. This property may be intermittently set (pulsing) based on
* the real-time state of the TC system.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
*/
TRACTION_CONTROL_ACTIVE = 0x040B + 0x10000000 + 0x01000000
+ 0x00200000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:BOOLEAN
/**
* Represents property for the current stopping mode of the vehicle.
*
* For the global area ID (0), the VehicleAreaConfig#supportedEnumValues must be defined unless
* all enum values of EvStoppingMode are supported.
*
* The EvStoppingMode enum may be extended to include more states in the future.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
* @data_enum EvStoppingMode
*/
EV_STOPPING_MODE =
0x040D + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.INT32,
/**
* HVAC Properties
*
* Additional rules for mapping non-GLOBAL VehicleArea type HVAC properties
* to AreaIDs:
* - Every “area” for a specific VehicleArea type that is affected by the
* property, must be included in an area ID for that property.
*
* Example 1: A car has two front seats (ROW_1_LEFT, ROW_1_RIGHT) and three
* back seats (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT). There are two
* temperature control units -- driver side and passenger side.
* - A valid mapping set of AreaIDs for HVAC_TEMPERATURE_SET would be a
* two element array:
* - ROW_1_LEFT | ROW_2_LEFT
* - ROW_1_RIGHT | ROW_2_CENTER | ROW_2_RIGHT
* - An alternative mapping for the same hardware configuration would be:
* - ROW_1_LEFT | ROW_2_CENTER | ROW_2_LEFT
* - ROW_1_RIGHT | ROW_2_RIGHT
* The temperature controllers are assigned to the seats which they
* "most influence", but every seat must be included exactly once. The
* assignment of the center rear seat to the left or right AreaID may seem
* arbitrary, but the inclusion of every seat in exactly one AreaID ensures
* that the seats in the car are all expressed and that a "reasonable" way
* to affect each seat is available.
*
* Example 2: A car has three seat rows with two seats in the front row (ROW_1_LEFT,
* ROW_1_RIGHT) and three seats in the second (ROW_2_LEFT, ROW_2_CENTER,
* ROW_2_RIGHT) and third rows (ROW_3_LEFT, ROW_3_CENTER, ROW_3_RIGHT). There
* are three temperature control units -- driver side, passenger side, and rear.
* - A reasonable way to map HVAC_TEMPERATURE_SET to AreaIDs is a three
* element array:
* - ROW_1_LEFT
* - ROW_1_RIGHT
* - ROW_2_LEFT | ROW_2_CENTER | ROW_2_RIGHT | ROW_3_LEFT | ROW_3_CENTER | ROW_3_RIGHT
*
* Example 3: A car has two front seats (ROW_1_LEFT, ROW_1_RIGHT) and three
* back seats (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT). Suppose the car
* supports HVAC_AUTO_ON for just the two front seats.
* - A valid mapping set of AreaIDs for HVAC_AUTO_ON would be:
* - ROW_1_LEFT | ROW_1_RIGHT
* - If HVAC_AUTO_ON had two separate control units for the driver side
* and passenger side, an alternative mapping would be:
* - ROW_1_LEFT
* - ROW_1_RIGHT
*/
/**
* Fan speed setting
*
* The maxInt32Value and minInt32Value in VehicleAreaConfig must be defined.
* All integers between minInt32Value and maxInt32Value must be supported.
*
* The minInt32Value indicates the lowest fan speed.
* The maxInt32Value indicates the highest fan speed.
*
* This property is not in any particular unit but in a specified range of relative speeds.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
HVAC_FAN_SPEED = 0x0500 + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* Fan direction setting
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleHvacFanDirection
*/
HVAC_FAN_DIRECTION = 0x0501 + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* HVAC current temperature.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @unit VehicleUnit:CELSIUS
*/
HVAC_TEMPERATURE_CURRENT = 0x0502 + 0x10000000 + 0x05000000
+ 0x00600000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:FLOAT
/**
* HVAC, target temperature set.
*
* The configArray is used to indicate the valid values for HVAC in Fahrenheit and Celsius.
* Android might use it in the HVAC app UI.
* The configArray is set as follows:
* configArray[0] = [the lower bound of the supported temperature in Celsius] * 10.
* configArray[1] = [the upper bound of the supported temperature in Celsius] * 10.
* configArray[2] = [the increment in Celsius] * 10.
* configArray[3] = [the lower bound of the supported temperature in Fahrenheit] * 10.
* configArray[4] = [the upper bound of the supported temperature in Fahrenheit] * 10.
* configArray[5] = [the increment in Fahrenheit] * 10.
* For example, if the vehicle supports temperature values as:
* [16.0, 16.5, 17.0 ,..., 28.0] in Celsius
* [60.5, 61.5, 62.5 ,..., 85.5] in Fahrenheit.
* The configArray should be configArray = {160, 280, 5, 605, 825, 10}.
*
* If the vehicle supports HVAC_TEMPERATURE_VALUE_SUGGESTION, the application can use
* that property to get the suggested value before setting HVAC_TEMPERATURE_SET. Otherwise,
* the application may choose the value in HVAC_TEMPERATURE_SET configArray by itself.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
* @unit VehicleUnit:CELSIUS
*/
HVAC_TEMPERATURE_SET = 0x0503 + 0x10000000 + 0x05000000
+ 0x00600000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:FLOAT
/**
* Fan-based defrost for designated window.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
HVAC_DEFROSTER = 0x0504 + 0x10000000 + 0x03000000
+ 0x00200000, // VehiclePropertyGroup:SYSTEM,VehicleArea:WINDOW,VehiclePropertyType:BOOLEAN
/**
* On/off AC for designated areaId
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
* @config_flags Supported areaIds
*/
HVAC_AC_ON = 0x0505 + 0x10000000 + 0x05000000
+ 0x00200000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:BOOLEAN
/**
* On/off max AC
*
* When MAX AC is on, the ECU may adjust the vent position, fan speed,
* temperature, etc as necessary to cool the vehicle as quickly as possible.
* Any parameters modified as a side effect of turning on/off the MAX AC
* parameter shall generate onPropertyEvent() callbacks to the VHAL.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
HVAC_MAX_AC_ON = 0x0506 + 0x10000000 + 0x05000000
+ 0x00200000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:BOOLEAN
/**
* On/off max defrost
*
* When MAX DEFROST is on, the ECU may adjust the vent position, fan speed,
* temperature, etc as necessary to defrost the windows as quickly as
* possible. Any parameters modified as a side effect of turning on/off
* the MAX DEFROST parameter shall generate onPropertyEvent() callbacks to
* the VHAL.
* The AreaIDs for HVAC_MAX_DEFROST_ON indicate MAX DEFROST can be controlled
* in the area.
* For example:
* areaConfig.areaId = {ROW_1_LEFT | ROW_1_RIGHT} indicates HVAC_MAX_DEFROST_ON
* only can be controlled for the front rows.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
HVAC_MAX_DEFROST_ON = 0x0507 + 0x10000000 + 0x05000000
+ 0x00200000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:BOOLEAN
/**
* Recirculation on/off
*
* Controls the supply of exterior air to the cabin. Recirc “on” means the
* majority of the airflow into the cabin is originating in the cabin.
* Recirc “off” means the majority of the airflow into the cabin is coming
* from outside the car.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
HVAC_RECIRC_ON = 0x0508 + 0x10000000 + 0x05000000
+ 0x00200000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:BOOLEAN
/**
* Enable temperature coupling between areas.
*
* The AreaIDs for HVAC_DUAL_ON property shall contain a combination of
* HVAC_TEMPERATURE_SET AreaIDs that can be coupled together. If
* HVAC_TEMPERATURE_SET is mapped to AreaIDs [a_1, a_2, ..., a_n], and if
* HVAC_DUAL_ON can be enabled to couple a_i and a_j, then HVAC_DUAL_ON
* property must be mapped to [a_i | a_j]. Further, if a_k and a_l can also
* be coupled together separately then HVAC_DUAL_ON must be mapped to
* [a_i | a_j, a_k | a_l].
*
* Example: A car has two front seats (ROW_1_LEFT, ROW_1_RIGHT) and three
* back seats (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT). There are two
* temperature control units -- driver side and passenger side -- which can
* be optionally synchronized. This may be expressed in the AreaIDs this way:
* - HVAC_TEMPERATURE_SET->[ROW_1_LEFT | ROW_2_LEFT, ROW_1_RIGHT | ROW_2_CENTER | ROW_2_RIGHT]
* - HVAC_DUAL_ON->[ROW_1_LEFT | ROW_2_LEFT | ROW_1_RIGHT | ROW_2_CENTER | ROW_2_RIGHT]
*
* When the property is enabled, the ECU must synchronize the temperature
* for the affected areas. Any parameters modified as a side effect
* of turning on/off the DUAL_ON parameter shall generate
* onPropertyEvent() callbacks to the VHAL. In addition, if setting
* a temperature (i.e. driver's temperature) changes another temperature
* (i.e. front passenger's temperature), then the appropriate
* onPropertyEvent() callbacks must be generated. If a user changes a
* temperature that breaks the coupling (e.g. setting the passenger
* temperature independently) then the VHAL must send the appropriate
* onPropertyEvent() callbacks (i.e. HVAC_DUAL_ON = false,
* HVAC_TEMPERATURE_SET[AreaID] = xxx, etc).
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
HVAC_DUAL_ON = 0x0509 + 0x10000000 + 0x05000000
+ 0x00200000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:BOOLEAN
/**
* On/off automatic climate control.
*
* If true, automatic climate control is on. If false, automatic climate control is off.
*
* If the vehicle does not support directly turning off automatic climate control, then OEMs
* should add logic in their VHAL implementation so that setting HVAC_AUTO_ON to false would
* change the necessary HVAC settings to indirectly turn off HVAC_AUTO_ON. Ideally, this should
* not be disruptive to the user, so OEMs should change back to the previous state any settings
* that were modified once automatic climate control is off. That way the only outcome should be
* that HVAC_AUTO_ON is off. If restoring the HVAC settings to its previous settings is not
* possible, then the OEM should choose the least disruptive change and implement that.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
HVAC_AUTO_ON = 0x050A + 0x10000000 + 0x05000000
+ 0x00200000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:BOOLEAN
/**
* Seat heating/cooling
*
* The maxInt32Value and minInt32Value in VehicleAreaConfig must be defined.
* All integers between minInt32Value and maxInt32Value must be supported.
*
* The maxInt32Value indicates the maximum seat temperature heating setting.
* The minInt32Value must be 0, unless the vehicle supports seat cooling as well. In this case,
* minInt32Value indicates the maximum seat temperature cooling setting.
*
* This property is not in any particular unit, but in a specified range of relative temperature
* settings.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
HVAC_SEAT_TEMPERATURE = 0x050B + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* Side Mirror Heat
*
* Increasing values denote higher heating levels for side mirrors.
*
* The maxInt32Value and minInt32Value in VehicleAreaConfig must be defined.
* All integers between minInt32Value and maxInt32Value must be supported.
*
* The maxInt32Value in the config data represents the maximum heating level.
* The minInt32Value in the config data MUST be zero and indicates no heating.
*
* This property is not in any particular unit but in a specified range of relative heating
* settings.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
HVAC_SIDE_MIRROR_HEAT = 0x050C + 0x10000000 + 0x04000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:MIRROR,VehiclePropertyType:INT32
/**
* Steering Wheel Heating/Cooling
*
* Sets the amount of heating/cooling for the steering wheel.
*
* The maxInt32Value and minInt32Value in VehicleAreaConfig must be defined.
* All integers between minInt32Value and maxInt32Value must be supported.
*
* The maxInt32Value indicates the maximum steering wheel heating setting.
* The minInt32Value should be 0, unless the vehicle supports steering wheel cooling as well. In
* such a case, the minInt32Value indicates the maximum steering wheel cooling setting.
*
* This property is not in any particular unit but in a specified range of heating settings.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
HVAC_STEERING_WHEEL_HEAT = 0x050D + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Temperature units for display
*
* Indicates whether the vehicle is displaying temperature to the user as
* Celsius or Fahrenheit.
* VehiclePropConfig.configArray is used to indicate the supported temperature display units.
* For example: configArray[0] = CELSIUS
* configArray[1] = FAHRENHEIT
*
* This parameter MAY be used for displaying any HVAC temperature in the system.
* Values must be one of VehicleUnit::CELSIUS or VehicleUnit::FAHRENHEIT
* Note that internally, all temperatures are represented in floating point Celsius.
*
* If updating HVAC_TEMPERATURE_DISPLAY_UNITS affects the values of other *_DISPLAY_UNITS
* properties, then their values must be updated and communicated to the AAOS framework as well.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleUnit
*/
HVAC_TEMPERATURE_DISPLAY_UNITS = 0x050E + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Actual fan speed
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
*/
HVAC_ACTUAL_FAN_SPEED_RPM = 0x050F + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* Represents global power state for HVAC. Setting this property to false
* MAY mark some properties that control individual HVAC features/subsystems
* to UNAVAILABLE state. Setting this property to true MAY mark some
* properties that control individual HVAC features/subsystems to AVAILABLE
* state (unless any/all of them are UNAVAILABLE on their own individual
* merits).
*
* [Definition] HvacPower_DependentProperties: Properties that need HVAC to be
* powered on in order to enable their functionality. For example, in some cars,
* in order to turn on the AC, HVAC must be powered on first.
*
* HvacPower_DependentProperties list must be set in the
* VehiclePropConfig.configArray. HvacPower_DependentProperties must only contain
* properties that are associated with VehicleArea:SEAT. Properties that are not
* associated with VehicleArea:SEAT, for example, HVAC_DEFROSTER, must never
* depend on HVAC_POWER_ON property and must never be part of
* HvacPower_DependentProperties list.
*
* AreaID mapping for HVAC_POWER_ON property must contain all AreaIDs that
* HvacPower_DependentProperties are mapped to.
*
* Example 1: A car has two front seats (ROW_1_LEFT, ROW_1_RIGHT) and three back
* seats (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT). If the HVAC features (AC,
* Temperature etc.) throughout the car are dependent on a single HVAC power
* controller then HVAC_POWER_ON must be mapped to
* [ROW_1_LEFT | ROW_1_RIGHT | ROW_2_LEFT | ROW_2_CENTER | ROW_2_RIGHT].
*
* Example 2: A car has two seats in the front row (ROW_1_LEFT, ROW_1_RIGHT) and
* three seats in the second (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT) and third
* rows (ROW_3_LEFT, ROW_3_CENTER, ROW_3_RIGHT). If the car has temperature
* controllers in the front row which can operate entirely independently of
* temperature controllers in the back of the vehicle, then HVAC_POWER_ON
* must be mapped to a two element array:
* - ROW_1_LEFT | ROW_1_RIGHT
* - ROW_2_LEFT | ROW_2_CENTER | ROW_2_RIGHT | ROW_3_LEFT | ROW_3_CENTER | ROW_3_RIGHT
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
HVAC_POWER_ON = 0x0510 + 0x10000000 + 0x05000000
+ 0x00200000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:BOOLEAN
/**
* Fan Positions Available
*
* This is a bit mask of fan positions available for the zone. Each
* available fan direction is denoted by a separate entry in the vector. A
* fan direction may have multiple bits from vehicle_hvac_fan_direction set.
* For instance, a typical car may have the following fan positions:
* - FAN_DIRECTION_FACE (0x1)
* - FAN_DIRECTION_FLOOR (0x2)
* - FAN_DIRECTION_FACE | FAN_DIRECTION_FLOOR (0x3)
* - FAN_DIRECTION_DEFROST (0x4)
* - FAN_DIRECTION_FLOOR | FAN_DIRECTION_DEFROST (0x6)
*
* @change_mode VehiclePropertyChangeMode.STATIC
* @access VehiclePropertyAccess.READ
* @data_enum VehicleHvacFanDirection
*/
HVAC_FAN_DIRECTION_AVAILABLE = 0x0511 + 0x10000000 + 0x05000000
+ 0x00410000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32_VEC
/**
* Automatic recirculation on/off
*
* When automatic recirculation is ON, the HVAC system may automatically
* switch to recirculation mode if the vehicle detects poor incoming air
* quality.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
HVAC_AUTO_RECIRC_ON = 0x0512 + 0x10000000 + 0x05000000
+ 0x00200000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:BOOLEAN
/**
* Seat ventilation
*
* The maxInt32Value and minInt32Value in VehicleAreaConfig must be defined.
* All integers between minInt32Value and maxInt32Value must be supported.
*
* The minInt32Value must be 0.
* The maxInt32Value indicates the maximum ventilation setting available for the seat.
*
* This property is not in any particular unit but in the specified range of ventilation
* settings.
*
* Used by HVAC apps and Assistant to enable, change, or read state of seat
* ventilation. This is different than seating cooling. It can be on at the
* same time as cooling, or not.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
HVAC_SEAT_VENTILATION = 0x0513 + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* Electric defrosters' status
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
HVAC_ELECTRIC_DEFROSTER_ON = 0x0514 + 0x10000000 + 0x03000000
+ 0x00200000, // VehiclePropertyGroup:SYSTEM,VehicleArea:WINDOW,VehiclePropertyType:BOOLEAN
/**
* Suggested values for setting HVAC temperature.
*
* Implement the property to help applications understand the closest supported temperature
* value in Celsius or Fahrenheit.
*
* floatValues[0] = the requested value that an application wants to set a temperature to.
* floatValues[1] = the unit for floatValues[0]. It should be one of
* {VehicleUnit:CELSIUS, VehicleUnit:FAHRENHEIT}.
* floatValues[2] = the value OEMs suggested in CELSIUS. This value is not included
* in the request.
* floatValues[3] = the value OEMs suggested in FAHRENHEIT. This value is not included
* in the request.
*
* An application calls set(VehiclePropValue propValue) with the requested value and unit for
* the value. OEMs need to return the suggested values in floatValues[2] and floatValues[3] by
* onPropertyEvent() callbacks.
*
* For example, when a user uses the voice assistant to set HVAC temperature to 66.2 in
* Fahrenheit.
* First, an application will set this property with the value
* [66.2, (float)VehicleUnit:FAHRENHEIT,0,0].
* If OEMs suggest to set 19.0 in Celsius or 66.5 in Fahrenheit for user's request, then VHAL
* must generate a callback with property value
* [66.2, (float)VehicleUnit:FAHRENHEIT, 19.0, 66.5]. After the voice assistant gets the
* callback, it will inform the user and set HVAC temperature to the suggested value.
*
* Another example, an application receives 21 Celsius as the current temperature value by
* querying HVC_TEMPERATURE_SET. But the application wants to know what value is displayed on
* the car's UI in Fahrenheit.
* For this, the application sets the property to [21, (float)VehicleUnit:CELSIUS, 0, 0]. If
* the suggested value by the OEM for 21 Celsius is 70 Fahrenheit, then VHAL must generate a
* callback with property value [21, (float)VehicleUnit:CELSIUS, 21.0, 70.0].
* In this case, the application can know that the value is 70.0 Fahrenheit in the car’s UI.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
*/
HVAC_TEMPERATURE_VALUE_SUGGESTION = 0x0515 + 0x10000000 + 0x01000000
+ 0x00610000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:FLOAT_VEC
/**
* Distance units for display
*
* Indicates which units the car is using to display distances to the user. Eg. Mile, Meter
* Kilometer.
*
* Distance units are defined in VehicleUnit.
* VehiclePropConfig.configArray is used to indicate the supported distance display units.
* For example: configArray[0] = METER
* configArray[1] = KILOMETER
* configArray[2] = MILE
*
* If updating DISTANCE_DISPLAY_UNITS affects the values of other *_DISPLAY_UNITS properties,
* then their values must be updated and communicated to the AAOS framework as well.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleUnit
*/
DISTANCE_DISPLAY_UNITS = 0x0600 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Fuel volume units for display
*
* Indicates which units the car is using to display fuel volume to the user. Eg. Liter or
* Gallon.
*
* VehiclePropConfig.configArray is used to indicate the supported fuel volume display units.
* Volume units are defined in VehicleUnit.
* For example: configArray[0] = LITER
* configArray[1] = GALLON
*
* If updating FUEL_VOLUME_DISPLAY_UNITS affects the values of other *_DISPLAY_UNITS properties,
* then their values must be updated and communicated to the AAOS framework as well.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleUnit
*/
FUEL_VOLUME_DISPLAY_UNITS = 0x0601 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Tire pressure units for display
*
* Indicates which units the car is using to display tire pressure to the user. Eg. PSI, Bar or
* Kilopascal.
*
* VehiclePropConfig.configArray is used to indicate the supported pressure display units.
* Pressure units are defined in VehicleUnit.
* For example: configArray[0] = KILOPASCAL
* configArray[1] = PSI
* configArray[2] = BAR
*
* If updating TIRE_PRESSURE_DISPLAY_UNITS affects the values of other *_DISPLAY_UNITS
* properties, then their values must be updated and communicated to the AAOS framework as well.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleUnit
*/
TIRE_PRESSURE_DISPLAY_UNITS = 0x0602 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* EV battery units for display
*
* Indicates which units the car is using to display EV battery information to the user. Eg.
* watt-hours(Wh), kilowatt-hours(kWh) or ampere-hours(Ah).
*
* VehiclePropConfig.configArray is used to indicate the supported electrical energy units.
* Electrical energy units are defined in VehicleUnit.
* For example: configArray[0] = WATT_HOUR
* configArray[1] = AMPERE_HOURS
* configArray[2] = KILOWATT_HOUR
*
* If updating EV_BATTERY_DISPLAY_UNITS affects the values of other *_DISPLAY_UNITS properties,
* then their values must be updated and communicated to the AAOS framework as well.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleUnit
*/
EV_BATTERY_DISPLAY_UNITS = 0x0603 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Fuel consumption units for display
*
* Indicates type of units the car is using to display fuel consumption information to user
* True indicates units are distance over volume such as MPG.
* False indicates units are volume over distance such as L/100KM.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
FUEL_CONSUMPTION_UNITS_DISTANCE_OVER_VOLUME = 0x0604 + 0x10000000 + 0x01000000
+ 0x00200000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:BOOLEAN
/**
* Speed units for display
*
* Indicates type of units the car is using to display speed to user. Eg. m/s, km/h, or mph.
*
* VehiclePropConfig.configArray is used to indicate the supported speed display units.
* Pressure units are defined in VehicleUnit.
* For example: configArray[0] = METER_PER_SEC
* configArray[1] = MILES_PER_HOUR
* configArray[2] = KILOMETERS_PER_HOUR
*
* If updating VEHICLE_SPEED_DISPLAY_UNITS affects the values of other *_DISPLAY_UNITS
* properties, then their values must be updated and communicated to the AAOS framework as well.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
VEHICLE_SPEED_DISPLAY_UNITS = 0x0605 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Current date and time suggestion for the Car, encoded as Epoch time
* (in milliseconds). This value denotes the number of milliseconds seconds
* that have elapsed since 1/1/1970 UTC.
*
* This property signals a change in CarTime to Android. If the property is supported, VHAL
* must report the most accurate current CarTime when this property is read, and publish a
* change to this property when the CarTime value has changed. An on-change event for this
* property must be published when CarTime changes for any reason other than the natural elapse
* of time (time delta smaller than 500ms should not trigger an on change event). Android will
* read and subscribe to this property to fetch time from VHAL. This can be useful to
* synchronize Android's time with other vehicle systems (dash clock etc).
* int64Values[0] = provided Epoch time (in milliseconds)
*
* Whenever a new Value for the property is received, AAOS will create
* and send an "ExternalTimeSuggestion" to the "TimeDetectorService".
* If other sources do not have a higher priority, Android will use this
* to set the system time. For information on how to adjust time source
* priorities and how time suggestions are handled (including how Android
* handles gitter, drift, and minimum resolution) see Time Detector Service
* documentation.
*
* Note that the property may take >0 ms to get propagated through the stack
* and, having a timestamped property helps reduce any time drift. So,
* for all reads to the property, the timestamp can be used to negate this
* drift:
* drift = elapsedTime - PropValue.timestamp
* effectiveTime = PropValue.value.int64Values[0] + drift
*
* It is strongly recommended that this property must not be used to retrieve
* time from ECUs using protocols (GNSS, NTP, Telephony etc). Since these
* protocols are already supported by Android, it is recommended to use
* Android’s own systems for them instead of wiring those through the VHAL
* using this property.
*
* WARNING: The value available through this property should not be dependent
* on value written by Android to ANDROID_EPOCH_TIME property in any way.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @unit VehicleUnit:MILLI_SECS
*/
EXTERNAL_CAR_TIME = 0x0608 + 0x10000000 // VehiclePropertyGroup:SYSTEM
+ 0x01000000 // VehicleArea:GLOBAL
+ 0x00500000, // VehiclePropertyType:INT64
/**
* Current date and time, encoded as Epoch time (in milliseconds).
* This value denotes the number of milliseconds seconds that have
* elapsed since 1/1/1970 UTC.
*
* CarServices will write to this value to give VHAL the Android system's
* time, if the VHAL supports this property. This can be useful to
* synchronize other vehicle systems (dash clock etc) with Android's time.
*
* AAOS writes to this property once during boot, and
* will thereafter write only when some time-source changes are propagated.
* AAOS will fill in VehiclePropValue.timestamp correctly.
* Note that AAOS will not send updates for natural elapse of time.
* int64Values[0] = provided Unix time (in milliseconds)
*
* Note that the property may take >0 ms to get propagated through the stack
* and, having a timestamped property helps reduce any time drift. So,
* for all writes to the property, the timestamp can be used to negate this
* drift:
* drift = elapsedTime - PropValue.timestamp
* effectiveTime = PropValue.value.int64Values[0] + drift
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.WRITE
* @unit VehicleUnit:MILLI_SECS
*/
ANDROID_EPOCH_TIME = 0x0606 + 0x10000000 + 0x01000000
+ 0x00500000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT64
/**
* External encryption binding seed.
*
* This value is mixed with the local key storage encryption key.
* This property holds 16 bytes, and is expected to be persisted on an ECU separate from
* the IVI. The property is initially set by AAOS, who generates it using a CSRNG.
* AAOS will then read the property on subsequent boots. The binding seed is expected to be
* reliably persisted. Any loss of the seed results in a factory reset of the IVI.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
*/
STORAGE_ENCRYPTION_BINDING_SEED = 0x0607 + 0x10000000 + 0x01000000
+ 0x00700000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:BYTES
/**
* Outside temperature
*
* @change_mode VehiclePropertyChangeMode.CONTINUOUS
* @access VehiclePropertyAccess.READ
* @unit VehicleUnit:CELSIUS
*/
ENV_OUTSIDE_TEMPERATURE = 0x0703 + 0x10000000 + 0x01000000
+ 0x00600000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:FLOAT
/**
* Property to control power state of application processor
*
* It is assumed that AP's power state is controlled by a separate power
* controller.
*
* For configuration information, VehiclePropConfig.configArray must have bit flag combining
* values in VehicleApPowerStateConfigFlag.
*
* int32Values[0] : VehicleApPowerStateReq enum value
* int32Values[1] : additional parameter relevant for each state,
* 0 if not used.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
*/
AP_POWER_STATE_REQ = 0x0A00 + 0x10000000 + 0x01000000
+ 0x00410000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32_VEC
/**
* Property to report power state of application processor
*
* It is assumed that AP's power state is controller by separate power
* controller.
*
* int32Values[0] : VehicleApPowerStateReport enum value
* int32Values[1] : Time in ms to wake up, if necessary. Otherwise 0.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
*/
AP_POWER_STATE_REPORT = 0x0A01 + 0x10000000 + 0x01000000
+ 0x00410000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32_VEC
/**
* Property to report bootup reason for the current power on. This is a
* static property that will not change for the whole duration until power
* off. For example, even if user presses power on button after automatic
* power on with door unlock, bootup reason must stay with
* VehicleApPowerBootupReason#USER_UNLOCK.
*
* int32Values[0] must be VehicleApPowerBootupReason.
*
* @change_mode VehiclePropertyChangeMode.STATIC
* @access VehiclePropertyAccess.READ
*/
AP_POWER_BOOTUP_REASON = 0x0A02 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Property to represent brightness of the display.
*
* Some cars have single control for the brightness of all displays and this
* property is to share change in that control. In cars which have displays
* whose brightness is controlled separately, they must use
* PER_DISPLAY_BRIGHTNESS.
*
* Only one of DISPLAY_BRIGHTNESS and PER_DISPLAY_BRIGHTNESS should be
* implemented. If both are available, PER_DISPLAY_BRIGHTNESS is used by
* AAOS.
*
* If this is writable, android side can set this value when user changes
* display brightness from Settings. If this is read only, user may still
* change display brightness from Settings, but that must not be reflected
* to other displays.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
*/
DISPLAY_BRIGHTNESS = 0x0A03 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Property to represent brightness of the displays which are controlled separately.
*
* Some cars have one or more displays whose brightness is controlled
* separately and this property is to inform the brightness of each
* passenger display. In cars where all displays' brightness is controlled
* together, they must use DISPLAY_BRIGHTNESS.
*
* Only one of DISPLAY_BRIGHTNESS and PER_DISPLAY_BRIGHTNESS should be
* implemented. If both are available, PER_DISPLAY_BRIGHTNESS is used by
* AAOS.
*
* The display port uniquely identifies a physical connector on the device
* for display output, ranging from 0 to 255.
*
* int32Values[0] : display port
* int32Values[1] : brightness
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
*/
PER_DISPLAY_BRIGHTNESS = 0x0A04 + 0x10000000 + 0x01000000
+ 0x00410000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32_VEC
/**
* Property to feed H/W input events to android
*
* int32Values[0] : action defined by VehicleHwKeyInputAction
* int32Values[1] : key code, must use standard android key code
* int32Values[2] : target display defined in VehicleDisplay. Events not
* tied to specific display must be sent to
* VehicleDisplay#MAIN.
* int32Values[3] : [optional] Number of ticks. The value must be equal or
* greater than 1. When omitted, Android will default to 1.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @config_flags
*/
HW_KEY_INPUT = 0x0A10 + 0x10000000 + 0x01000000
+ 0x00410000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32_VEC
/**
* Property to feed H/W input events to android
*
* int32array[0]: target display defined by VehicleDisplay like VehicleDisplay::MAIN,
* VehicleDisplay::INSTRUMENT_CLUSTER, VehicleDisplay::AUX
* int32array[1]: key code, must use standard android key code like KEYCODE_HOME, KEYCODE_BACK
* int32array[2]: action defined in VehicleHwKeyInputAction like
* VehicleHwKeyInputAction::ACTION_UP, VehicleHwKeyInputAction::ACTION_UP
* int32array[3]: repeat count of the event. For key down events, this is the repeat count
* with the first down starting at 0 and counting up from there. For key up
* events, this is always equal to 0
*
* int64array[0]: down time, elapsed nanoseconds since boot. Denotes the time of the most
* recent key down event. For the down event, it will be the event time of the
* down event itself
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @config_flags
*/
HW_KEY_INPUT_V2 =
0x0A11 + VehiclePropertyGroup.SYSTEM + VehicleArea.SEAT + VehiclePropertyType.MIXED,
/**
* Property to feed H/W input events to android
*
* int32array[0]: target display defined by VehicleDisplay like VehicleDisplay::MAIN,
* VehicleDisplay::INSTRUMENT_CLUSTER, VehicleDisplay::AUX
* int32array[1]: input type defined in VehicleHwMotionInputSource like
* VehicleHwMotionInputSource::SOURCE_KEYBOARD,
* VehicleHwMotionInputSource::SOURCE_DPAD
* int32array[2]: action code defined in VehicleHwMotionInputAction like
* VehicleHwMotionInputAction::ACTION_UP, VehicleHwMotionInputAction::ACTION_DOWN
* int32array[3]: button state flag defined in VehicleHwMotionButtonStateFlag like
* VehicleHwMotionButtonStateFlag::BUTTON_PRIMARY,
* VehicleHwMotionButtonStateFlag::BUTTON_SECONDARY
* int32array[4]: pointer events count, N. N must be a positive integer
* int32array[5:5+N-1]: pointer id, length N
* int32array[5+N:5+2*N-1] : tool type, length N. As defined in VehicleHwMotionToolType like
* VehicleHwMotionToolType::TOOL_TYPE_FINGER,
* VehicleHwMotionToolType::TOOL_TYPE_STYLUS
*
* floatArray[0:N-1] : x data, length N
* floatArray[N:2*N-1] : y data, length N
* floatArray[2*N:3*N-1] : pressure data, length N
* floatArray[3*N:4*N-1] : size data, length N
*
* int64array[0]: down time, elapsed nanoseconds since boot. Denotes the time when the user
* originally pressed down to start a stream of position events. For the down
* event, it will be the event time of the down event itself
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @config_flags
*/
HW_MOTION_INPUT =
0x0A12 + VehiclePropertyGroup.SYSTEM + VehicleArea.SEAT + VehiclePropertyType.MIXED,
/**
* Property to feed H/W rotary events to android
*
* int32Values[0] : RotaryInputType identifying which rotary knob rotated
* int32Values[1] : number of detents (clicks), positive for clockwise,
* negative for counterclockwise
* int32Values[2] : target display defined in VehicleDisplay. Events not
* tied to specific display must be sent to
* VehicleDisplay#MAIN.
* int32values[3 .. 3 + abs(number of detents) - 2]:
* nanosecond deltas between pairs of consecutive detents,
* if the number of detents is > 1 or < -1
*
* VehiclePropValue.timestamp: when the rotation occurred. If the number of
* detents is > 1 or < -1, this is when the
* first detent of rotation occurred.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @data_enum RotaryInputType
* @access VehiclePropertyAccess.READ
*/
HW_ROTARY_INPUT = 0x0A20 + 0x10000000 + 0x01000000
+ 0x00410000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32_VEC
/**
* Defines a custom OEM partner input event.
*
* This input event must be used by OEM partners who wish to propagate events not supported
* by Android. It is composed by an array of int32 values only.
*
* The Android properties are:
*
* int32Values[0] : Input code identifying the function representing this event. Valid event
* types are defined by CustomInputType.CUSTOM_EVENT_F1 up to
* CustomInputType.CUSTOM_EVENT_F10. They represent the custom event to be
* defined by OEM partners.
* int32Values[1] : target display type defined in VehicleDisplay. Events not tied to specific
* display must be sent to VehicleDisplay#MAIN.
* int32Values[2] : repeat counter, if 0 then event is not repeated. Values 1 or above means
* how many times this event repeated.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @data_enum CustomInputType
* @access VehiclePropertyAccess.READ
*/
HW_CUSTOM_INPUT = 0X0A30 + 0x10000000 + 0x01000000
+ 0x00410000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32_VEC
/***************************************************************************
* Most Car Cabin properties have both a POSition and MOVE parameter. These
* are used to control the various movements for seats, doors, and windows
* in a vehicle.
*
* A POS parameter allows the user to set the absolution position. For
* instance, for a door, 0 indicates fully closed and max value indicates
* fully open. Thus, a value halfway between min and max must indicate
* the door is halfway open.
*
* A MOVE parameter moves the device in a particular direction. The sign
* indicates direction, and the magnitude indicates speed (if multiple
* speeds are available). For a door, a move of -1 will close the door, and
* a move of +1 will open it. Once a door reaches the limit of open/close,
* the door should automatically stop moving. The user must NOT need to
* send a MOVE(0) command to stop the door at the end of its range.
**************************************************************************/
/**
* Door position
*
* The maxInt32Value and minInt32Value in VehicleAreaConfig must be defined.
* All integers between minInt32Value and maxInt32Value must be supported.
*
* The minInt32Value indicates the door is closed. The minInt32Value must be 0.
* The maxInt32Value indicates the door is fully open.
*
* Values in between minInt32Value and maxInt32Value indicate a transition state between the
* closed and fully open positions.
*
* This property is not in any particular unit but in a specified range of relative positions.
*
* Some vehicles (minivans) can open the door electronically. Hence, the
* ability to write this property.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
DOOR_POS = 0x0B00 + 0x10000000 + 0x06000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:DOOR,VehiclePropertyType:INT32
/**
* Door move
*
* The maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers
* between minInt32Value and maxInt32Value must be supported.
*
* The maxInt32Value represents the maximum movement speed of the door while opening.
* The minInt32Value represents the maximum movement speed of the door while closing.
*
* Larger absolute values, either positive or negative, indicate a faster movement speed. Once
* the door reaches the positional limit, the value must reset to 0. If DOOR_MOVE's value is
* currently 0, then that means there is no movement currently occurring.
*
* This property is not in any particular unit but in a specified range of relative movement
* speeds.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
DOOR_MOVE = 0x0B01 + 0x10000000 + 0x06000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:DOOR,VehiclePropertyType:INT32
/**
* Door lock
*
* 'true' indicates door is locked
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
DOOR_LOCK = 0x0B02 + 0x10000000 + 0x06000000
+ 0x00200000, // VehiclePropertyGroup:SYSTEM,VehicleArea:DOOR,VehiclePropertyType:BOOLEAN
/**
* Door child lock feature enabled
*
* Returns true if the door child lock feature is enabled and false if it is disabled.
*
* If enabled, the door is unable to be opened from the inside.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
DOOR_CHILD_LOCK_ENABLED =
0x0B03 + VehiclePropertyGroup.SYSTEM + VehicleArea.DOOR + VehiclePropertyType.BOOLEAN,
/**
* Mirror Z Position
*
* The maxInt32Value and minInt32Value in VehicleAreaConfig must be defined.
* All integers between minInt32Value and maxInt32Value must be supported.
*
* The minInt32Value indicates the mirror is tilted completely downwards. This must be a
* non-positive value.
* The maxInt32Value indicates the mirror is tilted completely upwards. This must be a
* non-negative value.
* 0 indicates the mirror is not tilted in either direction.
*
* Values in between minInt32Value and maxInt32Value indicate a transition state between the
* fully downward and fully upwards positions.
*
* This property is not in any particular unit but in a specified range of relative positions.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
MIRROR_Z_POS = 0x0B40 + 0x10000000 + 0x04000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:MIRROR,VehiclePropertyType:INT32
/**
* Mirror Z Move
*
* The maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers
* between minInt32Value and maxInt32Value must be supported.
*
* The maxInt32Value represents the maximum movement speed of the mirror while tilting upwards.
* The minInt32Value represents the maximum movement speed of the mirror while tilting
* downwards.
*
* Larger absolute values, either positive or negative, indicate a faster movement speed. Once
* the mirror reaches the positional limit, the value must reset to 0. If MIRROR_Z_MOVE's value
* is currently 0, then that means there is no movement currently occurring.
*
* This property is not in any particular unit but in a specified range of relative movement
* speeds.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
MIRROR_Z_MOVE = 0x0B41 + 0x10000000 + 0x04000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:MIRROR,VehiclePropertyType:INT32
/**
* Mirror Y Position
*
* The maxInt32Value and minInt32Value in VehicleAreaConfig must be defined.
* All integers between minInt32Value and maxInt32Value must be supported.
*
* The minInt32Value indicates the mirror is tilted completely to the left. This must be a
* non-positive value.
* The maxInt32Value indicates the mirror is tilted completely to the right. This must be a
* non-negative value.
* 0 indicates the mirror is not tilted in either direction.
*
* Values in between minInt32Value and maxInt32Value indicate a transition state between the
* left extreme and right extreme positions.
*
* This property is not in any particular unit but in a specified range of relative positions.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
MIRROR_Y_POS = 0x0B42 + 0x10000000 + 0x04000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:MIRROR,VehiclePropertyType:INT32
/**
* Mirror Y Move
*
* The maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers
* between minInt32Value and maxInt32Value must be supported.
*
* The maxInt32Value represents the maximum movement speed of the mirror while tilting right.
* The minInt32Value represents the maximum movement speed of the mirror while tilting left.
*
* Larger absolute values, either positive or negative, indicate a faster movement speed. Once
* the mirror reaches the positional limit, the value must reset to 0. If MIRROR_Y_MOVE's value
* is currently 0, then that means there is no movement currently occurring.
*
* This property is not in any particular unit but in a specified range of relative movement
* speeds.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
MIRROR_Y_MOVE = 0x0B43 + 0x10000000 + 0x04000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:MIRROR,VehiclePropertyType:INT32
/**
* Mirror Lock
*
* True indicates mirror positions are locked and not changeable
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
MIRROR_LOCK = 0x0B44 + 0x10000000 + 0x01000000
+ 0x00200000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:BOOLEAN
/**
* Mirror Fold
*
* True indicates mirrors are folded
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
MIRROR_FOLD = 0x0B45 + 0x10000000 + 0x01000000
+ 0x00200000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:BOOLEAN
/**
* Represents property for Mirror Auto Fold feature.
*
* This property is true when the feature for automatically folding the vehicle's side mirrors
* (for example, when the mirrors fold inward automatically when one exits and locks the
* vehicle) is enabled.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
MIRROR_AUTO_FOLD_ENABLED =
0x0B46 + VehiclePropertyGroup.SYSTEM + VehicleArea.MIRROR + VehiclePropertyType.BOOLEAN,
/**
* Represents property for Mirror Auto Tilt feature.
*
* This property is true when the feature for automatically tilting the vehicle's side mirrors
* (for example, when the mirrors tilt downward automatically when one reverses the vehicle) is
* enabled.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
MIRROR_AUTO_TILT_ENABLED =
0x0B47 + VehiclePropertyGroup.SYSTEM + VehicleArea.MIRROR + VehiclePropertyType.BOOLEAN,
/**
* Seat memory select
*
* This parameter selects the memory preset to use to select the seat position. The
* maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. All integers between
* minInt32Value and maxInt32Value must be supported. The minInt32Value is always 0, and the
* maxInt32Value determines the number of seat preset memory slots available (i.e.
* numSeatPresets - 1).
*
* For instance, if the driver's seat has 3 memory presets, the maxInt32Value will be 2. When
* the user wants to select a preset, the desired preset number (0, 1, or 2) is set.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.WRITE
*/
SEAT_MEMORY_SELECT = 0x0B80 + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* Seat memory set
*
* This setting allows the user to save the current seat position settings into the selected
* preset slot. The maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. The
* minInt32Value must be 0, and the maxInt32Value for each seat position must match the
* maxInt32Value for SEAT_MEMORY_SELECT.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.WRITE
*/
SEAT_MEMORY_SET = 0x0B81 + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* Seatbelt buckled
*
* True indicates belt is buckled.
*
* Write access indicates automatic seat buckling capabilities. There are
* no known cars at this time, but you never know...
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
SEAT_BELT_BUCKLED = 0x0B82 + 0x10000000 + 0x05000000
+ 0x00200000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:BOOLEAN
/**
* Seatbelt height position
*
* Adjusts the shoulder belt anchor point.
*
* The maxInt32Value and minInt32Value in VehicleAreaConfig must be defined.
* All integers between minInt32Value and maxInt32Value must be supported.
*
* The minInt32Value indicates the seat belt's shoulder anchor is at its lowest position.
* The maxInt32Value indicates the seat belt's shoulder anchor is at its highest position.
*
* Values in between minInt32Value and maxInt32Value indicate a transition state between the
* lowest and highest positions.
*
* This property is not in any particular unit but in a specified range of relative positions.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
SEAT_BELT_HEIGHT_POS = 0x0B83 + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* Seatbelt height move
*
* The maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers
* between minInt32Value and maxInt32Value must be supported.
*
* The maxInt32Value represents the maximum movement speed of the seat belt's shoulder anchor
* while moving upwards.
* The minInt32Value represents the maximum movement speed of the seat belt's shoulder anchor
* while moving downwards.
*
* Larger absolute values, either positive or negative, indicate a faster movement speed. Once
* the seat belt reaches the positional limit, the value must reset to 0. If
* SEAT_BELT_HEIGHT_MOVE's value is currently 0, then that means there is no movement currently
* occurring.
*
* This property is not in any particular unit but in a specified range of relative movement
* speeds.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
SEAT_BELT_HEIGHT_MOVE = 0x0B84 + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* Seat fore/aft position
*
* Sets the seat position forward and backwards.
*
* The maxInt32Value and minInt32Value in VehicleAreaConfig must be defined.
* All integers between minInt32Value and maxInt32Value must be supported.
*
* The minInt32Value indicates the seat is at its rearward-most linear position.
* The maxInt32Value indicates the seat is at its forward-most linear position.
*
* Values in between minInt32Value and maxInt32Value indicate a transition state between the
* closest and farthest positions.
*
* This property is not in any particular unit but in a specified range of relative positions.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
SEAT_FORE_AFT_POS = 0x0B85 + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* Seat fore/aft move
*
* This property moves the entire seat forward/backward in the direction that it is facing.
*
* The maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers
* between minInt32Value and maxInt32Value must be supported.
*
* The maxInt32Value represents the maximum movement speed of the seat while moving forward.
* The minInt32Value represents the maximum movement speed of the seat while moving backward.
*
* Larger absolute values, either positive or negative, indicate a faster movement speed. Once
* the seat reaches the positional limit, the value must reset to 0. If SEAT_FORE_AFT_MOVE's
* value is currently 0, then that means there is no movement currently occurring.
*
* This property is not in any particular unit but in a specified range of relative movement
* speeds.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
SEAT_FORE_AFT_MOVE = 0x0B86 + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* Seat backrest angle 1 position
*
* Backrest angle 1 is the actuator closest to the bottom of the seat.
*
* The maxInt32Value and minInt32Value in VehicleAreaConfig must be defined.
* All integers between minInt32Value and maxInt32Value must be supported.
*
* The minInt32Value indicates the seat backrest's full recline position w.r.t the
* actuator at the bottom of the seat.
* The maxInt32Value indicates the seat backrest's most upright/forward position w.r.t the
* actuator at the bottom of the seat.
*
* Values in between minInt32Value and maxInt32Value indicate a transition state between the
* full recline and upright/forward positions.
*
* This property is not in any particular unit but in a specified range of relative positions.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
SEAT_BACKREST_ANGLE_1_POS = 0x0B87 + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* Seat backrest angle 1 move
*
* The maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers
* between minInt32Value and maxInt32Value must be supported.
*
* The maxInt32Value represents the maximum movement speed of the seat backrest while angling
* forward.
* The minInt32Value represents the maximum movement speed of the seat backrest while reclining.
*
* Larger absolute values, either positive or negative, indicate a faster movement speed. Once
* the seat backrest reaches the positional limit, the value must reset to 0. If
* SEAT_BACKREST_ANGLE_1_MOVE's value is currently 0, then that means there is no movement
* currently occurring.
*
* This property is not in any particular unit but in a specified range of relative movement
* speeds.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
SEAT_BACKREST_ANGLE_1_MOVE = 0x0B88 + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* Seat backrest angle 2 position
*
* Backrest angle 2 is the next actuator up from the bottom of the seat.
*
* The maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. All integers
* between minInt32Value and maxInt32Value must be supported.
*
* The minInt32Value indicates the seat backrest's full recline position w.r.t the next
* actuator in the backrest from the one at the bottom of the seat (see
* SEAT_BACKREST_ANGLE_1_POS for additional details).
* The maxInt32Value indicates the seat backrest's most upright/forward position w.r.t the
* next actuator in the backrest from the one at the bottom of the seat(see
* SEAT_BACKREST_ANGLE_1_POS for additional details).
*
* Values in between minInt32Value and maxInt32Value indicate a transition state between the
* full recline and upright/forward positions.
*
* This property is not in any particular unit but in a specified range of relative positions.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
SEAT_BACKREST_ANGLE_2_POS = 0x0B89 + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* Seat backrest angle 2 move
*
* The maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers
* between minInt32Value and maxInt32Value must be supported.
*
* The maxInt32Value represents the maximum movement speed of the seat backrest while angling
* forward.
* The minInt32Value represents the maximum movement speed of the seat backrest while reclining.
*
* Larger absolute values, either positive or negative, indicate a faster movement speed. Once
* the seat backrest reaches the positional limit, the value must reset to 0. If
* SEAT_BACKREST_ANGLE_2_MOVE's value is currently 0, then that means there is no movement
* currently occurring.
*
* This property is not in any particular unit but in a specified range of relative movement
* speeds.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
SEAT_BACKREST_ANGLE_2_MOVE = 0x0B8A + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* Seat height position
*
* The maxInt32Value and minInt32Value in VehicleAreaConfig must be defined.
* All integers between minInt32Value and maxInt32Value must be supported.
*
* The minInt32Value indicates the seat is in its lowest position.
* The maxInt32Value indicates the seat is in its highest position.
*
* Values in between minInt32Value and maxInt32Value indicate a transition state between the
* lowest and highest positions.
*
* This property is not in any particular unit but in a specified range of relative positions.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
SEAT_HEIGHT_POS = 0x0B8B + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* Seat height move
*
* The maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers
* between minInt32Value and maxInt32Value must be supported.
*
* The maxInt32Value represents the maximum movement speed of the seat while moving upward.
* The minInt32Value represents the maximum movement speed of the seat while moving downward.
*
* Larger absolute values, either positive or negative, indicate a faster movement speed. Once
* the seat reaches the positional limit, the value must reset to 0. If SEAT_HEIGHT_MOVE's value
* is currently 0, then that means there is no movement currently occurring.
*
* This property is not in any particular unit but in a specified range of relative movement
* speeds.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
SEAT_HEIGHT_MOVE = 0x0B8C + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* Seat depth position
*
* Sets the seat depth, distance from back rest to front edge of seat.
*
* The maxInt32Value and minInt32Value in VehicleAreaConfig must be defined.
* All integers between minInt32Value and maxInt32Value must be supported.
*
* The minInt32Value indicates the seat is in its shallowest position (i.e. the position with
* the smallest distance between the front edge of the seat cushion and the rear end of the
* seat).
* The maxInt32Value indicates the seat is in its deepest position (i.e. the position with the
* largest distance between the front edge of the seat cushion and the rear end of the seat).
*
* Values in between minInt32Value and maxInt32Value indicate a transition state between the
* shallowest and deepest positions.
*
* This property is not in any particular unit but in a specified range of relative positions.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
SEAT_DEPTH_POS = 0x0B8D + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* Seat depth move
*
* The maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers
* between minInt32Value and maxInt32Value must be supported.
*
* The maxInt32Value represents the maximum movement speed of the seat while getting deeper
* The minInt32Value represents the maximum movement speed of the seat while getting shallower.
*
* Larger absolute values, either positive or negative, indicate a faster movement speed. Once
* the seat backrest reaches the positional limit, the value must reset to 0. If
* SEAT_DEPTH_MOVE's value is currently 0, then that means there is no movement currently
* occurring.
*
* This property is not in any particular unit but in a specified range of relative movement
* speeds.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
SEAT_DEPTH_MOVE = 0x0B8E + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* Seat tilt position
*
* The maxInt32Value and minInt32Value in VehicleAreaConfig must be defined.
* All integers between minInt32Value and maxInt32Value must be supported.
*
* The minInt32Value indicates the seat bottom is angled at its lowest angular position. This
* corresponds to the seat's front edge at its lowest possible position relative to the rear
* end of the seat.
* The maxInt32Value indicates the seat bottom is angled at its highest angular position. This
* corresponds to the seat's front edge at its highest possible position relative to the rear
* end of the seat.
*
* Values in between minInt32Value and maxInt32Value indicate a transition state between the
* lowest and highest positions.
*
* This property is not in any particular unit but in a specified range of relative positions.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
SEAT_TILT_POS = 0x0B8F + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* Seat tilt move
*
* The maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers
* between minInt32Value and maxInt32Value must be supported.
*
* The maxInt32Value represents the maximum movement speed of the front edge of the seat while
* moving upward.
* The minInt32Value represents the maximum movement speed of the front edge of the seat while
* moving downward.
*
* Larger absolute values, either positive or negative, indicate a faster movement speed. Once
* the seat bottom reaches the positional limit, the value must reset to 0. If SEAT_TILT_MOVE's
* value is currently 0, then that means there is no movement currently occurring.
*
* This property is not in any particular unit but in a specified range of relative movement
* speeds.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
SEAT_TILT_MOVE = 0x0B90 + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* Lumber fore/aft position
*
* The maxInt32Value and minInt32Value in VehicleAreaConfig must be defined.
* All integers between minInt32Value and maxInt32Value must be supported.
*
* The minInt32Value indicates the lumbar support is in its rearward most position (i.e. least
* supportive position).
* The maxInt32Value indicates the lumbar support is in its forward most position (i.e. most
* supportive position).
*
* Values in between minInt32Value and maxInt32Value indicate a transition state between the
* forward and rearward positions.
*
* This property is not in any particular unit but in a specified range of relative positions.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
SEAT_LUMBAR_FORE_AFT_POS = 0x0B91 + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* Lumbar fore/aft move
*
* The maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers
* between minInt32Value and maxInt32Value must be supported.
*
* The maxInt32Value represents the maximum movement speed of the seat's lumbar support while
* moving forward.
* The minInt32Value represents the maximum movement speed of the seat's lumbar support while
* moving backward.
*
* Larger absolute values, either positive or negative, indicate a faster movement speed. Once
* the seat's lumbar support reaches the positional limit, the value must reset to 0. If
* SEAT_LUMBAR_FORE_AFT_MOVE's value is currently 0, then that means there is no movement
* currently occurring.
*
* This property is not in any particular unit but in a specified range of relative movement
* speeds.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
SEAT_LUMBAR_FORE_AFT_MOVE = 0x0B92 + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* Lumbar side support position
*
* The maxInt32Value and minInt32Value in VehicleAreaConfig must be defined.
* All integers between minInt32Value and maxInt32Value must be supported.
*
* The minInt32Value indicates the lumbar side support is in its thinnest position (i.e.
* most support).
* The maxInt32Value indicates the lumbar side support is in its widest position (i.e.
* least support).
*
* Values in between minInt32Value and maxInt32Value indicate a transition state between the
* thinnest and widest positions.
*
* This property is not in any particular unit but in a specified range of relative positions.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
SEAT_LUMBAR_SIDE_SUPPORT_POS = 0x0B93 + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* Lumbar side support move
*
* The maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers
* between minInt32Value and maxInt32Value must be supported.
*
* The maxInt32Value represents the maximum movement speed of the seat's lumbar side support
* while getting wider.
* The minInt32Value represents the maximum movement speed of the seat's lumbar side support
* while getting thinner.
*
* Larger absolute values, either positive or negative, indicate a faster movement speed. Once
* the seat's lumbar side support reaches the positional limit, the value must reset to 0. If
* SEAT_LUMBAR_SIDE_SUPPORT_MOVE's value is currently 0, then that means there is no movement
* currently occurring.
*
* This property is not in any particular unit but in a specified range of relative movement
* speeds.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
SEAT_LUMBAR_SIDE_SUPPORT_MOVE = 0x0B94 + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* (Deprecated) Headrest height position
*
* This property is deprecated because it is defined as type VehicleArea:GLOBAL, which means all
* seats use the same value. Use SEAT_HEADREST_HEIGHT_POS_V2 instead which fixes this issue by
* being defined as type VehicleArea:SEAT.
*
* Sets the headrest height.
* Max value indicates tallest setting.
* Min value indicates shortest setting.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
SEAT_HEADREST_HEIGHT_POS = 0x0B95 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Headrest height position
*
* Sets the headrest height for supported seats. VehiclePropConfig.areaConfigs specifies which
* seats are supported.
*
* The maxInt32Value and minInt32Value in VehicleAreaConfig must be defined.
* All integers between minInt32Value and maxInt32Value must be supported.
*
* The minInt32Value indicates the headrest is in its lowest position.
* The maxInt32Value indicates the headrest is in its highest position.
*
* Values in between minInt32Value and maxInt32Value indicate a transition state between the
* lowest and highest positions.
*
* This property is not in any particular unit but in a specified range of relative positions.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
SEAT_HEADREST_HEIGHT_POS_V2 =
0x0BA4 + VehiclePropertyGroup.SYSTEM + VehicleArea.SEAT + VehiclePropertyType.INT32,
/**
* Headrest height move
*
* The maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers
* between minInt32Value and maxInt32Value must be supported.
*
* The maxInt32Value represents the maximum movement speed of the seat's headrest while moving
* up.
* The minInt32Value represents the maximum movement speed of the seat's headrest while moving
* down.
*
* Larger absolute values, either positive or negative, indicate a faster movement speed. Once
* the seat's headrest reaches the positional limit, the value must reset to 0. If
* SEAT_HEADREST_HEIGHT_MOVE's value is currently 0, then that means there is no movement
* currently occurring.
*
* This property is not in any particular unit but in a specified range of relative movement
* speeds.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
SEAT_HEADREST_HEIGHT_MOVE = 0x0B96 + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* Headrest angle position
*
* The maxInt32Value and minInt32Value in VehicleAreaConfig must be defined.
* All integers between minInt32Value and maxInt32Value must be supported.
*
* The minInt32Value indicates the headrest is in its full recline position.
* The maxInt32Value indicates the headrest is in its most upright/forward position.
*
* Values in between minInt32Value and maxInt32Value indicate a transition state between the
* full recline and most upright/forward positions.
*
* This property is not in any particular unit but in a specified range of relative positions.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
SEAT_HEADREST_ANGLE_POS = 0x0B97 + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* Headrest angle move
*
* The maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers
* between minInt32Value and maxInt32Value must be supported.
*
* The maxInt32Value represents the maximum movement speed of the seat's headrest while moving
* into an upright/forward position.
* The minInt32Value represents the maximum movement speed of the seat's headrest while moving
* into a shallow position.
*
* Larger absolute values, either positive or negative, indicate a faster movement speed. Once
* the seat's headrest reaches the positional limit, the value must reset to 0. If
* SEAT_HEADREST_ANGLE_MOVE's value is currently 0, then that means there is no movement
* currently occurring.
*
* This property is not in any particular unit but in a specified range of relative movement
* speeds.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
SEAT_HEADREST_ANGLE_MOVE = 0x0B98 + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* Headrest fore/aft position
*
* The maxInt32Value and minInt32Value in VehicleAreaConfig must be defined.
* All integers between minInt32Value and maxInt32Value must be supported.
*
* The minInt32Value indicates the headrest is in its rearward-most linear position.
* The maxInt32Value indicates the headrest is in its forward-most linear position.
*
* Values in between minInt32Value and maxInt32Value indicate a transition state between the
* forward and rearward positions.
*
* This property is not in any particular unit but in a specified range of relative positions.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
SEAT_HEADREST_FORE_AFT_POS = 0x0B99 + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* Headrest fore/aft move
*
* The maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers
* between minInt32Value and maxInt32Value must be supported.
*
* The maxInt32Value represents the maximum movement speed of the seat's headrest while moving
* forward.
* The minInt32Value represents the maximum movement speed of the seat's headrest while moving
* backward.
*
* Larger absolute values, either positive or negative, indicate a faster movement speed. Once
* the seat's headrest reaches the positional limit, the value must reset to 0. If
* SEAT_HEADREST_FORE_AFT_MOVE's value is currently 0, then that means there is no movement
* currently occurring.
*
* This property is not in any particular unit but in a specified range of relative movement
* speeds.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
SEAT_HEADREST_FORE_AFT_MOVE = 0x0B9A + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* Represents property for the seat footwell lights state.
*
* SEAT_FOOTWELL_LIGHTS_STATE reflects the current state of the lights at any point in time.
* This is different from the function of SEAT_FOOTWELL_LIGHTS_SWITCH which represents the
* position of the switch controlling the lights. Therefore, SEAT_FOOTWELL_LIGHTS_STATE may not
* match the value of SEAT_FOOTWELL_LIGHTS_SWITCH (e.g. SEAT_FOOTWELL_LIGHTS_SWITCH=AUTOMATIC
* and SEAT_FOOTWELL_LIGHTS_STATE=ON).
*
* This property should only be implemented if SEAT_FOOTWELL_LIGHTS_STATE's value may be
* different from that of CABIN_LIGHTS_STATE.
*
* For each supported area ID, the VehicleAreaConfig#supportedEnumValues must be defined unless
* all enum values of VehicleLightState are supported.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleLightState
*/
SEAT_FOOTWELL_LIGHTS_STATE =
0x0B9B + VehiclePropertyGroup.SYSTEM + VehicleArea.SEAT + VehiclePropertyType.INT32,
/**
* Represents property for the seat footwell lights switch.
*
* SEAT_FOOTWELL_LIGHTS_SWITCH represents the position of the switch controlling the lights.
* This is different from the function of SEAT_FOOTWELL_LIGHTS_STATE which reflects the current
* state of the lights at any point in time. Therefore, SEAT_FOOTWELL_LIGHTS_SWITCH may not
* match the value of SEAT_FOOTWELL_LIGHTS_STATE (e.g. SEAT_FOOTWELL_LIGHTS_SWITCH=AUTOMATIC and
* SEAT_FOOTWELL_LIGHTS_STATE=ON).
*
* This property should only be implemented if SEAT_FOOTWELL_LIGHTS_SWITCH's value may be
* different from that of CABIN_LIGHTS_SWITCH.
*
* For each supported area ID, the VehicleAreaConfig#supportedEnumValues must be defined unless
* all enum values of VehicleLightSwitch are supported.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleLightSwitch
*/
SEAT_FOOTWELL_LIGHTS_SWITCH =
0x0B9C + VehiclePropertyGroup.SYSTEM + VehicleArea.SEAT + VehiclePropertyType.INT32,
/**
* Represents property for Seat easy access feature.
*
* If true, the seat will automatically adjust to make it easier for the occupant to enter and
* exit the vehicle. Each area ID must map to the seat that the user is trying to enter/exit
* with the help of the easy access feature.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
SEAT_EASY_ACCESS_ENABLED =
0x0B9D + VehiclePropertyGroup.SYSTEM + VehicleArea.SEAT + VehiclePropertyType.BOOLEAN,
/**
* Represents feature to enable/disable a seat's ability to deploy airbag(s) when triggered
* (e.g. by a crash).
*
* If true, it means the seat's airbags are enabled, and if triggered (e.g. by a crash), they
* will deploy. If false, it means the seat's airbags are disabled, and they will not deploy
* under any circumstance. This property does not indicate if the airbags are deployed or not.
*
* This property can be set to VehiclePropertyAccess.READ read only for the sake of regulation
* or safety concerns.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
SEAT_AIRBAG_ENABLED =
0x0B9E + VehiclePropertyGroup.SYSTEM + VehicleArea.SEAT + VehiclePropertyType.BOOLEAN,
/**
* Seat airbags deployed
*
* Bit flag property to relay information on which airbags have been deployed in the vehicle at
* each seat, vs which ones are currently still armed. If SEAT_AIRBAG_ENABLED is set to false at
* a particular areaId, this property should return status code UNAVAILABLE at that areaId.
*
* Enums apply to each seat, not the global vehicle. For example, VehicleAirbagsLocation#CURTAIN
* at the driver seat areaId represents whether the driver side curtain airbag has been
* deployed. Multiple bit flags can be set to indicate that multiple different airbags have been
* deployed for the seat.
*
* For each seat area ID, the VehicleAreaConfig#supportedEnumValues array must be defined unless
* all states of VehicleAirbagLocation are supported (including OTHER, which is not
* recommended).
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleAirbagLocation
*/
SEAT_AIRBAGS_DEPLOYED =
0x0BA5 + VehiclePropertyGroup.SYSTEM + VehicleArea.SEAT + VehiclePropertyType.INT32,
/**
* Represents property for seat’s hipside (bottom cushion’s side) support position.
*
* The maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers
* between minInt32Value and maxInt32Value must be supported.
*
* The maxInt32Value indicates the seat cushion side support is in its widest position (i.e.
* least support).
* The minInt32Value indicates the seat cushion side support is in its thinnest position (i.e.
* most support).
*
* Values in between minInt32Value and maxInt32Value indicate a transition state between the
* thinnest and widest positions.
*
* This property is not in any particular unit but in a specified range of relative positions.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
SEAT_CUSHION_SIDE_SUPPORT_POS =
0x0B9F + VehiclePropertyGroup.SYSTEM + VehicleArea.SEAT + VehiclePropertyType.INT32,
/**
* Represents property for movement direction and speed of seat cushion side support.
*
* The maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers
* between minInt32Value and maxInt32Value must be supported.
*
* The maxInt32Value represents the maximum movement speed of the seat cushion side support when
* growing wider (i.e. support is decreasing).
* The minInt32Value represents the maximum movement speed of the seat cushion side support when
* growing thinner (i.e. support is increasing).
*
* Larger absolute values, either positive or negative, indicate a faster movement speed. Once
* the seat cushion side support reaches the positional limit, the value must reset to 0. If
* SEAT_CUSHION_SIDE_SUPPORT_MOVE's value is currently 0, then that means there is no movement
* currently occurring.
*
* This property is not in any particular unit but in a specified range of relative movement
* speeds.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
SEAT_CUSHION_SIDE_SUPPORT_MOVE =
0x0BA0 + VehiclePropertyGroup.SYSTEM + VehicleArea.SEAT + VehiclePropertyType.INT32,
/**
* Represents property for seat’s lumbar support vertical position.
*
* The maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers
* between minInt32Value and maxInt32Value must be supported.
*
* The maxInt32Value indicates the lumbar support's highest position.
* The minInt32Value indicates the lumbar support's lowest position.
*
* Values in between minInt32Value and maxInt32Value indicate a transition state between the
* lowest and highest positions.
*
* This property is not in any particular unit but in a specified range of relative positions.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
SEAT_LUMBAR_VERTICAL_POS =
0x0BA1 + VehiclePropertyGroup.SYSTEM + VehicleArea.SEAT + VehiclePropertyType.INT32,
/**
* Represents property for vertical movement direction and speed of seat lumbar support.
*
* The maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers
* between minInt32Value and maxInt32Value must be supported.
*
* The maxInt32Value indicates the lumbar support is moving at the fastest upward speed.
* The minInt32Value indicates the lumbar support is moving at the fastest downward speed.
*
* Larger absolute values, either positive or negative, indicate a faster movement speed. Once
* the seat cushion side support reaches the positional limit, the value must reset to 0. If
* SEAT_LUMBAR_VERTICAL_MOVE's value is currently 0, then that means there is no movement
* currently occurring.
*
* This property is not in any particular unit but in a specified range of relative movement
* speeds.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
SEAT_LUMBAR_VERTICAL_MOVE =
0x0BA2 + VehiclePropertyGroup.SYSTEM + VehicleArea.SEAT + VehiclePropertyType.INT32,
/**
* Represents property that indicates the current walk-in position of the seat.
*
* The maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined.
* All integers between minInt32Value and maxInt32Value must be supported.
*
* The minInt32Value indicates the normal seat position. The minInt32Value must be 0.
* The maxInt32Value indicates the seat is in the full walk-in position.
*
* Values in between minInt32Value and maxInt32Value indicate a transition state between the
* normal and walk-in positions.
*
* This property is not in any particular unit but in a specified range of relative positions.
*
* The area ID must match the seat that actually moves when the walk-in feature activates, not
* the intended seat the passengers will sit in.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
SEAT_WALK_IN_POS =
0x0BA3 + VehiclePropertyGroup.SYSTEM + VehicleArea.SEAT + VehiclePropertyType.INT32,
/**
* Seat belt pretensioner deployed.
*
* Property to relay information on whether the seat belt pretensioner has been deployed for a
* particular seat due to a collision. This is different from the regular seat belt tightening
* system that continuously adds tension to the seat belts so that they fit snugly around the
* person sitting in the seat, nor is it the seat belt retractor system that locks the seat belt
* in place during sudden brakes or when the user jerks the seat belt.
*
* If this property is dependant on the state of other properties, and those properties are
* currently in the state that doesn't support this property, this should return
* StatusCode#NOT_AVAILABLE
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
*/
SEAT_BELT_PRETENSIONER_DEPLOYED =
0x0BA6 + VehiclePropertyGroup.SYSTEM + VehicleArea.SEAT + VehiclePropertyType.BOOLEAN,
/**
* Seat Occupancy
*
* Indicates whether a particular seat is occupied or not, to the best of the car's ability
* to determine. Valid values are from the VehicleSeatOccupancyState enum.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleSeatOccupancyState
*/
SEAT_OCCUPANCY = 0x0BB0 + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* Window Position
*
* The maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined.
* All integers between minInt32Value and maxInt32Value must be supported.
*
* The minInt32Value indicates the window is closed/fully open out of plane. If the window
* cannot open out of plane, then minInt32Value is the position of the window when fully closed
* and must be 0. If the window can open out of plane, the minInt32Value indicates the window
* is fully open in its position out of plane and will be a negative value. See the example
* below for a more detailed explanation.
* The maxInt32Value indicates the window is fully open.
*
* Values in between minInt32Value and maxInt32Value indicate a transition state between the
* closed/fully open out-of-plane and fully open positions.
*
* This property is not in any particular unit but in a specified range of relative positions.
*
* For example, this is how the property should work for a window that can move out of plane:
* For a window that may open out of plane (i.e. vent mode of sunroof) this
* parameter will work with negative values as follows:
* Max = sunroof completely open
* 0 = sunroof closed.
* Min = sunroof vent completely open
*
* Note that in this mode, 0 indicates the window is closed.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
WINDOW_POS = 0x0BC0 + 0x10000000 + 0x03000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:WINDOW,VehiclePropertyType:INT32
/**
* Window Move
*
* The maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers
* between minInt32Value and maxInt32Value must be supported.
*
* The maxInt32Value indicates the window is opening in plane/closing in the out of plane
* direction at the fastest speed.
* The minInt32Value indicates the window is closing in plane/opening in the out of plane
* direction at the fastest speed.
*
* Larger absolute values, either positive or negative, indicate a faster movement speed. Once
* the window reaches the positional limit, the value must reset to 0. If WINDOW_MOVE's value is
* currently 0, then that means there is no movement currently occurring.
*
* This property is not in any particular unit but in a specified range of relative movement
* speeds.
*
* For a window that may open out of plane (i.e. vent mode of sunroof) this
* parameter will work as follows:
*
* If sunroof is open:
* Max = open the sunroof further, automatically stop when fully open.
* Min = close the sunroof, automatically stop when sunroof is closed.
*
* If vent is open:
* Max = close the vent, automatically stop when vent is closed.
* Min = open the vent further, automatically stop when vent is fully open.
*
* If sunroof is in the closed position:
* Max = open the sunroof, automatically stop when sunroof is fully open.
* Min = open the vent, automatically stop when vent is fully open.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
WINDOW_MOVE = 0x0BC1 + 0x10000000 + 0x03000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:WINDOW,VehiclePropertyType:INT32
/**
* Window Lock
*
* True indicates windows are locked and can't be moved.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
WINDOW_LOCK = 0x0BC4 + 0x10000000 + 0x03000000
+ 0x00200000, // VehiclePropertyGroup:SYSTEM,VehicleArea:WINDOW,VehiclePropertyType:BOOLEAN
/**
* Windshield wipers period (milliseconds).
*
* Returns the instantaneous time period for 1 full cycle of the windshield wipers in
* milliseconds. A full cycle is defined as a wiper moving from and returning to its rest
* position.
*
* When an intermittent wiper setting is selected, this property value must be set to 0 during
* the "pause" period of the intermittent wiping.
*
* The maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. The maxInt32Value
* for each area ID must specify the longest wiper period. The minInt32Value must be set to 0
* for each area ID.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @unit VehicleUnit:MILLI_SECS
*/
WINDSHIELD_WIPERS_PERIOD =
0x0BC5 + VehiclePropertyGroup.SYSTEM + VehicleArea.WINDOW + VehiclePropertyType.INT32,
/**
* Windshield wipers state.
*
* Returns the current state of the windshield wipers. The value of WINDSHIELD_WIPERS_STATE may
* not match the value of WINDSHIELD_WIPERS_SWITCH. (e.g. WINDSHIELD_WIPERS_STATE = ON and
* WINDSHIELD_WIPERS_SWITCH = WindshieldWipersSwitch#AUTO).
*
* If WINDSHIELD_WIPERS_STATE = ON and WINDSHIELD_WIPERS_PERIOD is implemented, then
* WINDSHIELD_WIPERS_PERIOD must reflect the time period of 1 full cycle of the wipers.
*
* For each supported area ID, the VehicleAreaConfig#supportedEnumValues array must be defined
* unless all states in WindshieldWipersState are supported (including OTHER, which is not
* recommended).
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum WindshieldWipersState
*/
WINDSHIELD_WIPERS_STATE =
0x0BC6 + VehiclePropertyGroup.SYSTEM + VehicleArea.WINDOW + VehiclePropertyType.INT32,
/**
* Windshield wipers switch.
*
* Represents the position of the switch controlling the windshield wipers. The value of
* WINDSHIELD_WIPERS_SWITCH may not match the value of WINDSHIELD_WIPERS_STATE (e.g.
* WINDSHIELD_WIPERS_SWITCH = AUTO and WINDSHIELD_WIPERS_STATE = WindshieldWipersState#ON).
*
* For each supported area ID, the VehicleAreaConfig#supportedEnumValues array must be defined
* unless all states in WindshieldWipersSwitch are supported (including OTHER, which is not
* recommended).
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* If this property is implemented as VehiclePropertyAccess.READ_WRITE and the OTHER state is
* listed in the VehicleAreaConfig#supportedEnumValues array, then OTHER is not a supported
* value for writing. It is only a supported value for reading.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
* @data_enum WindshieldWipersSwitch
*/
WINDSHIELD_WIPERS_SWITCH =
0x0BC7 + VehiclePropertyGroup.SYSTEM + VehicleArea.WINDOW + VehiclePropertyType.INT32,
/**
* Steering wheel depth position
*
* All steering wheel properties' unique ids start from 0x0BE0.
*
* The maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. All values between
* minInt32Value and maxInt32Value must be supported.
*
* The maxInt32Value indicates the steering wheel position furthest from the driver.
* The minInt32Value indicates the steering wheel position closest to the driver.
*
* Values in between minInt32Value and maxInt32Value indicate a transition state between the
* closest and furthest positions.
*
* This property is not in any particular unit but in a specified range of relative positions.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
STEERING_WHEEL_DEPTH_POS =
0x0BE0 + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.INT32,
/**
* Steering wheel depth movement
*
* The maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. All values between
* minInt32Value and maxInt32Value must be supported.
*
* The maxInt32Value indicates the steering wheel moving away from the driver.
* The minInt32Value indicates the steering wheel moving towards the driver.
*
* Larger integers, either positive or negative, indicate a faster movement speed. Once the
* steering wheel reaches the positional limit, the value must reset to 0. If
* STEERING_WHEEL_DEPTH_MOVE's value is currently 0, then that means there is no movement
* currently occurring.
*
* This property is not in any particular unit but in a specified range of relative movement
* speeds.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
STEERING_WHEEL_DEPTH_MOVE =
0x0BE1 + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.INT32,
/**
* Steering wheel height position
*
* The maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. All values between
* minInt32Value and maxInt32Value must be supported.
*
* The maxInt32Value indicates the steering wheel being in the highest position.
* The minInt32Value indicates the steering wheel being in the lowest position.
*
* Values in between minInt32Value and maxInt32Value indicate a transition state between the
* lowest and highest positions.
*
* This property is not in any particular unit but in a specified range of relative positions.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
STEERING_WHEEL_HEIGHT_POS =
0x0BE2 + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.INT32,
/**
* Steering wheel height movement
*
* The maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. All values between
* minInt32Value and maxInt32Value must be supported.
*
* The maxInt32Value indicates the steering wheel moving upwards.
* The minInt32Value indicates the steering wheel moving downwards.
*
* Larger integers, either positive or negative, indicate a faster movement speed. Once the
* steering wheel reaches the positional limit, the value must reset to 0. If
* STEERING_WHEEL_HEIGHT_MOVE's value is currently 0, then that means there is no movement
* currently occurring.
*
* This property is not in any particular unit but in a specified range of relative movement
* speeds.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
STEERING_WHEEL_HEIGHT_MOVE =
0x0BE3 + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.INT32,
/**
* Steering wheel theft lock feature enabled
*
* If true, the steering wheel will lock automatically to prevent theft in certain
* situations.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
STEERING_WHEEL_THEFT_LOCK_ENABLED =
0x0BE4 + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.BOOLEAN,
/**
* Steering wheel locked
*
* If true, the steering wheel's position is locked and not changeable.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
STEERING_WHEEL_LOCKED =
0x0BE5 + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.BOOLEAN,
/**
* Steering wheel easy access feature enabled
*
* If true, the driver’s steering wheel will automatically adjust to make it easier for the
* driver to enter and exit the vehicle.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
STEERING_WHEEL_EASY_ACCESS_ENABLED =
0x0BE6 + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.BOOLEAN,
/**
* Property that represents the current position of the glove box door.
*
* The maxInt32Value and minInt32Value in VehicleAreaConfig must be defined.
* All integers between minInt32Value and maxInt32Value must be supported.
*
* The minInt32Value indicates that the glove box door is closed. The minInt32Value must be 0.
* The maxInt32Value indicates that the glove box door is in the fully open position.
*
* Values in between minInt32Value and maxInt32Value indicate a transition state between the
* closed and fully open positions.
*
* This property is not in any particular unit but in a specified range of relative positions.
*
* The area ID must match the seat by which the glove box is intended to be used (e.g. if the
* front right dashboard has a glove box embedded in it, then the area ID should be
* SEAT_1_RIGHT).
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
GLOVE_BOX_DOOR_POS =
0x0BF0 + VehiclePropertyGroup.SYSTEM + VehicleArea.SEAT + VehiclePropertyType.INT32,
/**
* Lock or unlock the glove box.
*
* If true, the glove box is locked. If false, the glove box is unlocked.
*
* The area ID must match the seat by which the glove box is intended to be used (e.g. if the
* front right dashboard has a glove box embedded in it, then the area ID should be
* VehicleAreaSeat#ROW_1_RIGHT).
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
GLOVE_BOX_LOCKED =
0x0BF1 + VehiclePropertyGroup.SYSTEM + VehicleArea.SEAT + VehiclePropertyType.BOOLEAN,
/**
* Vehicle Maps Service (VMS) message
*
* This property uses MIXED data to communicate vms messages.
*
* Its contents are to be interpreted as follows:
* the indices defined in VmsMessageIntegerValuesIndex are to be used to
* read from int32Values;
* bytes is a serialized VMS message as defined in the vms protocol
* which is opaque to the framework;
*
* IVehicle#get must always return StatusCode::NOT_AVAILABLE.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
*/
VEHICLE_MAP_SERVICE = 0x0C00 + 0x10000000 + 0x01000000
+ 0x00e00000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:MIXED
/**
* Characterization of inputs used for computing location.
*
* This property must indicate what (if any) data and sensor inputs are considered by the system
* when computing the vehicle's location that is shared with Android through the GNSS HAL.
*
* The value must return a collection of bit flags. The bit flags are defined in
* LocationCharacterization. The value must also include exactly one of DEAD_RECKONED or
* RAW_GNSS_ONLY among its collection of bit flags.
*
* When this property is not supported, it is assumed that no additional sensor inputs are fused
* into the GNSS updates provided through the GNSS HAL. That is unless otherwise specified
* through the GNSS HAL interfaces.
*
* @change_mode VehiclePropertyChangeMode.STATIC
* @access VehiclePropertyAccess.READ
*/
LOCATION_CHARACTERIZATION =
0x0C10 + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.INT32,
/**
* OBD2 Live Sensor Data
*
* Reports a snapshot of the current (live) values of the OBD2 sensors available.
*
* The configArray is set as follows:
* configArray[0] = number of vendor-specific integer-valued sensors
* configArray[1] = number of vendor-specific float-valued sensors
*
* The values of this property are to be interpreted as in the following example.
* Considering a configArray = {2,3}
* int32Values must be a vector containing Obd2IntegerSensorIndex.LAST_SYSTEM_INDEX + 2
* elements (that is, 33 elements);
* floatValues must be a vector containing Obd2FloatSensorIndex.LAST_SYSTEM_INDEX + 3
* elements (that is, 73 elements);
*
* It is possible for each frame to contain a different subset of sensor values, both system
* provided sensors, and vendor-specific ones. In order to support that, the bytes element
* of the property value is used as a bitmask,.
*
* bytes must have a sufficient number of bytes to represent the total number of possible
* sensors (in this case, 14 bytes to represent 106 possible values); it is to be read as
* a contiguous bitmask such that each bit indicates the presence or absence of a sensor
* from the frame, starting with as many bits as the size of int32Values, immediately
* followed by as many bits as the size of floatValues.
*
* For example, should bytes[0] = 0x4C (0b01001100) it would mean that:
* int32Values[0 and 1] are not valid sensor values
* int32Values[2 and 3] are valid sensor values
* int32Values[4 and 5] are not valid sensor values
* int32Values[6] is a valid sensor value
* int32Values[7] is not a valid sensor value
* Should bytes[5] = 0x61 (0b01100001) it would mean that:
* int32Values[32] is a valid sensor value
* floatValues[0 thru 3] are not valid sensor values
* floatValues[4 and 5] are valid sensor values
* floatValues[6] is not a valid sensor value
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
*/
OBD2_LIVE_FRAME = 0x0D00 + 0x10000000 + 0x01000000
+ 0x00e00000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:MIXED
/**
* OBD2 Freeze Frame Sensor Data
*
* Reports a snapshot of the value of the OBD2 sensors available at the time that a fault
* occurred and was detected.
*
* A configArray must be provided with the same meaning as defined for OBD2_LIVE_FRAME.
*
* The values of this property are to be interpreted in a similar fashion as those for
* OBD2_LIVE_FRAME, with the exception that the stringValue field may contain a non-empty
* diagnostic troubleshooting code (DTC).
*
* A IVehicle#get request of this property must provide a value for int64Values[0].
* This will be interpreted as the timestamp of the freeze frame to retrieve. A list of
* timestamps can be obtained by a IVehicle#get of OBD2_FREEZE_FRAME_INFO.
*
* Should no freeze frame be available at the given timestamp, a response of NOT_AVAILABLE
* must be returned by the implementation. Because vehicles may have limited storage for
* freeze frames, it is possible for a frame request to respond with NOT_AVAILABLE even if
* the associated timestamp has been recently obtained via OBD2_FREEZE_FRAME_INFO.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
*/
OBD2_FREEZE_FRAME = 0x0D01 + 0x10000000 + 0x01000000
+ 0x00e00000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:MIXED
/**
* OBD2 Freeze Frame Information
*
* This property describes the current freeze frames stored in vehicle
* memory and available for retrieval via OBD2_FREEZE_FRAME.
*
* The values are to be interpreted as follows:
* each element of int64Values must be the timestamp at which a a fault code
* has been detected and the corresponding freeze frame stored, and each
* such element can be used as the key to OBD2_FREEZE_FRAME to retrieve
* the corresponding freeze frame.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
*/
OBD2_FREEZE_FRAME_INFO = 0x0D02 + 0x10000000 + 0x01000000
+ 0x00e00000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:MIXED
/**
* OBD2 Freeze Frame Clear
*
* This property allows deletion of any of the freeze frames stored in
* vehicle memory, as described by OBD2_FREEZE_FRAME_INFO.
*
* The configArray is set as follows:
* configArray[0] = 1 if the implementation is able to clear individual freeze frames
* by timestamp, 0 otherwise
*
* IVehicle#set of this property is to be interpreted as follows:
* if int64Values contains no elements, then all frames stored must be cleared;
* if int64Values contains one or more elements, then frames at the timestamps
* stored in int64Values must be cleared, and the others not cleared. Should the
* vehicle not support selective clearing of freeze frames, this latter mode must
* return NOT_AVAILABLE.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.WRITE
*/
OBD2_FREEZE_FRAME_CLEAR = 0x0D03 + 0x10000000 + 0x01000000
+ 0x00e00000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:MIXED
/**
* Headlights State
*
* Return the current state of headlights.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleLightState
*/
HEADLIGHTS_STATE = 0x0E00 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* High beam lights state
*
* Return the current state of high beam lights.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleLightState
*/
HIGH_BEAM_LIGHTS_STATE = 0x0E01 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Fog light state
*
* Return the current state of fog lights.
*
* If the car has both front and rear fog lights:
* If front and rear fog lights can only be controlled together: FOG_LIGHTS_STATE must be
* implemented. FRONT_FOG_LIGHTS_STATE and REAR_FOG_LIGHTS_STATE must not be implemented.
*
* If the front and rear fog lights can only be controlled independently: FOG_LIGHTS_STATE
* must not be implemented. FRONT_FOG_LIGHTS_STATE and REAR_FOG_LIGHTS_STATE must be
* implemented.
*
* If the car has only front fog lights:
* Only one of FOG_LIGHTS_STATE or FRONT_FOG_LIGHTS_STATE must be implemented and not both.
* REAR_FOG_LIGHTS_STATE must not be implemented.
*
* If the car has only rear fog lights:
* Only one of FOG_LIGHTS_STATE or REAR_FOG_LIGHTS_STATE must be implemented and not both.
* FRONT_FOG_LIGHTS_STATE must not be implemented.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleLightState
*/
FOG_LIGHTS_STATE = 0x0E02 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Hazard light status
*
* Return the current status of hazard lights.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleLightState
*/
HAZARD_LIGHTS_STATE = 0x0E03 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Headlight switch
*
* The setting that the user wants.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleLightSwitch
*/
HEADLIGHTS_SWITCH = 0x0E10 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* High beam light switch
*
* The setting that the user wants.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleLightSwitch
*/
HIGH_BEAM_LIGHTS_SWITCH = 0x0E11 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Fog light switch
*
* The setting that the user wants.
*
* If the car has both front and rear fog lights:
* If front and rear fog lights can only be controlled together: FOG_LIGHTS_SWITCH must be
* implemented. FRONT_FOG_LIGHTS_SWITCH and REAR_FOG_LIGHTS_SWITCH must not be implemented.
*
* If the front and rear fog lights can only be controlled independently: FOG_LIGHTS_SWITCH
* must not be implemented. FRONT_FOG_LIGHTS_SWITCH and REAR_FOG_LIGHTS_SWITCH must be
* implemented.
*
* If the car has only front fog lights:
* Only one of FOG_LIGHTS_SWITCH or FRONT_FOG_LIGHTS_SWITCH must be implemented and not both.
* REAR_FOG_LIGHTS_SWITCH must not be implemented.
*
* If the car has only rear fog lights:
* Only one of FOG_LIGHTS_SWITCH or REAR_FOG_LIGHTS_SWITCH must be implemented and not both.
* FRONT_FOG_LIGHTS_SWITCH must not be implemented.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleLightSwitch
*/
FOG_LIGHTS_SWITCH = 0x0E12 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Hazard light switch
*
* The setting that the user wants.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleLightSwitch
*/
HAZARD_LIGHTS_SWITCH = 0x0E13 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Cabin lights
*
* Return current status of cabin lights.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleLightState
*/
CABIN_LIGHTS_STATE = 0x0F01 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Cabin lights switch
*
* The position of the physical switch which controls the cabin lights.
* This might be different than the CABIN_LIGHTS_STATE if the lights are on because a door
* is open or because of a voice command.
* For example, while the switch is in the "off" or "automatic" position.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleLightSwitch
*/
CABIN_LIGHTS_SWITCH = 0x0F02 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Reading lights
*
* Return current status of reading lights.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleLightState
*/
READING_LIGHTS_STATE = 0x0F03 + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* Reading lights switch
*
* The position of the physical switch which controls the reading lights.
* This might be different than the READING_LIGHTS_STATE if the lights are on because a door
* is open or because of a voice command.
* For example, while the switch is in the "off" or "automatic" position.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleLightSwitch
*/
READING_LIGHTS_SWITCH = 0x0F04 + 0x10000000 + 0x05000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:SEAT,VehiclePropertyType:INT32
/**
* Steering wheel lights state
*
* Represents the current state of the steering wheel lights. This is different from
* STEERING_WHEEL_LIGHTS_SWITCH which represents the position of the switch controlling
* the lights. Therefore, STEERING_WHEEL_LIGHTS_STATE may not match the value of
* STEERING_WHEEL_LIGHTS_SWITCH (e.g. STEERING_WHEEL_LIGHTS_SWITCH=AUTOMATIC and
* STEERING_WHEEL_LIGHTS_STATE=ON).
*
* This property should only be implemented if STEERING_WHEEL_LIGHTS_STATE's value may be
* different from that of CABIN_LIGHTS_STATE.
*
* For the global area ID (0), the VehicleAreaConfig#supportedEnumValues must be defined unless
* all enum values of VehicleLightState are supported.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleLightState
*/
STEERING_WHEEL_LIGHTS_STATE =
0x0F0C + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.INT32,
/**
* Steering wheel lights switch
*
* Represents the position of the switch controlling the steering wheel lights. This is
* different from STEERING_WHEEL_LIGHTS_STATE which represents the current state of the steering
* wheel lights. Therefore, STEERING_WHEEL_LIGHTS_SWITCH may not match the value of
* STEERING_WHEEL_LIGHTS_STATE (e.g. STEERING_WHEEL_LIGHTS_SWITCH=AUTOMATIC and
* STEERING_WHEEL_LIGHTS_STATE=ON).
*
* This property should only be implemented if STEERING_WHEEL_LIGHTS_SWITCH's value may be
* different from that of CABIN_LIGHTS_SWITCH.
*
* For the global area ID (0), the VehicleAreaConfig#supportedEnumValues must be defined unless
* all enum values of VehicleLightSwitch are supported.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleLightSwitch
*/
STEERING_WHEEL_LIGHTS_SWITCH =
0x0F0D + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.INT32,
/**
* Support customize permissions for vendor properties
*
* Implement this property if vehicle hal support customize vendor permissions feature.
* VehiclePropConfig.configArray is used to indicate vendor properties and permissions
* which selected for this vendor property. The permission must be one of enum in
* VehicleVendorPermission.
* The configArray is set as follows:
* configArray[n] = propId : property ID for the vendor property
* configArray[n+1] = one of enums in VehicleVendorPermission. It indicates the permission
* for reading value of the property.
* configArray[n+2] = one of enums in VehicleVendorPermission. It indicates the permission
* for writing value of the property.
*
* For example:
* configArray = {
* vendor_prop_1, PERMISSION_VENDOR_SEAT_READ, PERMISSION_VENDOR_SEAT_WRITE,
* vendor_prop_2, PERMISSION_VENDOR_INFO, PERMISSION_NOT_ACCESSIBLE,
* }
* If vendor properties are not in this array, they will have the default vendor permission.
* If vendor chose PERMISSION_NOT_ACCESSIBLE, android will not have access to the property. In
* the example, Android can not write value for vendor_prop_2.
*
* @change_mode VehiclePropertyChangeMode.STATIC
* @access VehiclePropertyAccess.READ
*/
SUPPORT_CUSTOMIZE_VENDOR_PERMISSION = 0x0F05 + 0x10000000 + 0x01000000
+ 0x00200000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:BOOLEAN
/**
* Allow disabling optional featurs from vhal.
*
* This property reports optional features that should be disabled.
* All allowed optional features for the system is declared in Car service overlay,
* config_allowed_optional_car_features.
* This property allows disabling features defined in the overlay. Without this property,
* all the features declared in the overlay will be enabled.
*
* Value read should include all features disabled with ',' separation.
* ex) "com.android.car.user.CarUserNoticeService,storage_monitoring"
* @change_mode VehiclePropertyChangeMode.STATIC
* @access VehiclePropertyAccess.READ
*/
DISABLED_OPTIONAL_FEATURES = 0x0F06 + 0x10000000 + 0x01000000
+ 0x00100000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:STRING
/**
* Defines the initial Android user to be used during initialization.
*
* This property is called by the Android system when it initializes and it lets the HAL
* define which Android user should be started.
*
* This request is made by setting a VehiclePropValue (defined by InitialUserInfoRequest),
* and the HAL must respond with a property change event (defined by InitialUserInfoResponse).
* If the HAL doesn't respond after some time (defined by the Android system), the Android
* system will proceed as if HAL returned a response of action
* InitialUserInfoResponseAction:DEFAULT.
*
* For example, on first boot, the request could be:
*
* int32[0]: 42 // request id (arbitrary number set by Android system)
* int32[1]: 1 // InitialUserInfoRequestType::FIRST_BOOT
* int32[2]: 0 // id of current user (usersInfo.currentUser.userId)
* int32[3]: 1 // flag of current user (usersInfo.currentUser.flags = SYSTEM)
* int32[4]: 1 // number of existing users (usersInfo.numberUsers);
* int32[5]: 0 // user #0 (usersInfo.existingUsers[0].userId)
* int32[6]: 1 // flags of user #0 (usersInfo.existingUsers[0].flags)
*
* And if the HAL want to respond with the creation of an admin user called "Owner", the
* response would be:
*
* int32[0]: 42 // must match the request id from the request
* int32[1]: 2 // action = InitialUserInfoResponseAction::CREATE
* int32[2]: -10000 // userToSwitchOrCreate.userId (not used as user will be created)
* int32[3]: 8 // userToSwitchOrCreate.flags = ADMIN
* string: "||Owner" // userLocales + separator + userNameToCreate
*
* Notice the string value represents multiple values, separated by ||. The first value is the
* (optional) system locales for the user to be created (in this case, it's empty, meaning it
* will use Android's default value), while the second value is the (also optional) name of the
* to user to be created (when the type of response is InitialUserInfoResponseAction:CREATE).
* For example, to create the same "Owner" user with "en-US" and "pt-BR" locales, the string
* value of the response would be "en-US,pt-BR||Owner". As such, neither the locale nor the
* name can have || on it, although a single | is fine.
*
* NOTE: if the HAL doesn't support user management, then it should not define this property,
* which in turn would disable the other user-related properties (for example, the Android
* system would never issue them and user-related requests from the HAL layer would be ignored
* by the Android System). But if it supports user management, then it must support all core
* user-related properties (INITIAL_USER_INFO, SWITCH_USER, CREATE_USER, and REMOVE_USER).
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
*/
INITIAL_USER_INFO = 0x0F07 + 0x10000000 + 0x01000000
+ 0x00e00000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:MIXED
/**
* Defines a request to switch the foreground Android user.
*
* This property is used primarily by the Android System to inform the HAL that the
* current foreground Android user is switching, but it could also be used by the HAL to request
* the Android system to switch users - the
*
* When the request is made by Android, it sets a VehiclePropValue and the HAL must responde
* with a property change event; when the HAL is making the request, it must also do it through
* a property change event (the main difference is that the request id will be positive in the
* former case, and negative in the latter; the SwitchUserMessageType will also be different).
*
* The format of both request is defined by SwitchUserRequest and the format of the response
* (when needed) is defined by SwitchUserResponse. How the HAL (or Android System) should
* proceed depends on the message type (which is defined by the SwitchUserMessageType
* parameter), as defined below.
*
* 1.LEGACY_ANDROID_SWITCH
* -----------------------
*
* Called by the Android System to indicate the Android user is about to change, when the change
* request was made in a way that is not integrated with the HAL (for example, through
* adb shell am switch-user).
*
* The HAL can switch its internal user once it receives this request, but it doesn't need to
* reply back to the Android System. If its internal user cannot be changed for some reason,
* then it must wait for the SWITCH_USER(type=ANDROID_POST_SWITCH) call to recover
* (for example, it could issue a SWITCH_USER(type=VEHICLE_REQUEST) to switch back to
* the previous user), but ideally it should never fail (as switching back could result in a
* confusing experience for the end user).
*
* For example, if the system have users (0, 10, 11) and it's switching from 0 to 11 (where none
* of them have any special flag), the request would be:
*
* int32[0]: 42 // request id
* int32[1]: 1 // SwitchUserMessageType::LEGACY_ANDROID_SWITCH
* int32[2]: 11 // target user id
* int32[3]: 0 // target user flags (none)
* int32[4]: 10 // current user
* int32[5]: 0 // current user flags (none)
* int32[6]: 3 // number of users
* int32[7]: 0 // user #0 (Android user id 0)
* int32[8]: 0 // flags of user #0 (none)
* int32[9]: 10 // user #1 (Android user id 10)
* int32[10]: 0 // flags of user #1 (none)
* int32[11]: 11 // user #2 (Android user id 11)
* int32[12]: 0 // flags of user #2 (none)
*
* 2.ANDROID_SWITCH
* ----------------
* Called by the Android System to indicate the Android user is about to change, but Android
* will wait for the HAL's response (up to some time) before proceeding.
*
* The HAL must switch its internal user once it receives this request, then respond back to
* Android with a SWITCH_USER(type=VEHICLE_RESPONSE) indicating whether its internal
* user was switched or not (through the SwitchUserStatus enum).
*
* For example, if Android has users (0, 10, 11) and it's switching from 10 to 11 (where
* none of them have any special flag), the request would be:
*
* int32[0]: 42 // request id
* int32[1]: 2 // SwitchUserMessageType::ANDROID_SWITCH
* int32[2]: 11 // target user id
* int32[3]: 0 // target user flags (none)
* int32[4]: 10 // current user
* int32[5]: 0 // current user flags (none)
* int32[6]: 3 // number of users
* int32[7]: 0 // 1st user (user 0)
* int32[8]: 1 // 1st user flags (SYSTEM)
* int32[9]: 10 // 2nd user (user 10)
* int32[10]: 0 // 2nd user flags (none)
* int32[11]: 11 // 3rd user (user 11)
* int32[12]: 0 // 3rd user flags (none)
*
* If the request succeeded, the HAL must update the property with:
*
* int32[0]: 42 // request id
* int32[1]: 3 // messageType = SwitchUserMessageType::VEHICLE_RESPONSE
* int32[2]: 1 // status = SwitchUserStatus::SUCCESS
*
* But if it failed, the response would be something like:
*
* int32[0]: 42 // request id
* int32[1]: 3 // messageType = SwitchUserMessageType::VEHICLE_RESPONSE
* int32[2]: 2 // status = SwitchUserStatus::FAILURE
* string: "108-D'OH!" // OEM-specific error message
*
* 3.VEHICLE_RESPONSE
* ------------------
* Called by the HAL to indicate whether a request of type ANDROID_SWITCH should proceed or
* abort - see the ANDROID_SWITCH section above for more info.
*
* 4.VEHICLE_REQUEST
* ------------------
* Called by the HAL to request that the current foreground Android user is switched.
*
* This is useful in situations where Android started as one user, but the vehicle identified
* the driver as another user. For example, user A unlocked the car using the key fob of user B;
* the INITIAL_USER_INFO request returned user B, but then a face recognition subsubsystem
* identified the user as A.
*
* The HAL makes this request by a property change event (passing a negative request id), and
* the Android system will response by issue an ANDROID_POST_SWITCH call which the same
* request id.
*
* For example, if the current foreground Android user is 10 and the HAL asked it to switch to
* 11, the request would be:
*
* int32[0]: -108 // request id
* int32[1]: 4 // messageType = SwitchUserMessageType::VEHICLE_REQUEST
* int32[2]: 11 // Android user id
*
* If the request succeeded and Android has 3 users (0, 10, 11), the response would be:
*
* int32[0]: -108 // request id
* int32[1]: 5 // messageType = SwitchUserMessageType::ANDROID_POST_SWITCH
* int32[2]: 11 // target user id
* int32[3]: 0 // target user id flags (none)
* int32[4]: 11 // current user
* int32[5]: 0 // current user flags (none)
* int32[6]: 3 // number of users
* int32[7]: 0 // 1st user (user 0)
* int32[8]: 0 // 1st user flags (none)
* int32[9]: 10 // 2nd user (user 10)
* int32[10]: 4 // 2nd user flags (none)
* int32[11]: 11 // 3rd user (user 11)
* int32[12]: 3 // 3rd user flags (none)
*
* Notice that both the current and target user ids are the same - if the request failed, then
* they would be different (i.e, target user would be 11, but current user would still be 10).
*
* 5.ANDROID_POST_SWITCH
* ---------------------
* Called by the Android System after a request to switch a user was made.
*
* This property is called after switch requests of any type (i.e., LEGACY_ANDROID_SWITCH,
* ANDROID_SWITCH, or VEHICLE_REQUEST) and can be used to determine if the request succeeded or
* failed:
*
* 1. When it succeeded, it's called when the Android user is in the unlocked state and the
* value of the current and target users ids in the response are the same. This would be
* equivalent to receiving an Intent.ACTION_USER_UNLOCKED in an Android app.
* 2. When it failed it's called right away and the value of the current and target users ids
* in the response are different (as the current user didn't change to the target).
* 3. If a new switch request is made before the HAL responded to the previous one or before
* the user was unlocked, then the ANDROID_POST_SWITCH request is not made. For example,
* the driver could accidentally switch to the wrong user which has lock credentials, then
* switch to the right one before entering the credentials.
*
* The HAL can update its internal state once it receives this request, but it doesn't need to
* reply back to the Android System.
*
* Request: the first N values as defined by INITIAL_USER_INFO (where the request-specific
* value at index 1 is SwitchUserMessageType::ANDROID_POST_SWITCH), then 2 more values for the
* target user id (i.e., the Android user id that was requested to be switched to) and its flags
* (as defined by UserFlags).
*
* Response: none.
*
* Example: see VEHICLE_REQUEST section above.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
*/
SWITCH_USER = 0x0F08 + 0x10000000 + 0x01000000
+ 0x00e00000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:MIXED
/**
* Called by the Android System after an Android user was created.
*
* The HAL can use this property to create its equivalent user.
*
* This is an async request: Android makes the request by setting a VehiclePropValue, and HAL
* must respond with a property change indicating whether the request succeeded or failed. If
* it failed, the Android system will remove the user.
*
* The format of the request is defined by CreateUserRequest and the format of the response by
* CreateUserResponse.
*
* For example, if system had 2 users (0 and 10) and a 3rd one (which is an ephemeral guest) was
* created, the request would be:
*
* int32[0]: 42 // request id
* int32[1]: 11 // Android id of the created user
* int32[2]: 6 // Android flags (ephemeral guest) of the created user
* int32[3]: 10 // current user
* int32[4]: 0 // current user flags (none)
* int32[5]: 3 // number of users
* int32[6]: 0 // 1st user (user 0)
* int32[7]: 0 // 1st user flags (none)
* int32[8]: 10 // 2nd user (user 10)
* int32[9]: 0 // 2nd user flags (none)
* int32[19]: 11 // 3rd user (user 11)
* int32[11]: 6 // 3rd user flags (ephemeral guest)
* string: "ElGuesto" // name of the new user
*
* Then if the request succeeded, the HAL would return:
*
* int32[0]: 42 // request id
* int32[1]: 1 // CreateUserStatus::SUCCESS
*
* But if it failed:
*
* int32[0]: 42 // request id
* int32[1]: 2 // CreateUserStatus::FAILURE
* string: "D'OH!" // The meaning is a blackbox - it's passed to the caller (like Settings UI),
* // which in turn can take the proper action.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
*/
CREATE_USER = 0x0F09 + 0x10000000 + 0x01000000
+ 0x00e00000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:MIXED
/**
* Called by the Android System after an Android user was removed.
*
* The HAL can use this property to remove its equivalent user.
*
* This is write-only call - the Android System is not expecting a reply from the HAL. Hence,
* this request should not fail - if the equivalent HAL user cannot be removed, then HAL should
* mark it as inactive or recover in some other way.
*
* The request is made by setting the VehiclePropValue with the contents defined by
* RemoveUserRequest.
*
* For example, if system had 3 users (0, 10, and 11) and user 11 was removed, the request
* would be:
*
* int32[0]: 42 // request id
* int32[1]: 11 // (Android user id of the removed user)
* int32[2]: 0 // (Android user flags of the removed user)
* int32[3]: 10 // current user
* int32[4]: 0 // current user flags (none)
* int32[5]: 2 // number of users
* int32[6]: 0 // 1st user (user 0)
* int32[7]: 0 // 1st user flags (none)
* int32[8]: 10 // 2nd user (user 10)
* int32[9]: 0 // 2nd user flags (none)
*
* @change_mode VehiclePropertyChangeMode.STATIC
* @access VehiclePropertyAccess.WRITE
*/
REMOVE_USER = 0x0F0A + 0x10000000 + 0x01000000
+ 0x00e00000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:MIXED
/**
* Property used to associate (or query the association) the current user with vehicle-specific
* identification mechanisms (such as key FOB).
*
* This is an optional user management property - the OEM could still support user management
* without defining it. In fact, this property could be used without supporting the core
* user-related functions described on INITIAL_USER_INFO.
*
* To query the association, the Android system gets the property, passing a VehiclePropValue
* containing the types of associations are being queried, as defined by
* UserIdentificationGetRequest. The HAL must return right away, returning a VehiclePropValue
* with a UserIdentificationResponse. Notice that user identification should have already
* happened while system is booting up and the VHAL implementation should only return the
* already identified association (like the key FOB used to unlock the car), instead of starting
* a new association from the get call.
*
* To associate types, the Android system sets the property, passing a VehiclePropValue
* containing the types and values of associations being set, as defined by the
* UserIdentificationSetRequest. The HAL will then use a property change event (whose
* VehiclePropValue is defined by UserIdentificationResponse) indicating the current status of
* the types after the request.
*
* For example, to query if the current user (10) is associated with the FOB that unlocked the
* car and a custom mechanism provided by the OEM, the request would be:
*
* int32[0]: 42 // request id
* int32[1]: 10 (Android user id)
* int32[2]: 0 (Android user flags)
* int32[3]: 2 (number of types queried)
* int32[4]: 1 (1st type queried, UserIdentificationAssociationType::KEY_FOB)
* int32[5]: 101 (2nd type queried, UserIdentificationAssociationType::CUSTOM_1)
*
* If the user is associated with the FOB but not with the custom mechanism, the response would
* be:
*
* int32[0]: 42 // request id
* int32[1]: 2 (number of associations in the response)
* int32[2]: 1 (1st type: UserIdentificationAssociationType::KEY_FOB)
* int32[3]: 2 (1st value: UserIdentificationAssociationValue::ASSOCIATED_CURRENT_USER)
* int32[4]: 101 (2st type: UserIdentificationAssociationType::CUSTOM_1)
* int32[5]: 4 (2nd value: UserIdentificationAssociationValue::NOT_ASSOCIATED_ANY_USER)
*
* Then to associate the user with the custom mechanism, a set request would be made:
*
* int32[0]: 43 // request id
* int32[1]: 10 (Android user id)
* int32[2]: 0 (Android user flags)
* int32[3]: 1 (number of associations being set)
* int32[4]: 101 (1st type: UserIdentificationAssociationType::CUSTOM_1)
* int32[5]: 1 (1st value: UserIdentificationAssociationSetValue::ASSOCIATE_CURRENT_USER)
*
* If the request succeeded, the response would be simply:
*
* int32[0]: 43 // request id
* int32[1]: 1 (number of associations in the response)
* int32[2]: 101 (1st type: UserIdentificationAssociationType::CUSTOM_1)
* int32[3]: 1 (1st value: UserIdentificationAssociationValue::ASSOCIATED_CURRENT_USER)
*
* Notice that the set request adds associations, but doesn't remove the existing ones. In the
* example above, the end state would be 2 associations (FOB and CUSTOM_1). If we wanted to
* associate the user with just CUSTOM_1 but not FOB, then the request should have been:
*
* int32[0]: 43 // request id
* int32[1]: 10 (Android user id)
* int32[2]: 2 (number of types set)
* int32[3]: 1 (1st type: UserIdentificationAssociationType::KEY_FOB)
* int32[4]: 2 (1st value: UserIdentificationAssociationValue::DISASSOCIATE_CURRENT_USER)
* int32[5]: 101 (2nd type: UserIdentificationAssociationType::CUSTOM_1)
* int32[6]: 1 (2nd value: UserIdentificationAssociationValue::ASSOCIATE_CURRENT_USER)
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
*/
USER_IDENTIFICATION_ASSOCIATION = 0x0F0B + 0x10000000 + 0x01000000
+ 0x00e00000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:MIXED
/**
* Enable/request an EVS service.
*
* The property provides a generalized way to trigger EVS services. VHAL
* should use this property to request Android to start or stop EVS service.
*
* int32Values[0] = a type of the EVS service. The value must be one of enums in
* EvsServiceType.
* int32Values[1] = the state of the EVS service. The value must be one of enums in
* EvsServiceState.
*
* For example, to enable rear view EVS service, android side can set the property value as
* [EvsServiceType::REAR_VIEW, EvsServiceState::ON].
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
*/
EVS_SERVICE_REQUEST = 0x0F10 + 0x10000000 + 0x01000000
+ 0x00410000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32_VEC
/**
* Defines a request to apply power policy.
*
* VHAL sets this property to change car power policy. Car power policy service subscribes to
* this property and actually changes the power policy.
* The request is made by setting the VehiclePropValue with the ID of a power policy which is
* defined at /vendor/etc/automotive/power_policy.xml.
* If the given ID is not defined, car power policy service ignores the request
* and the current power policy is maintained.
*
* string: "sample_policy_id" // power policy ID
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
*/
POWER_POLICY_REQ = 0x0F21 + 0x10000000 + 0x01000000
+ 0x00100000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:STRING
/**
* Defines a request to set the power polic group used to decide a default power policy per
* power status transition.
*
* VHAL sets this property with the ID of a power policy group in order to set the default power
* policy applied at power status transition. Power policy groups are defined at
* /vendor/etc/power_policy.xml. If the given ID is not defined, car power policy service
* ignores the request.
* Car power policy service subscribes to this property and sets the power policy group.
* The actual application of power policy takes place when the system power status changes and
* there is a valid mapped power policy for the new power status.
*
* string: "sample_policy_group_id" // power policy group ID
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
*/
POWER_POLICY_GROUP_REQ = 0x0F22 + 0x10000000 + 0x01000000
+ 0x00100000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:STRING
/**
* Notifies the current power policy to VHAL layer.
*
* Car power policy service sets this property when the current power policy is changed.
*
* string: "sample_policy_id" // power policy ID
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
*/
CURRENT_POWER_POLICY = 0x0F23 + 0x10000000 + 0x01000000
+ 0x00100000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:STRING
/**
* Defines an event that car watchdog updates to tell it's alive.
*
* Car watchdog sets this property to system uptime in milliseconds at every 3 second.
* During the boot, the update may take longer time.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.WRITE
*/
WATCHDOG_ALIVE = 0xF31 + 0x10000000 + 0x01000000
+ 0x00500000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT64
/**
* Defines a process terminated by car watchdog and the reason of termination.
*
* int32Values[0]: 1 // ProcessTerminationReason showing why a process is terminated.
* string: "/system/bin/log" // Process execution command.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.WRITE
*/
WATCHDOG_TERMINATED_PROCESS = 0x0F32 + 0x10000000 + 0x01000000
+ 0x00e00000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:MIXED
/**
* Defines an event that VHAL signals to car watchdog as a heartbeat.
*
* If VHAL supports this property, VHAL should write system uptime to this property at every 3
* second. Car watchdog subscribes to this property and checks if the property is updated at
* every 3 second. With the buffer time of 3 second, car watchdog waits for a heart beat to be
* signaled up to 6 seconds from the last heart beat. If it isn’t, car watchdog considers
* VHAL unhealthy and terminates it.
* If this property is not supported by VHAL, car watchdog doesn't check VHAL health status.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
*/
VHAL_HEARTBEAT = 0x0F33 + 0x10000000 + 0x01000000
+ 0x00500000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT64
/**
* Starts the ClusterUI in cluster display.
*
* int32: the type of ClusterUI to show
* 0 indicates ClusterHome, that is a home screen of cluster display, and provides
* the default UI and a kind of launcher functionality for cluster display.
* the other values are followed by OEM's definition.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
*/
CLUSTER_SWITCH_UI = 0x0F34 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Changes the state of the cluster display.
*
* Bounds: the area to render the cluster Activity.
* Inset: the area which Activity should avoid from placing any important
* information.
*
* int32[0]: on/off: 0 - off, 1 - on, -1 - don't care
* int32[1]: Bounds - left: positive number - left position in pixels
-1 - don't care (should set all Bounds fields)
* int32[2]: Bounds - top: same format with 'left'
* int32[3]: Bounds - right: same format with 'left'
* int32[4]: Bounds - bottom: same format with 'left'
* int32[5]: Inset - left: positive number - actual left inset value in pixels
-1 - don't care (should set "don't care" all Inset fields)
* int32[6]: Inset - top: same format with 'left'
* int32[7]: Inset - right: same format with 'left'
* int32[8]: Inset - bottom: same format with 'left'
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
*/
CLUSTER_DISPLAY_STATE = 0x0F35 + 0x10000000 + 0x01000000
+ 0x00410000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32_VEC
/**
* Reports the current display state and ClusterUI state.
*
* ClusterHome will send this message when it handles CLUSTER_SWITCH_UI, CLUSTER_DISPLAY_STATE.
*
* In addition, ClusterHome should send this message when it starts for the first time.
* When ClusterOS receives this message and if the internal expectation is different with the
* received message, then it should send CLUSTER_SWITCH_UI, CLUSTER_DISPLAY_STATE again to
* match the state.
*
* int32[0]: on/off: 0 - off, 1 - on
* int32[1]: Bounds - left
* int32[2]: Bounds - top
* int32[3]: Bounds - right
* int32[4]: Bounds - bottom
* int32[5]: Inset - left
* int32[6]: Inset - top
* int32[7]: Inset - right
* int32[8]: Inset - bottom
* int32[9]: the type of ClusterUI in the fullscreen or main screen.
* 0 indicates ClusterHome.
* the other values are followed by OEM's definition.
* int32[10]: the type of ClusterUI in sub screen if the currently two UIs are shown.
* -1 indicates the area isn't used any more.
* bytes: the array to represent the availability of ClusterUI.
* 0 indicates non-available and 1 indicates available.
* For example, let's assume a car supports 3 OEM defined ClusterUI like HOME, MAPS, CALL,
* and it only supports CALL UI only when the cellular network is available. Then, if the
* nework is avaibale, it'll send [1 1 1], and if it's out of network, it'll send [1 1 0].
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.WRITE
*/
CLUSTER_REPORT_STATE = 0x0F36 + 0x10000000 + 0x01000000
+ 0x00e00000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:MIXED
/**
* Requests to change the cluster display state to show some ClusterUI.
*
* When the current display state is off and ClusterHome sends this message to ClusterOS to
* request to turn the display on to show some specific ClusterUI.
* ClusterOS should response this with CLUSTER_DISPLAY_STATE.
*
* int32: the type of ClusterUI to show
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.WRITE
*/
CLUSTER_REQUEST_DISPLAY = 0x0F37 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Informs the current navigation state.
*
* bytes: the serialized message of NavigationStateProto.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.WRITE
*/
CLUSTER_NAVIGATION_STATE = 0x0F38 + 0x10000000 + 0x01000000
+ 0x00700000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:BYTES
/**
* Electronic Toll Collection card type.
*
* This property indicates the type of ETC card in this vehicle.
* If the head unit is aware of an ETC card attached to the vehicle, this property should
* return the type of card attached; otherwise, this property should be UNAVAILABLE.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum ElectronicTollCollectionCardType
*/
ELECTRONIC_TOLL_COLLECTION_CARD_TYPE = 0x0F39 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Electronic Toll Collection card status.
*
* This property indicates the status of ETC card in this vehicle.
* If the head unit is aware of an ETC card attached to the vehicle,
* ELECTRONIC_TOLL_COLLECTION_CARD_TYPE gives that status of the card; otherwise,
* this property should be UNAVAILABLE.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum ElectronicTollCollectionCardStatus
*/
ELECTRONIC_TOLL_COLLECTION_CARD_STATUS = 0x0F3A + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Front fog lights state
*
* Return the current state of the front fog lights.
* Only one of FOG_LIGHTS_STATE or FRONT_FOG_LIGHTS_STATE must be implemented. Please refer to
* the documentation on FOG_LIGHTS_STATE for more information.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleLightState
*/
FRONT_FOG_LIGHTS_STATE = 0x0F3B + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Front fog lights switch
*
* The setting that the user wants.
* Only one of FOG_LIGHTS_SWITCH or FRONT_FOG_LIGHTS_SWITCH must be implemented. Please refer to
* the documentation on FOG_LIGHTS_SWITCH for more information.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleLightSwitch
*/
FRONT_FOG_LIGHTS_SWITCH = 0x0F3C + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Rear fog lights state
*
* Return the current state of the rear fog lights.
* Only one of FOG_LIGHTS_STATE or REAR_FOG_LIGHTS_STATE must be implemented. Please refer to
* the documentation on FOG_LIGHTS_STATE for more information.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleLightState
*/
REAR_FOG_LIGHTS_STATE = 0x0F3D + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Rear fog lights switch
*
* The setting that the user wants.
* Only one of FOG_LIGHTS_SWITCH or REAR_FOG_LIGHTS_SWITCH must be implemented. Please refer to
* the documentation on FOG_LIGHTS_SWITCH for more information.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleLightSwitch
*/
REAR_FOG_LIGHTS_SWITCH = 0x0F3E + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Indicates the maximum current draw threshold for charging set by the user
*
* configArray[0] is used to specify the max current draw allowed by
* the vehicle in Amperes.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
* @unit VehicleUnit:AMPERE
*/
EV_CHARGE_CURRENT_DRAW_LIMIT = 0x0F3F + 0x10000000 + 0x01000000
+ 0x00600000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:FLOAT
/**
* Indicates the maximum charge percent threshold set by the user
*
* Returns a float value from 0 to 100.
*
* configArray is used to specify the valid values.
* For example, if the vehicle supports the following charge percent limit values:
* [20, 40, 60, 80, 100]
* then the configArray should be {20, 40, 60, 80, 100}
* If the configArray is empty then all values from 0 to 100 must be valid.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
EV_CHARGE_PERCENT_LIMIT = 0x0F40 + 0x10000000 + 0x01000000
+ 0x00600000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:FLOAT
/**
* Charging state of the car
*
* Returns the current charging state of the car.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum EvChargeState
*/
EV_CHARGE_STATE = 0x0F41 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Start or stop charging the EV battery
*
* The setting that the user wants. Setting this property to true starts the battery charging
* and setting to false stops charging.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
EV_CHARGE_SWITCH = 0x0F42 + 0x10000000 + 0x01000000
+ 0x00200000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:BOOLEAN
/**
* Estimated charge time remaining in seconds
*
* Returns 0 if the vehicle is not charging.
*
* @change_mode VehiclePropertyChangeMode.CONTINUOUS
* @access VehiclePropertyAccess.READ
* @unit VehicleUnit:SECS
*/
EV_CHARGE_TIME_REMAINING = 0x0F43 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Regenerative braking or one-pedal drive state of the car
*
* Returns the current state associated with the regenerative braking
* setting in the car
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum EvRegenerativeBrakingState
*/
EV_REGENERATIVE_BRAKING_STATE = 0x0F44 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Indicates if there is a trailer present or not.
*
* Returns the trailer state of the car.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum TrailerState
*/
TRAILER_PRESENT = 0x0F45 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* Vehicle’s curb weight
*
* Returns the vehicle's curb weight in kilograms. Curb weight is
* the total weight of the vehicle with standard equipment and all
* necessary operating consumables such as motor oil,transmission oil,
* brake fluid, coolant, air conditioning refrigerant, and weight of
* fuel at nominal tank capacity, while not loaded with either passengers
* or cargo.
*
* configArray[0] is used to specify the vehicle’s gross weight in kilograms.
* The vehicle’s gross weight is the maximum operating weight of the vehicle
* as specified by the manufacturer including the vehicle's chassis, body, engine,
* engine fluids, fuel, accessories, driver, passengers and cargo but excluding
* that of any trailers.
*
* @change_mode VehiclePropertyChangeMode.STATIC
* @access VehiclePropertyAccess.READ
* @unit VehicleUnit:KILOGRAM
*/
VEHICLE_CURB_WEIGHT = 0x0F46 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* EU's General security regulation compliance requirement.
*
* Returns whether general security regulation compliance is required, if
* so, what type of requirement.
*
* @change_mode VehiclePropertyChangeMode.STATIC
* @access VehiclePropertyAccess.READ
* @data_enum GsrComplianceRequirementType
*/
GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT = 0x0F47 + 0x10000000 + 0x01000000
+ 0x00400000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32
/**
* (Deprecated) List of all supported property IDs.
*
* A list of all supported property IDs (including this property). This property is required for
* HIDL VHAL to work with large amount of vehicle prop configs where the getAllPropConfigs
* payload exceeds the binder limitation. This issue is fixed in AIDL version using
* LargeParcelable in getAllPropConfigs, so this property is deprecated.
*
* In HIDL VHAL implementation, if the amount of data returned in getAllPropConfigs exceeds the
* binder limitation, vendor must support this property and return all the supported property
* IDs. Car service will divide this list into smaller sub lists and use getPropConfigs([ids])
* to query the sub lists. The results will be merged together in Car Service.
*
* The config array for this property must contain one int element which is the number of
* configs per getPropConfigs request by Car Service. This number must be small enough so that
* each getPropConfigs payload will not exceed binder limitation, however, a smaller number will
* cause more requests, which increase overhead to fetch all the configs.
*
* @change_mode VehiclePropertyChangeMode.STATIC
* @access VehiclePropertyAccess.READ
*/
SUPPORTED_PROPERTY_IDS = 0x0F48 + 0x10000000 + 0x01000000
+ 0x00410000, // VehiclePropertyGroup:SYSTEM,VehicleArea:GLOBAL,VehiclePropertyType:INT32_VEC
/**
* Request the head unit to be shutdown.
*
* <p>This usually involves telling a separate system outside the head unit (e.g. a power
* controller) to prepare shutting down the head unit.
*
* <p>This does not mean the head unit will shutdown immediately.
*
* <p>This means that another system will start sending a shutdown signal to the head unit,
* which will cause VHAL to send SHUTDOWN_PREPARE message to Android. Android will then start
* the shut down process by handling the message.
*
* <p>This property is only for issuing a request and only supports writing. Every time this
* property value is set, the request to shutdown will be issued no matter what the current
* property value is. The current property value is meaningless.
*
* <p>Since this property is write-only, subscribing is not allowed and no property change
* event will be generated.
*
* <p>The value to set indicates the shutdown option, it must be one of
* {@code VehicleApPowerStateShutdownParam}, e.g.,
* VehicleApPowerStateShutdownParam.SLEEP_IMMEDIATELY. This shutdown option might not be honored
* if the system doesn't support such option. In such case, an error will not be returned.
*
* <p>For configuration information, VehiclePropConfig.configArray must have bit flag combining
* values in {@code VehicleApPowerStateConfigFlag} to indicate which shutdown options are
* supported.
*
* <p>Returns error if failed to send the shutdown request to the other system.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.WRITE
* @data_enum VehicleApPowerStateShutdownParam
*/
SHUTDOWN_REQUEST =
0x0F49 + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.INT32,
/**
* Whether the vehicle is currently in use.
*
* <p>In-use means a human user is present and is intended to use the vehicle. This doesn't
* necessarily means the human user is in the vehicle. For example, if the human user unlocks
* the vehicle remotely, the vehicle is considered in use.
*
* <p>If this property is supported:
*
* <p>Each time user powers on the vehicle or the system detects the user is present,
* VEHICLE_IN_USE must be set to true. Each time user powers off the vehicle or the system
* detects the user is not present, VEHICLE_IN_USE must be set to false.
*
* <p>This property is different than AP_POWER_BOOTUP_REASON in the sense that
* AP_POWER_BOOTUP_REASON is only set once during the system bootup. However, this property
* might change multiple times during a system bootup cycle.
*
* <p>For example, a device is currently not in use. The system bootup to execute a remote task.
* VEHICLE_IN_USE is false. While the remote task is executing, the user enters the vehicle and
* powers on the vehicle. VEHICLE_IN_USE is set to true. After a driving session, user powers
* off the vehicle, VEHICLE_IN_USE is set to false.
*
* <p>This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
VEHICLE_IN_USE =
0x0F4A + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.BOOLEAN,
/**
* Sends the heartbeat signal to ClusterOS.
*
* int64[0]: epochTimeNs
* int64[1]: the visibility of ClusterUI, 0 - invisible, 1 - visible
* bytes: the app specific metadata, this can be empty when ClusterHomeService use the heartbeat
* to deliver the change of the visibility.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.WRITE
*/
CLUSTER_HEARTBEAT =
0x0F4B + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.MIXED,
/**
* Current state of vehicle autonomy.
*
* Defines the level of autonomy currently engaged in the vehicle from the J3016_202104 revision
* of the SAE standard levels 0-5, with 0 representing no autonomy and 5 representing full
* driving automation. These levels should be used in accordance with the standards defined in
* https://www.sae.org/standards/content/j3016_202104/ and
* https://www.sae.org/blog/sae-j3016-update
*
* For the global area ID (0), the VehicleAreaConfig#supportedEnumValues array must be defined
* unless all states of VehicleAutonomousState are supported.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum VehicleAutonomousState
*/
VEHICLE_DRIVING_AUTOMATION_CURRENT_LEVEL =
0x0F4C + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.INT32,
/***********************************************************************************************
* Start of ADAS Properties
*
* Allocate IDs in range of 0x1000 (inclusive) to 0x1100 (exclusive) for ADAS properties
**********************************************************************************************/
/**
* Enable or disable Automatic Emergency Braking (AEB).
*
* Set true to enable AEB and false to disable AEB. When AEB is enabled, the ADAS system in the
* vehicle should be turned on and monitoring to avoid potential collisions.
*
* In general, AUTOMATIC_EMERGENCY_BRAKING_ENABLED should always return true or false. If the
* feature is not available due to some temporary state, such as the vehicle speed being too
* low, that information must be conveyed through the ErrorState values in the
* AUTOMATIC_EMERGENCY_BRAKING_STATE property.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
AUTOMATIC_EMERGENCY_BRAKING_ENABLED =
0x1000 + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.BOOLEAN,
/**
* Automatic Emergency Braking (AEB) state.
*
* Returns the current state of AEB. This property must always return a valid state defined in
* AutomaticEmergencyBrakingState or ErrorState. It must not surface errors through StatusCode
* and must use the supported error states instead.
*
* If AEB includes forward collision warnings before activating the brakes, those warnings must
* be surfaced through the Forward Collision Warning (FCW) properties.
*
* For the global area ID (0), the VehicleAreaConfig#supportedEnumValues array must be defined
* unless all states of both AutomaticEmergencyBrakingState (including OTHER, which is not
* recommended) and ErrorState are supported.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum AutomaticEmergencyBrakingState
* @data_enum ErrorState
*/
AUTOMATIC_EMERGENCY_BRAKING_STATE =
0x1001 + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.INT32,
/**
* Enable or disable Forward Collision Warning (FCW).
*
* Set true to enable FCW and false to disable FCW. When FCW is enabled, the ADAS system in the
* vehicle should be turned on and monitoring for potential collisions.
*
* In general, FORWARD_COLLISION_WARNING_ENABLED should always return true or false. If the
* feature is not available due to some temporary state, such as the vehicle speed being too
* low, that information must be conveyed through the ErrorState values in the
* FORWARD_COLLISION_WARNING_STATE property.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
FORWARD_COLLISION_WARNING_ENABLED =
0x1002 + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.BOOLEAN,
/**
* Forward Collision Warning (FCW) state.
*
* Returns the current state of FCW. This property must always return a valid state defined in
* ForwardCollisionWarningState or ErrorState. It must not surface errors through StatusCode
* and must use the supported error states instead.
*
* For the global area ID (0), the VehicleAreaConfig#supportedEnumValues array must be defined
* unless all states of both ForwardCollisionWarningState (including OTHER, which is not
* recommended) and ErrorState are supported.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum ForwardCollisionWarningState
* @data_enum ErrorState
*/
FORWARD_COLLISION_WARNING_STATE =
0x1003 + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.INT32,
/**
* Enable and disable Blind Spot Warning (BSW).
*
* Set true to enable BSW and false to disable BSW. When BSW is enabled, the ADAS system in the
* vehicle should be turned on and monitoring for objects in the vehicle’s blind spots.
*
* In general, BLIND_SPOT_WARNING_ENABLED should always return true or false. If the feature is
* not available due to some temporary state, such as the vehicle speed being too low, that
* information must be conveyed through the ErrorState values in the BLIND_SPOT_WARNING_STATE
* property.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
BLIND_SPOT_WARNING_ENABLED =
0x1004 + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.BOOLEAN,
/**
* Blind Spot Warning (BSW) state.
*
* Returns the current state of BSW. This property must always return a valid state defined in
* BlindSpotWarningState or ErrorState. It must not surface errors through StatusCode
* and must use the supported error states instead.
*
* For each supported area ID, the VehicleAreaConfig#supportedEnumValues array must be defined
* unless all states of both BlindSpotWarningState (including OTHER, which is not
* recommended) and ErrorState are supported.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum BlindSpotWarningState
* @data_enum ErrorState
*/
BLIND_SPOT_WARNING_STATE =
0x1005 + VehiclePropertyGroup.SYSTEM + VehicleArea.MIRROR + VehiclePropertyType.INT32,
/**
* Enable or disable Lane Departure Warning (LDW).
*
* Set true to enable LDW and false to disable LDW. When LDW is enabled, the ADAS system in the
* vehicle should be turned on and monitoring if the vehicle is approaching or crossing lane
* lines, in which case a warning will be given.
*
* In general, LANE_DEPARTURE_WARNING_ENABLED should always return true or false. If the feature
* is not available due to some temporary state, such as the vehicle speed being too low or too
* high, that information must be conveyed through the ErrorState values in the
* LANE_DEPARTURE_WARNING_STATE property.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
LANE_DEPARTURE_WARNING_ENABLED =
0x1006 + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.BOOLEAN,
/**
* Lane Departure Warning (LDW) state.
*
* Returns the current state of LDW. This property must always return a valid state defined in
* LaneDepartureWarningState or ErrorState. It must not surface errors through StatusCode
* and must use the supported error states instead.
*
* For the global area ID (0), the VehicleAreaConfig#supportedEnumValues array must be defined
* unless all states of both LaneDepartureWarningState (including OTHER, which is not
* recommended) and ErrorState are supported.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum LaneDepartureWarningState
* @data_enum ErrorState
*/
LANE_DEPARTURE_WARNING_STATE =
0x1007 + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.INT32,
/**
* Enable or disable Lane Keep Assist (LKA).
*
* Set true to enable LKA and false to disable LKA. When LKA is enabled, the ADAS system in the
* vehicle should be turned on and monitoring if the driver unintentionally drifts toward or
* over the lane marking. If an unintentional lane departure is detected, the system applies
* steering control to return the vehicle into the current lane.
*
* This is different from Lane Centering Assist (LCA) which, when activated, applies continuous
* steering control to keep the vehicle centered in the current lane.
*
* In general, LANE_KEEP_ASSIST_ENABLED should always return true or false. If the feature is
* not available due to some temporary state, such as the vehicle speed being too low or too
* high, that information must be conveyed through the ErrorState values in the
* LANE_KEEP_ASSIST_STATE property.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
LANE_KEEP_ASSIST_ENABLED =
0x1008 + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.BOOLEAN,
/**
* Lane Keep Assist (LKA) state.
*
* Returns the current state of LKA. This property must always return a valid state defined in
* LaneKeepAssistState or ErrorState. It must not surface errors through StatusCode
* and must use the supported error states instead.
*
* If LKA includes lane departure warnings before applying steering corrections, those warnings
* must be surfaced through the Lane Departure Warning (LDW) properties.
*
* For the global area ID (0), the VehicleAreaConfig#supportedEnumValues array must be defined
* unless all states of both LaneKeepAssistState (including OTHER, which is not
* recommended) and ErrorState are supported.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum LaneKeepAssistState
* @data_enum ErrorState
*/
LANE_KEEP_ASSIST_STATE =
0x1009 + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.INT32,
/**
* Enable or disable Lane Centering Assist (LCA).
*
* Set true to enable LCA and false to disable LCA. When LCA is enabled, the ADAS system in the
* vehicle should be turned on and waiting for an activation signal from the driver. Once the
* feature is activated, the ADAS system should be steering the vehicle to keep it centered in
* its current lane.
*
* This is different from Lane Keep Assist (LKA) which monitors if the driver unintentionally
* drifts toward or over the lane marking. If an unintentional lane departure is detected, the
* system applies steering control to return the vehicle into the current lane.
*
* In general, LANE_CENTERING_ASSIST_ENABLED should always return true or false. If the feature
* is not available due to some temporary state, such as the vehicle speed being too low or too
* high, that information must be conveyed through the ErrorState values in the
* LANE_CENTERING_ASSIST_STATE property.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
LANE_CENTERING_ASSIST_ENABLED =
0x100A + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.BOOLEAN,
/**
* Lane Centering Assist (LCA) commands.
*
* Commands to activate and suspend LCA.
*
* When the command ACTIVATE from LaneCenteringAssistCommand is sent,
* LANE_CENTERING_ASSIST_STATE must be set to LaneCenteringAssistState#ACTIVATION_REQUESTED.
* When the ACTIVATE command succeeds, LANE_CENTERING_ASSIST_STATE must be set to
* LaneCenteringAssistState#ACTIVATED. When the command DEACTIVATE from
* LaneCenteringAssistCommand succeeds, LANE_CENTERING_ASSIST_STATE must be set to
* LaneCenteringAssistState#ENABLED.
*
* For the global area ID (0), the VehicleAreaConfig#supportedEnumValues must be defined unless
* all enum values of LaneCenteringAssistCommand are supported.
*
* When this property is not available because LCA is disabled (i.e.
* LANE_CENTERING_ASSIST_ENABLED is false), this property must return
* StatusCode#NOT_AVAILABLE_DISABLED. If LANE_CENTERING_ASSIST_STATE is implemented and the
* state is set to an ErrorState value, then this property must return a StatusCode that aligns
* with the ErrorState value. For example, if LANE_CENTERING_ASSIST_STATE is set to
* ErrorState#NOT_AVAILABLE_SPEED_LOW, then this property must return
* StatusCode#NOT_AVAILABLE_SPEED_LOW.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.WRITE
* @data_enum LaneCenteringAssistCommand
*/
LANE_CENTERING_ASSIST_COMMAND =
0x100B + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.INT32,
/**
* Lane Centering Assist (LCA) state.
*
* Returns the current state of LCA. This property must always return a valid state defined in
* LaneCenteringAssistState or ErrorState. It must not surface errors through StatusCode
* and must use the supported error states instead.
*
* If LCA includes lane departure warnings, those warnings must be surfaced through the Lane
* Departure Warning (LDW) properties.
*
* For the global area ID (0), the VehicleAreaConfig#supportedEnumValues array must be defined
* unless all states of both LaneCenteringAssistState (including OTHER, which is not
* recommended) and ErrorState are supported.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum LaneCenteringAssistState
* @data_enum ErrorState
*/
LANE_CENTERING_ASSIST_STATE =
0x100C + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.INT32,
/*
* Enable or disable Emergency Lane Keep Assist (ELKA).
*
* Set true to enable ELKA and false to disable ELKA. When ELKA is enabled, the ADAS system in
* the vehicle should be on and monitoring for unsafe lane changes by the driver. When an unsafe
* maneuver is detected, ELKA alerts the driver and applies steering corrections to keep the
* vehicle in its original lane.
*
* In general, EMERGENCY_LANE_KEEP_ASSIST_ENABLED should always return true or false. If the
* feature is not available due to some temporary state, such as the vehicle speed being too
* low, that information must be conveyed through the ErrorState values in the
* EMERGENCY_LANE_KEEP_ASSIST_STATE property.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
EMERGENCY_LANE_KEEP_ASSIST_ENABLED =
0x100D + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.BOOLEAN,
/**
* Emergency Lane Keep Assist (ELKA) state.
*
* Returns the current state of ELKA. Generally, this property should return a valid state
* defined in the EmergencyLaneKeepAssistState or ErrorState. For example, if the feature is not
* available due to some temporary state, that information should be conveyed through
* ErrorState.
*
* For the global area ID (0), the VehicleAreaConfig#supportedEnumValues array must be defined
* unless all states of EmergencyLaneKeepAssistState (including OTHER, which is not recommended)
* and ErrorState are supported.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum EmergencyLaneKeepAssistState
* @data_enum ErrorState
*/
EMERGENCY_LANE_KEEP_ASSIST_STATE =
0x100E + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.INT32,
/**
* Enable or disable cruise control (CC).
*
* Set true to enable CC and false to disable CC. This property is shared by all forms of
* CruiseControlType(s).
*
* When CC is enabled, the ADAS system in the vehicle should be turned on and responding to
* commands.
*
* In general, CRUISE_CONTROL_ENABLED should always return true or false. If the feature is not
* available due to some temporary state, such as the vehicle speed being too low, that
* information must be conveyed through the ErrorState values in the CRUISE_CONTROL_STATE
* property.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
CRUISE_CONTROL_ENABLED =
0x100F + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.BOOLEAN,
/**
* Current type of Cruise Control (CC).
*
* When CRUISE_CONTROL_ENABLED is true, this property returns the type of CC that is currently
* enabled (for example, standard CC, adaptive CC, predictive CC, etc.). Generally, this
* property should return a valid state defined in the CruiseControlType or ErrorState. For
* example, if the feature is not available due to some temporary state, that information should
* be conveyed through ErrorState.
*
* For the global area ID (0), the VehicleAreaConfig#supportedEnumValues array must be defined
* unless all states of CruiseControlType (including OTHER, which is not recommended) and
* ErrorState are supported.
*
* Trying to write CruiseControlType#OTHER or an ErrorState to this property will throw an
* IllegalArgumentException.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
* @data_enum CruiseControlType
* @data_enum ErrorState
*/
CRUISE_CONTROL_TYPE =
0x1010 + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.INT32,
/**
* Current state of Cruise Control (CC).
*
* This property returns the current state of CC. Generally, this property should return a valid
* state defined in the CruiseControlState or ErrorState. For example, if the feature is not
* available due to some temporary state, that information should be conveyed through
* ErrorState.
*
* For the global area ID (0), the VehicleAreaConfig#supportedEnumValues array must be defined
* unless all states of CruiseControlState (including OTHER, which is not recommended) and
* ErrorState are supported.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum CruiseControlState
* @data_enum ErrorState
*/
CRUISE_CONTROL_STATE =
0x1011 + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.INT32,
/**
* Write Cruise Control (CC) commands.
*
* See CruiseControlCommand for the details about each supported command.
*
* For the global area ID (0), the VehicleAreaConfig#supportedEnumValues array must be defined
* unless all states of CruiseControlState are supported. Any unsupported commands sent through
* this property must return StatusCode#INVALID_ARG.
*
* When this property is not available because CC is disabled (i.e. CRUISE_CONTROL_ENABLED is
* false), this property must return StatusCode#NOT_AVAILABLE_DISABLED. If CRUISE_CONTROL_STATE
* is implemented and the state is set to an ErrorState value, then this property must return a
* StatusCode that aligns with the ErrorState value. For example, if CRUISE_CONTROL_STATE is set
* to ErrorState#NOT_AVAILABLE_SPEED_LOW, then this property must return
* StatusCode#NOT_AVAILABLE_SPEED_LOW.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.WRITE
* @data_enum CruiseControlCommand
*/
CRUISE_CONTROL_COMMAND =
0x1012 + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.INT32,
/**
* Current target speed for Cruise Control (CC).
*
* OEMs should set the minFloatValue and maxFloatValue values for this property to define the
* min and max target speed values. These values must be non-negative.
*
* The maxFloatValue represents the upper bound of the target speed.
* The minFloatValue represents the lower bound of the target speed.
*
* When this property is not available because CC is disabled (i.e. CRUISE_CONTROL_ENABLED is
* false), this property must return StatusCode#NOT_AVAILABLE_DISABLED. If CRUISE_CONTROL_STATE
* is implemented and the state is set to an ErrorState value, then this property must return a
* StatusCode that aligns with the ErrorState value. For example, if CRUISE_CONTROL_STATE is set
* to ErrorState#NOT_AVAILABLE_SPEED_LOW, then this property must return
* StatusCode#NOT_AVAILABLE_SPEED_LOW.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @unit VehicleUnit:METER_PER_SEC
*/
CRUISE_CONTROL_TARGET_SPEED =
0x1013 + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.FLOAT,
/**
* Current target time gap for Adaptive Cruise Control (ACC) or Predictive Cruise Control in
* milliseconds.
*
* This property should specify the target time gap to a leading vehicle. This gap is defined as
* the time to travel the distance between the leading vehicle's rear-most point to the ACC
* vehicle's front-most point. The actual time gap from a leading vehicle can be above or below
* this value.
*
* The possible values to set for the target time gap should be specified in configArray in
* ascending order. All values must be positive. If the property is writable, all values must be
* writable.
*
* When this property is not available because CC is disabled (i.e. CRUISE_CONTROL_ENABLED is
* false), this property must return StatusCode#NOT_AVAILABLE_DISABLED. If CRUISE_CONTROL_STATE
* is implemented and the state is set to an ErrorState value, then this property must return a
* StatusCode that aligns with the ErrorState value. For example, if CRUISE_CONTROL_STATE is set
* to ErrorState#NOT_AVAILABLE_SPEED_LOW, then this property must return
* StatusCode#NOT_AVAILABLE_SPEED_LOW.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
* @unit VehicleUnit:MILLI_SECS
*/
ADAPTIVE_CRUISE_CONTROL_TARGET_TIME_GAP =
0x1014 + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.INT32,
/**
* Measured distance from leading vehicle when using Adaptive Cruise Control (ACC) or
* Predictive Cruise Control.
*
* Returns the measured distance in millimeters between the rear-most point of the leading
* vehicle and the front-most point of the ACC vehicle.
*
* The maxInt32Value and minInt32Value in VehicleAreaConfig must be defined.
* The minInt32Value should be 0.
* The maxInt32Value should be populated with the maximum range the distance sensor can support.
* This value should be non-negative.
*
* When no lead vehicle is detected (that is, when there is no leading vehicle or the leading
* vehicle is too far away for the sensor to detect), this property should return
* StatusCode.NOT_AVAILABLE.
*
* When this property is not available because CC is disabled (i.e. CRUISE_CONTROL_ENABLED is
* false), this property must return StatusCode#NOT_AVAILABLE_DISABLED. If CRUISE_CONTROL_STATE
* is implemented and the state is set to an ErrorState value, then this property must return a
* StatusCode that aligns with the ErrorState value. For example, if CRUISE_CONTROL_STATE is set
* to ErrorState#NOT_AVAILABLE_SPEED_LOW, then this property must return
* StatusCode#NOT_AVAILABLE_SPEED_LOW.
*
* @change_mode VehiclePropertyChangeMode.CONTINUOUS
* @access VehiclePropertyAccess.READ
* @unit VehicleUnit:MILLIMETER
*/
ADAPTIVE_CRUISE_CONTROL_LEAD_VEHICLE_MEASURED_DISTANCE =
0x1015 + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.INT32,
/**
* Enable or disable Hands On Detection (HOD).
*
* Set true to enable HOD and false to disable HOD. When HOD is enabled, a system inside the
* vehicle should be monitoring the presence of the driver's hands on the steering wheel and
* send a warning if it detects that the driver's hands are no longer on the steering wheel.
*
* In general, HANDS_ON_DETECTION_ENABLED should always return true or false. If the feature is
* not available due to some temporary state, that information must be conveyed through the
* ErrorState values in the HANDS_ON_DETECTION_STATE property.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
HANDS_ON_DETECTION_ENABLED =
0x1016 + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.BOOLEAN,
/**
* Hands On Detection (HOD) driver state.
*
* Returns whether the driver's hands are on the steering wheel. Generally, this property should
* return a valid state defined in the HandsOnDetectionDriverState or ErrorState. For example,
* if the feature is not available due to some temporary state, that information should be
* conveyed through ErrorState.
*
* If the vehicle wants to send a warning to the user because the driver's hands have been off
* the steering wheel for too long, the warning should be surfaced through
* HANDS_ON_DETECTION_WARNING.
*
* For the global area ID (0), the VehicleAreaConfig#supportedEnumValues array must be defined
* unless all states of both HandsOnDetectionDriverState (including OTHER, which is not
* recommended) and ErrorState are supported.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum HandsOnDetectionDriverState
* @data_enum ErrorState
*/
HANDS_ON_DETECTION_DRIVER_STATE =
0x1017 + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.INT32,
/**
* Hands On Detection (HOD) warning.
*
* Returns whether a warning is being sent to the driver for having their hands off the wheel
* for too long a duration.
*
* Generally, this property should return a valid state defined in HandsOnDetectionWarning or
* ErrorState. For example, if the feature is not available due to some temporary state, that
* information should be conveyed through an ErrorState.
*
* For the global area ID (0), the VehicleAreaConfig#supportedEnumValues array must be defined
* unless all states of both HandsOnDetectionWarning (including OTHER, which is not recommended)
* and ErrorState are supported.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum HandsOnDetectionWarning
* @data_enum ErrorState
*/
HANDS_ON_DETECTION_WARNING =
0x1018 + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.INT32,
/**
* Enable or disable driver drowsiness and attention monitoring.
*
* Set true to enable driver drowsiness and attention monitoring and false to disable driver
* drowsiness and attention monitoring. When driver drowsiness and attention monitoring is
* enabled, a system inside the vehicle should be monitoring the drowsiness and attention level
* of the driver and warn the driver if needed.
*
* In general, DRIVER_DROWSINESS_ATTENTION_SYSTEM_ENABLED should always return true or false.
* If the feature is not available due to some temporary state, that information must be
* conveyed through the ErrorState values in the DRIVER_DROWSINESS_ATTENTION_STATE property.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
DRIVER_DROWSINESS_ATTENTION_SYSTEM_ENABLED =
0x1019 + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.BOOLEAN,
/**
* Driver drowsiness and attention level state.
*
* Returns the current detected state of driver drowiness and attention level based on the
* Karolinska Sleepiness scale. If alternative measurement methods are used, the value should be
* translated to the Karolinska Sleepiness Scale equivalent.
*
* Generally, this property should return a valid state defined in the
* DriverDrowsinessAttentionState or ErrorState. For example, if the feature is not available
* due to some temporary state, that information should be conveyed through ErrorState.
*
* If the vehicle is sending a warning to the user because the driver is too drowsy, the warning
* should be surfaced through {@link #DRIVER_DROWSINESS_ATTENTION_WARNING}.
*
* For the global area ID (0), the VehicleAreaConfig#supportedEnumValues array must be defined
* unless all states of both DriverDrowsinessAttentionState (including OTHER, which is not
* recommended) and ErrorState are supported.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum DriverDrowsinessAttentionState
* @data_enum ErrorState
*/
DRIVER_DROWSINESS_ATTENTION_STATE =
0x101A + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.INT32,
/**
* Enable or disable driver drowsiness and attention warnings.
*
* Set true to enable driver drowsiness and attention warnings and false to disable driver
* drowsiness and attention warnings.
*
* When driver drowsiness and attention warnings are enabled, the driver drowsiness and
* attention monitoring system inside the vehicle should warn the driver when it detects the
* driver is drowsy or not attentive.
*
* In general, DRIVER_DROWSINESS_ATTENTION_WARNING_ENABLED should always return true or false.
* If the feature is not available due to some temporary state, that information must be
* conveyed through the ErrorState values in the DRIVER_DROWSINESS_ATTENTION_WARNING property.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
DRIVER_DROWSINESS_ATTENTION_WARNING_ENABLED =
0x101B + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.BOOLEAN,
/**
* Driver drowsiness and attention warning.
*
* Returns whether a warning is being sent to the driver for being drowsy or not attentive.
*
* Generally, this property should return a valid state defined in
* DriverDrowsinessAttentionWarning or ErrorState. For example, if the feature is not available
* due to some temporary state, that information should be conveyed through an ErrorState.
*
* For the global area ID (0), the VehicleAreaConfig#supportedEnumValues array must be defined
* unless all states of both DriverDrowsinessAttentionWarning (including OTHER, which is not
* recommended) and ErrorState are supported.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum DriverDrowsinessAttentionWarning
* @data_enum ErrorState
*/
DRIVER_DROWSINESS_ATTENTION_WARNING =
0x101C + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.INT32,
/**
* Enable or disable driver distraction monitoring.
*
* Set true to enable driver distraction monitoring and false to disable driver
* distraction monitoring. When driver distraction monitoring is enabled, a system
* inside the vehicle should be monitoring the distraction level of the driver and
* warn the driver if needed.
*
* In general, DRIVER_DISTRACTION_SYSTEM_ENABLED should always return true or false. If the
* feature is not available due to some temporary state, that information must be conveyed
* through the ErrorState values in the DRIVER_DISTRACTION_STATE property.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
DRIVER_DISTRACTION_SYSTEM_ENABLED =
0x101D + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.BOOLEAN,
/**
* Driver distraction state.
*
* Returns the current detected driver distraction state.
*
* Generally, this property should return a valid state defined in the DriverDistractionState or
* ErrorState. For example, if the feature is not available due to some temporary state, that
* information should be conveyed through ErrorState.
*
* If the vehicle is sending a warning to the user because the driver is too distracted, the
* warning should be surfaced through {@link #DRIVER_DISTRACTION_WARNING}.
*
* For the global area ID (0), the VehicleAreaConfig#supportedEnumValues array must be defined
* unless all states of both DriverDistractionState (including OTHER, which is not
* recommended) and ErrorState are supported.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum DriverDistractionState
* @data_enum ErrorState
*/
DRIVER_DISTRACTION_STATE =
0x101E + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.INT32,
/**
* Enable or disable driver distraction warnings.
*
* Set true to enable driver distraction warnings and false to disable driver distraction
* warnings.
*
* When driver distraction warnings are enabled, the driver distraction monitoring system inside
* the vehicle should warn the driver when it detects the driver is distracted.
*
* In general, DRIVER_DISTRACTION_WARNING_ENABLED should always return true or false. If the
* feature is not available due to some temporary state, that information must be conveyed
* through the ErrorState values in the DRIVER_DISTRACTION_WARNING property.
*
* This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to
* implement it as VehiclePropertyAccess.READ only.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ_WRITE
* @access VehiclePropertyAccess.READ
*/
DRIVER_DISTRACTION_WARNING_ENABLED =
0x101F + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.BOOLEAN,
/**
* Driver distraction warning.
*
* Returns whether a warning is being sent to the driver for being distracted.
*
* Generally, this property should return a valid state defined in DriverDistractionWarning or
* ErrorState. For example, if the feature is not available due to some temporary state, that
* information should be conveyed through an ErrorState.
*
* For the global area ID (0), the VehicleAreaConfig#supportedEnumValues array must be defined
* unless all states of both DriverDistractionWarning (including OTHER, which is not
* recommended) and ErrorState are supported.
*
* @change_mode VehiclePropertyChangeMode.ON_CHANGE
* @access VehiclePropertyAccess.READ
* @data_enum DriverDistractionWarning
* @data_enum ErrorState
*/
DRIVER_DISTRACTION_WARNING =
0x1020 + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.INT32,
/***************************************************************************
* End of ADAS Properties
**************************************************************************/
}