[
    {
        "name": "VehicleProperty",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "VIN of vehicle",
                "value": 286261504,
                "description": "VIN of vehicle"
            },
            {
                "name": "Manufacturer of vehicle",
                "value": 286261505,
                "description": "Manufacturer of vehicle\nThis property must communicate the vehicle's public brand name."
            },
            {
                "name": "Model of vehicle",
                "value": 286261506,
                "description": "Model of vehicle\nThis property must communicate the vehicle's public model name."
            },
            {
                "name": "INFO_MODEL_YEAR",
                "value": 289407235,
                "description": "Model year of vehicle in YYYY format based on the Gregorian calendar."
            },
            {
                "name": "INFO_FUEL_CAPACITY",
                "value": 291504388,
                "description": "Fuel capacity of the vehicle in milliliters\nThis property must communicate the maximum amount of the fuel that can be stored in the vehicle in milliliters. This property does not apply to electric vehicles. That is, if INFO_FUEL_TYPE only contains FuelType::FUEL_TYPE_ELECTRIC, this property must not be implemented. For EVs, implement INFO_EV_BATTERY_CAPACITY."
            },
            {
                "name": "INFO_FUEL_TYPE",
                "value": 289472773,
                "data_enums": [
                    "FuelType"
                ],
                "data_enum": "FuelType",
                "description": "List of fuels the vehicle may use.\nFuelType::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 (Plug-in 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 }"
            },
            {
                "name": "INFO_EV_BATTERY_CAPACITY",
                "value": 291504390,
                "description": "Nominal usable battery capacity for EV or hybrid vehicle\nReturns the nominal battery capacity, if EV or hybrid. This is the total usable 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 usable battery capacity taking into account factors such as battery aging and temperature dependency."
            },
            {
                "name": "INFO_EV_CONNECTOR_TYPE",
                "value": 289472775,
                "data_enums": [
                    "EvConnectorType"
                ],
                "data_enum": "EvConnectorType",
                "description": "List of connectors this EV may use\nIf the vehicle has multiple charging ports, this property must return all possible connector types that can be used by at least one charging port on the vehicle."
            },
            {
                "name": "Fuel door location",
                "value": 289407240,
                "data_enums": [
                    "PortLocationType"
                ],
                "data_enum": "PortLocationType",
                "description": "Fuel door location\nThis property must communicate the location of the fuel door on the vehicle. This property does not apply to electric vehicles. That is, if INFO_FUEL_TYPE only contains FuelType::FUEL_TYPE_ELECTRIC, this property must not be implemented. For EVs, implement INFO_EV_PORT_LOCATION or INFO_MULTI_EV_PORT_LOCATIONS."
            },
            {
                "name": "EV port location",
                "value": 289407241,
                "data_enums": [
                    "PortLocationType"
                ],
                "data_enum": "PortLocationType",
                "description": "EV port location\nThis property must communicate the location of the charging port on the EV using the PortLocationType enum. If there are multiple ports available on the vehicle, this property must return the port that allows the fastest charging. To communicate all port locations, use INFO_MULTI_EV_PORT_LOCATIONS."
            },
            {
                "name": "INFO_DRIVER_SEAT",
                "value": 356516106,
                "data_enums": [
                    "VehicleAreaSeat"
                ],
                "data_enum": "VehicleAreaSeat",
                "description": "Driver's seat location VHAL implementations must ignore the areaId. Use VehicleArea:GLOBAL."
            },
            {
                "name": "INFO_EXTERIOR_DIMENSIONS",
                "value": 289472779,
                "description": "Exterior dimensions of vehicle.\nint32Values[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"
            },
            {
                "name": "Multiple EV port locations",
                "value": 289472780,
                "data_enums": [
                    "PortLocationType"
                ],
                "data_enum": "PortLocationType",
                "description": "Multiple EV port locations\nImplement 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[1] = PortLocationType::REAR_LEFT\nIf only one port exists on the vehicle, this property's value should list just one element. See INFO_EV_PORT_LOCATION for describing just one port location."
            },
            {
                "name": "PERF_ODOMETER",
                "value": 291504644,
                "description": "Current odometer value of the vehicle"
            },
            {
                "name": "Speed of the vehicle",
                "value": 291504647,
                "description": "Speed of the vehicle\nThe 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."
            },
            {
                "name": "PERF_VEHICLE_SPEED_DISPLAY",
                "value": 291504648,
                "description": "Speed of the vehicle for displays\nSome cars display a slightly slower speed than the actual speed.  This is usually displayed on the speedometer."
            },
            {
                "name": "PERF_STEERING_ANGLE",
                "value": 291504649,
                "description": "Front bicycle model steering angle for vehicle\nAngle is in degrees.  Left is negative.\nThis property is independent of the angle of the steering wheel. This property must communicate the angle of the front wheels with respect to the vehicle, not the angle of the steering wheel."
            },
            {
                "name": "PERF_REAR_STEERING_ANGLE",
                "value": 291504656,
                "description": "Rear bicycle model steering angle for vehicle\nAngle is in degrees.  Left is negative.\nThis property is independent of the angle of the steering wheel. This property must communicate the angle of the rear wheels with respect to the vehicle, not the angle of the steering wheel."
            },
            {
                "name": "Temperature of engine coolant",
                "value": 291504897,
                "description": "Temperature of engine coolant"
            },
            {
                "name": "Engine oil level",
                "value": 289407747,
                "data_enums": [
                    "VehicleOilLevel"
                ],
                "data_enum": "VehicleOilLevel",
                "description": "Engine oil level"
            },
            {
                "name": "Temperature of engine oil",
                "value": 291504900,
                "description": "Temperature of engine oil"
            },
            {
                "name": "Engine rpm",
                "value": 291504901,
                "description": "Engine rpm"
            },
            {
                "name": "Reports wheel ticks",
                "value": 290521862,
                "description": "Reports wheel ticks\nThe 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.\nThe 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.\nint64Values[0] = reset count int64Values[1] = front left ticks int64Values[2] = front right ticks int64Values[3] = rear right ticks int64Values[4] = rear left ticks\nconfigArray is used to indicate the micrometers-per-wheel-tick value and which wheels are supported.  configArray is set as follows:\nconfigArray[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\nNOTE:  If a wheel is not supported, its value shall always be set to 0.\nVehiclePropValue.timestamp must be correctly filled in."
            },
            {
                "name": "Fuel level in milliliters",
                "value": 291504903,
                "description": "Fuel level in milliliters\nThis property must communicate the current amount of fuel remaining in the vehicle in milliliters. This property does not apply to electric vehicles. That is, if INFO_FUEL_TYPE only contains FuelType::FUEL_TYPE_ELECTRIC, this property must not be implemented. For EVs, implement EV_BATTERY_LEVEL.\nValue may not exceed INFO_FUEL_CAPACITY."
            },
            {
                "name": "Fuel door open",
                "value": 287310600,
                "description": "Fuel door open\nThis property must communicate whether the fuel door on the vehicle is open or not. This property does not apply to electric vehicles. That is, if INFO_FUEL_TYPE only contains FuelType::FUEL_TYPE_ELECTRIC, this property must not be implemented. For EVs, implement EV_CHARGE_PORT_OPEN.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "EV_BATTERY_LEVEL",
                "value": 291504905,
                "description": "Battery level for EV or hybrid vehicle\nReturns 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."
            },
            {
                "name": "EV_CURRENT_BATTERY_CAPACITY",
                "value": 291504909,
                "description": "Current usable battery capacity for EV or hybrid vehicle\nReturns the actual value of battery capacity, if EV or hybrid. This property captures the real-time usable 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."
            },
            {
                "name": "EV charge port open",
                "value": 287310602,
                "description": "EV charge port open\nIf the vehicle has multiple charging ports, this property must return true if any of the charge ports are open.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "EV charge port connected",
                "value": 287310603,
                "description": "EV charge port connected\nIf the vehicle has multiple charging ports, this property must return true if any of the charge ports are connected."
            },
            {
                "name": "EV_BATTERY_INSTANTANEOUS_CHARGE_RATE",
                "value": 291504908,
                "description": "EV instantaneous charge rate in milliwatts\nPositive value indicates battery is being charged. Negative value indicates battery being discharged."
            },
            {
                "name": "Range remaining",
                "value": 291504904,
                "description": "Range remaining\nMeters 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.\nThis 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."
            },
            {
                "name": "EV battery average temperature",
                "value": 291504910,
                "description": "EV battery average temperature\nExposes the temperature of the battery in an EV. If multiple batteries exist in the EV, or multiple temperature sensors exist, this property should be set to the mean or a meaningful weighted average that best represents the overall temperature of the battery system."
            },
            {
                "name": "Tire pressure",
                "value": 392168201,
                "description": "Tire pressure\nEach 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, } },"
            },
            {
                "name": "Critically low tire pressure",
                "value": 392168202,
                "description": "Critically low tire pressure\nThis 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."
            },
            {
                "name": "ENGINE_IDLE_AUTO_STOP_ENABLED",
                "value": 287310624,
                "description": "Represents feature for engine idle automatic stop.\nIf true, the vehicle may automatically shut off the engine when it is not needed and then automatically restart it when needed.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Impact detected.",
                "value": 289407792,
                "data_enums": [
                    "ImpactSensorLocation"
                ],
                "data_enum": "ImpactSensorLocation",
                "description": "Impact detected.\nBit flag property to relay information on whether an impact has occurred on a particular side of the vehicle as described through the ImpactSensorLocation enum. As a bit flag property, this property can be set to multiple ORed together values of the enum when necessary.\nFor the global area ID (0), the VehicleAreaConfig#supportedEnumValues array must be defined unless all bit flags of ImpactSensorLocation are supported."
            },
            {
                "name": "Currently selected gear",
                "value": 289408000,
                "data_enums": [
                    "VehicleGear"
                ],
                "data_enum": "VehicleGear",
                "description": "Currently selected gear\nThis is the gear selected by the user.\nValues 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,...}\nIn 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."
            },
            {
                "name": "CURRENT_GEAR",
                "value": 289408001,
                "data_enums": [
                    "VehicleGear"
                ],
                "data_enum": "VehicleGear",
                "description": "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.\nValues 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."
            },
            {
                "name": "Parking brake state.",
                "value": 287310850,
                "description": "Parking brake state.\nThis property is true indicates that the car's parking brake is currently engaged. False implies that the car's parking brake is currently disengaged."
            },
            {
                "name": "Auto-apply parking brake.",
                "value": 287310851,
                "description": "Auto-apply parking brake.\nThis 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.\nThis 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."
            },
            {
                "name": "EV_BRAKE_REGENERATION_LEVEL",
                "value": 289408012,
                "description": "Regenerative braking level of a electronic vehicle\nThe maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. All values between minInt32Value and maxInt32Value must be supported. The minInt32Value must be 0.\nThe maxInt32Value indicates the setting for the maximum amount of energy regenerated from braking. The minInt32Value indicates the setting for no regenerative braking.\nThis property is a more granular form of EV_REGENERATIVE_BRAKING_STATE. It allows the user to set a more specific level of regenerative braking if the states in EvRegenerativeBrakingState are not granular enough for the OEM.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Warning for fuel low level.",
                "value": 287310853,
                "description": "Warning for fuel low level.\nThis 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:\nFor 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."
            },
            {
                "name": "Night mode",
                "value": 287310855,
                "description": "Night mode\nTrue 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."
            },
            {
                "name": "TURN_SIGNAL_STATE",
                "value": 289408008,
                "data_enums": [
                    "VehicleTurnSignal"
                ],
                "data_enum": "VehicleTurnSignal",
                "description": "State of the vehicles turn signals"
            },
            {
                "name": "Represents ignition state",
                "value": 289408009,
                "data_enums": [
                    "VehicleIgnitionState"
                ],
                "data_enum": "VehicleIgnitionState",
                "description": "Represents ignition state"
            },
            {
                "name": "ABS is active",
                "value": 287310858,
                "description": "ABS is active\nSet 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."
            },
            {
                "name": "Traction Control is active",
                "value": 287310859,
                "description": "Traction Control is active\nSet 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."
            },
            {
                "name": "EV_STOPPING_MODE",
                "value": 289408013,
                "data_enums": [
                    "EvStoppingMode"
                ],
                "data_enum": "EvStoppingMode",
                "description": "Represents property for the current stopping mode of the vehicle.\nFor the global area ID (0), the VehicleAreaConfig#supportedEnumValues must be defined unless all enum values of EvStoppingMode are supported.\nThe EvStoppingMode enum may be extended to include more states in the future.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "ELECTRONIC_STABILITY_CONTROL_ENABLED",
                "value": 287310862,
                "description": "Enable or disable Electronic Stability Control (ESC).\nSet true to enable ESC and false to disable ESC. When ESC is enabled, a system in the vehicle should be controlling the tires during instances with high risk of skidding to actively prevent the same from happening.\nIn general, ELECTRONIC_STABILITY_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 high, that information must be conveyed through the ErrorState values in the ELECTRONIC_STABILITY_CONTROL_STATE property.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "ELECTRONIC_STABILITY_CONTROL_STATE",
                "value": 289408015,
                "data_enums": [
                    "ElectronicStabilityControlState",
                    "ErrorState"
                ],
                "data_enum": "ElectronicStabilityControlState",
                "description": "Electronic Stability Control (ESC) state.\nReturns the current state of ESC. This property must always return a valid state defined in ElectronicStabilityControlState or ErrorState. It must not surface errors through StatusCode and must use the supported error states instead.\nFor the global area ID (0), the VehicleAreaConfig#supportedEnumValues array must be defined unless all states of both ElectronicStabilityControlState (including OTHER, which is not recommended) and ErrorState are supported."
            },
            {
                "name": "Fan speed setting",
                "value": 356517120,
                "description": "Fan speed setting\nThe maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe minInt32Value indicates the lowest fan speed. The maxInt32Value indicates the highest fan speed.\nThis property is not in any particular unit but in a specified range of relative speeds.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Fan direction setting",
                "value": 356517121,
                "data_enums": [
                    "VehicleHvacFanDirection"
                ],
                "data_enum": "VehicleHvacFanDirection",
                "description": "Fan direction setting\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "HVAC current temperature.",
                "value": 358614274,
                "description": "HVAC current temperature."
            },
            {
                "name": "HVAC_TEMPERATURE_SET",
                "value": 358614275,
                "description": "HVAC target temperature set in Celsius.\nThe minFloatValue and maxFloatValue in VehicleAreaConfig must be defined.\nThe minFloatValue indicates the minimum temperature setting in Celsius. The maxFloatValue indicates the maximum temperature setting in Celsius.\nIf all the values between minFloatValue and maxFloatValue are not supported, the configArray can be used to list the valid temperature values that can be set. It also describes a lookup table to convert the temperature from Celsius to Fahrenheit and vice versa for this vehicle. The configArray must be defined if standard unit conversion is not supported on this vehicle.\nThe 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.\nThe minFloatValue and maxFloatValue in VehicleAreaConfig must be equal to configArray[0] and configArray[1] respectively.\nFor example, if the vehicle supports temperature values as: [16.0, 16.5, 17.0 ,..., 28.0] in Celsius [60.5, 61.5, 62.5 ,..., 84.5] in Fahrenheit The configArray should be configArray = {160, 280, 5, 605, 845, 10}.\nIdeally, the ratio of the Celsius increment to the Fahrenheit increment should be as close to the actual ratio of 1 degree Celsius to 1.8 degrees Fahrenheit.\nThere must be a one to one mapping of all Celsius values to Fahrenheit values defined by the configArray. The configArray will be used by clients to convert this property's temperature from Celsius to Fahrenheit. Also, it will let clients know what Celsius value to set the property to achieve their desired Fahreneheit value for the system. If the ECU does not have a one to one mapping of all Celsius values to Fahrenheit values, then the config array should only define the list of Celsius and Fahrenheit values that do have a one to one mapping.\nFor example, if the ECU supports Celsius values from 16 to 28 and Fahrenheit values from 60 to 85 both with an increment of 1, then one possible configArray would be {160, 280, 10, 600, 840, 20}. In this case, 85 would not be a supported temperature.\nAny value set in between a valid value should be rounded to the closest valid value.\nIt is highly recommended that the OEM also implement the HVAC_TEMPERATURE_VALUE_SUGGESTION vehicle property because it provides applications a simple method for determining temperature values that can be set for this vehicle and for converting values between Celsius and Fahrenheit.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "HVAC_DEFROSTER",
                "value": 320865540,
                "description": "Fan-based defrost for designated window.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "HVAC_AC_ON",
                "value": 354419973,
                "description": "On\/off AC for designated areaId\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "On\/off max AC",
                "value": 354419974,
                "description": "On\/off max AC\nWhen 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "On\/off max defrost",
                "value": 354419975,
                "description": "On\/off max defrost\nWhen 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Recirculation on\/off",
                "value": 354419976,
                "description": "Recirculation on\/off\nControls 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "HVAC_DUAL_ON",
                "value": 354419977,
                "description": "Enable temperature coupling between areas.\nThe 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].\nExample: 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]\nWhen 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).\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "HVAC_AUTO_ON",
                "value": 354419978,
                "description": "On\/off automatic climate control.\nIf true, automatic climate control is on. If false, automatic climate control is off.\nIf 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Seat heating\/cooling",
                "value": 356517131,
                "description": "Seat heating\/cooling\nThe maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe 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.\nThis property is not in any particular unit, but in a specified range of relative temperature settings.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Side Mirror Heat",
                "value": 339739916,
                "description": "Side Mirror Heat\nIncreasing values denote higher heating levels for side mirrors.\nThe maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe maxInt32Value in the config data represents the maximum heating level. The minInt32Value in the config data MUST be zero and indicates no heating.\nThis property is not in any particular unit but in a specified range of relative heating settings.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Steering Wheel Heating\/Cooling",
                "value": 289408269,
                "description": "Steering Wheel Heating\/Cooling\nSets the amount of heating\/cooling for the steering wheel.\nThe maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe 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.\nThis property is not in any particular unit but in a specified range of heating settings.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Temperature units for display",
                "value": 289408270,
                "data_enums": [
                    "VehicleUnit"
                ],
                "data_enum": "VehicleUnit",
                "description": "Temperature units for display\nIndicates 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\nThis 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.\nIf 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Actual fan speed",
                "value": 356517135,
                "description": "Actual fan speed"
            },
            {
                "name": "HVAC_POWER_ON",
                "value": 354419984,
                "description": "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).\n[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.\nHvacPower_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.\nAreaID mapping for HVAC_POWER_ON property must contain all AreaIDs that HvacPower_DependentProperties are mapped to.\nExample 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].\nExample 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\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Fan Positions Available",
                "value": 356582673,
                "data_enums": [
                    "VehicleHvacFanDirection"
                ],
                "data_enum": "VehicleHvacFanDirection",
                "description": "Fan Positions Available\nThis 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)"
            },
            {
                "name": "Automatic recirculation on\/off",
                "value": 354419986,
                "description": "Automatic recirculation on\/off\nWhen automatic recirculation is ON, the HVAC system may automatically switch to recirculation mode if the vehicle detects poor incoming air quality.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Seat ventilation",
                "value": 356517139,
                "description": "Seat ventilation\nThe maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe minInt32Value must be 0. The maxInt32Value indicates the maximum ventilation setting available for the seat.\nThis property is not in any particular unit but in the specified range of ventilation settings.\nUsed 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Electric defrosters' status",
                "value": 320865556,
                "description": "Electric defrosters' status\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "HVAC_TEMPERATURE_VALUE_SUGGESTION",
                "value": 291570965,
                "description": "Suggested values for setting HVAC temperature.\nImplement the property to help applications understand the closest supported temperature value in Celsius or Fahrenheit.\nfloatValues[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.\nAn 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. The suggested values must conform to the values that can be derived from the HVAC_TEMPERATURE_SET configArray. In other words, the suggested values and the table of values from the configArray should be the same. It is recommended for the OEM to add custom logic in their VHAL implementation in order to avoid making requests to the HVAC ECU.\nThe logic can be as follows: For converting the temperature from celsius to fahrenheit use the following: \/\/ Given tempC and the configArray float minTempC = configArray[0] \/ 10.0; float temperatureIncrementCelsius = configArray[2] \/ 10.0; float minTempF = configArray[3] \/ 10.0; float temperatureIncrementFahrenheit = configArray[5] \/ 10.0; \/\/ Round to the closest increment int numIncrements = round((tempC - minTempC) \/ temperatureIncrementCelsius); tempF = temperatureIncrementFahrenheit * numIncrements + minTempF;\nFor 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.\nAnother 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."
            },
            {
                "name": "Distance units for display",
                "value": 289408512,
                "data_enums": [
                    "VehicleUnit"
                ],
                "data_enum": "VehicleUnit",
                "description": "Distance units for display\nIndicates which units the car is using to display distances to the user. Eg. Mile, Meter Kilometer.\nDistance 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\nIf 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Fuel volume units for display",
                "value": 289408513,
                "data_enums": [
                    "VehicleUnit"
                ],
                "data_enum": "VehicleUnit",
                "description": "Fuel volume units for display\nIndicates which units the car is using to display fuel volume to the user. Eg. Liter or Gallon.\nVehiclePropConfig.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\nIf 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "TIRE_PRESSURE_DISPLAY_UNITS",
                "value": 289408514,
                "data_enums": [
                    "VehicleUnit"
                ],
                "data_enum": "VehicleUnit",
                "description": "Tire pressure units for display\nIndicates which units the car is using to display tire pressure to the user. Eg. PSI, Bar or Kilopascal.\nVehiclePropConfig.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\nIf 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "EV battery units for display",
                "value": 289408515,
                "data_enums": [
                    "VehicleUnit"
                ],
                "data_enum": "VehicleUnit",
                "description": "EV battery units for display\nIndicates 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).\nVehiclePropConfig.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\nIf 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "FUEL_CONSUMPTION_UNITS_DISTANCE_OVER_VOLUME",
                "value": 287311364,
                "description": "Fuel consumption units for display\nIndicates 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Speed units for display",
                "value": 289408517,
                "description": "Speed units for display\nIndicates type of units the car is using to display speed to user. Eg. m\/s, km\/h, or mph.\nVehiclePropConfig.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\nIf 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "EXTERNAL_CAR_TIME",
                "value": 290457096,
                "description": "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.\nThis 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)\nWhenever 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.\nNote 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\nIt 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.\nWARNING: The value available through this property should not be dependent on value written by Android to ANDROID_EPOCH_TIME property in any way."
            },
            {
                "name": "ANDROID_EPOCH_TIME",
                "value": 290457094,
                "description": "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.\nCarServices 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.\nAAOS 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)\nNote 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"
            },
            {
                "name": "STORAGE_ENCRYPTION_BINDING_SEED",
                "value": 292554247,
                "description": "External encryption binding seed.\nThis 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."
            },
            {
                "name": "Outside temperature",
                "value": 291505923,
                "description": "Outside temperature\nThis property must communicate the temperature reading of the environment outside the vehicle. If there are multiple sensors for measuring the outside temperature, this property should be populated with the mean or a meaningful weighted average of the readings that will best represent the temperature of the outside environment."
            },
            {
                "name": "AP_POWER_STATE_REQ",
                "value": 289475072,
                "description": "Property to control power state of application processor\nIt is assumed that AP's power state is controlled by a separate power controller.\nFor configuration information, VehiclePropConfig.configArray must have bit flag combining values in VehicleApPowerStateConfigFlag.\nint32Values[0] : VehicleApPowerStateReq enum value int32Values[1] : additional parameter relevant for each state, 0 if not used."
            },
            {
                "name": "AP_POWER_STATE_REPORT",
                "value": 289475073,
                "description": "Property to report power state of application processor\nIt is assumed that AP's power state is controller by separate power controller.\nint32Values[0] : VehicleApPowerStateReport enum value int32Values[1] : Time in ms to wake up, if necessary.  Otherwise 0."
            },
            {
                "name": "AP_POWER_BOOTUP_REASON",
                "value": 289409538,
                "description": "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.\nint32Values[0] must be VehicleApPowerBootupReason."
            },
            {
                "name": "DISPLAY_BRIGHTNESS",
                "value": 289409539,
                "description": "Property to represent brightness of the display.\nSome 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.\nOnly one of DISPLAY_BRIGHTNESS and PER_DISPLAY_BRIGHTNESS should be implemented. If both are available, PER_DISPLAY_BRIGHTNESS is used by AAOS.\nIf 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."
            },
            {
                "name": "PER_DISPLAY_BRIGHTNESS",
                "value": 289475076,
                "description": "Property to represent brightness of the displays which are controlled separately.\nSome 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.\nOnly one of DISPLAY_BRIGHTNESS and PER_DISPLAY_BRIGHTNESS should be implemented. If both are available, PER_DISPLAY_BRIGHTNESS is used by AAOS.\nThe display port uniquely identifies a physical connector on the device for display output, ranging from 0 to 255.\nint32Values[0] : display port int32Values[1] : brightness"
            },
            {
                "name": "Valet mode enabled",
                "value": 287312389,
                "description": "Valet mode enabled\nThis property allows the user to enable\/disable valet mode in their vehicle. Valet mode is a privacy and security setting that prevents an untrusted driver to access more private areas in the vehicle, such as the glove box or the trunk(s).\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Head up display (HUD) enabled",
                "value": 354421254,
                "description": "Head up display (HUD) enabled\nThis property allows the user to turn on\/off the HUD for their seat.\nEach HUD in the vehicle should be assigned to the seat that is intended to use it. For example, if there is a single HUD in the vehicle that is used by the driver so that they no longer need to continuously look at the instrument cluster, then this property should be defined with a single area ID equal to the driver's seat area value."
            },
            {
                "name": "HW_KEY_INPUT",
                "value": 289475088,
                "description": "Property to feed H\/W input events to android\nint32Values[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."
            },
            {
                "name": "HW_KEY_INPUT_V2",
                "value": 367004177,
                "description": "Property to feed H\/W input events to android\nint32array[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\nint64array[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"
            },
            {
                "name": "HW_MOTION_INPUT",
                "value": 367004178,
                "description": "Property to feed H\/W input events to android\nint32array[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\nfloatArray[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\nint64array[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"
            },
            {
                "name": "HW_ROTARY_INPUT",
                "value": 289475104,
                "data_enums": [
                    "RotaryInputType"
                ],
                "data_enum": "RotaryInputType",
                "description": "Property to feed H\/W rotary events to android\nint32Values[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\nVehiclePropValue.timestamp: when the rotation occurred. If the number of detents is > 1 or < -1, this is when the first detent of rotation occurred."
            },
            {
                "name": "HW_CUSTOM_INPUT",
                "value": 289475120,
                "data_enums": [
                    "CustomInputType"
                ],
                "data_enum": "CustomInputType",
                "description": "Defines a custom OEM partner input event.\nThis 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.\nThe Android properties are:\nint32Values[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."
            },
            {
                "name": "Door position",
                "value": 373295872,
                "description": "Door position\nThe maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe minInt32Value indicates the door is closed. The minInt32Value must be 0. The maxInt32Value indicates the door is fully open.\nValues in between minInt32Value and maxInt32Value indicate a transition state between the closed and fully open positions.\nThis property is not in any particular unit but in a specified range of relative positions.\nSome vehicles (minivans) can open the door electronically. Hence, the ability to write this property.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Door move",
                "value": 373295873,
                "description": "Door move\nThe maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe maxInt32Value represents the maximum movement speed of the door while opening. The minInt32Value represents the maximum movement speed of the door while closing.\nLarger 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.\nThis property is not in any particular unit but in a specified range of relative movement speeds.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Door lock",
                "value": 371198722,
                "description": "Door lock\n'true' indicates door is locked\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "DOOR_CHILD_LOCK_ENABLED",
                "value": 371198723,
                "description": "Door child lock feature enabled\nReturns true if the door child lock feature is enabled and false if it is disabled.\nIf enabled, the door is unable to be opened from the inside.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Mirror Z Position",
                "value": 339741504,
                "description": "Mirror Z Position\nThe maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe 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.\nValues in between minInt32Value and maxInt32Value indicate a transition state between the fully downward and fully upwards positions.\nThis property is not in any particular unit but in a specified range of relative positions.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Mirror Z Move",
                "value": 339741505,
                "description": "Mirror Z Move\nThe maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe 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.\nLarger 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.\nThis property is not in any particular unit but in a specified range of relative movement speeds.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Mirror Y Position",
                "value": 339741506,
                "description": "Mirror Y Position\nThe maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe 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.\nValues in between minInt32Value and maxInt32Value indicate a transition state between the left extreme and right extreme positions.\nThis property is not in any particular unit but in a specified range of relative positions.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Mirror Y Move",
                "value": 339741507,
                "description": "Mirror Y Move\nThe maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe 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.\nLarger 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.\nThis property is not in any particular unit but in a specified range of relative movement speeds.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Mirror Lock",
                "value": 287312708,
                "description": "Mirror Lock\nTrue indicates mirror positions are locked and not changeable\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Mirror Fold",
                "value": 287312709,
                "description": "Mirror Fold\nTrue indicates mirrors are folded\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "MIRROR_AUTO_FOLD_ENABLED",
                "value": 337644358,
                "description": "Represents property for Mirror Auto Fold feature.\nThis 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "MIRROR_AUTO_TILT_ENABLED",
                "value": 337644359,
                "description": "Represents property for Mirror Auto Tilt feature.\nThis 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Seat memory select",
                "value": 356518784,
                "description": "Seat memory select\nThis 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).\nFor 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."
            },
            {
                "name": "Seat memory set",
                "value": 356518785,
                "description": "Seat memory set\nThis 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."
            },
            {
                "name": "Seatbelt buckled",
                "value": 354421634,
                "description": "Seatbelt buckled\nTrue indicates belt is buckled.\nWrite access indicates automatic seat buckling capabilities.  There are no known cars at this time, but you never know...\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Seatbelt height position",
                "value": 356518787,
                "description": "Seatbelt height position\nAdjusts the shoulder belt anchor point.\nThe maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe 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.\nValues in between minInt32Value and maxInt32Value indicate a transition state between the lowest and highest positions.\nThis property is not in any particular unit but in a specified range of relative positions.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Seatbelt height move",
                "value": 356518788,
                "description": "Seatbelt height move\nThe maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe 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.\nLarger 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.\nThis property is not in any particular unit but in a specified range of relative movement speeds.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Seat fore\/aft position",
                "value": 356518789,
                "description": "Seat fore\/aft position\nSets the seat position forward and backwards.\nThe maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe minInt32Value indicates the seat is at its rearward-most linear position. The maxInt32Value indicates the seat is at its forward-most linear position.\nValues in between minInt32Value and maxInt32Value indicate a transition state between the closest and farthest positions.\nThis property is not in any particular unit but in a specified range of relative positions.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Seat fore\/aft move",
                "value": 356518790,
                "description": "Seat fore\/aft move\nThis property moves the entire seat forward\/backward in the direction that it is facing.\nThe maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe 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.\nLarger 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.\nThis property is not in any particular unit but in a specified range of relative movement speeds.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Seat backrest angle 1 position",
                "value": 356518791,
                "description": "Seat backrest angle 1 position\nBackrest angle 1 is the actuator closest to the bottom of the seat.\nThe maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe 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.\nValues in between minInt32Value and maxInt32Value indicate a transition state between the full recline and upright\/forward positions.\nThis property is not in any particular unit but in a specified range of relative positions.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Seat backrest angle 1 move",
                "value": 356518792,
                "description": "Seat backrest angle 1 move\nThe maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe 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.\nLarger 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.\nThis property is not in any particular unit but in a specified range of relative movement speeds.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Seat backrest angle 2 position",
                "value": 356518793,
                "description": "Seat backrest angle 2 position\nBackrest angle 2 is the next actuator up from the bottom of the seat.\nThe maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe 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).\nValues in between minInt32Value and maxInt32Value indicate a transition state between the full recline and upright\/forward positions.\nThis property is not in any particular unit but in a specified range of relative positions.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Seat backrest angle 2 move",
                "value": 356518794,
                "description": "Seat backrest angle 2 move\nThe maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe 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.\nLarger 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.\nThis property is not in any particular unit but in a specified range of relative movement speeds.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Seat height position",
                "value": 356518795,
                "description": "Seat height position\nThe maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe minInt32Value indicates the seat is in its lowest position. The maxInt32Value indicates the seat is in its highest position.\nValues in between minInt32Value and maxInt32Value indicate a transition state between the lowest and highest positions.\nThis property is not in any particular unit but in a specified range of relative positions.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Seat height move",
                "value": 356518796,
                "description": "Seat height move\nThe maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe 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.\nLarger 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.\nThis property is not in any particular unit but in a specified range of relative movement speeds.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Seat depth position",
                "value": 356518797,
                "description": "Seat depth position\nSets the seat depth, distance from back rest to front edge of seat.\nThe maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe 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).\nValues in between minInt32Value and maxInt32Value indicate a transition state between the shallowest and deepest positions.\nThis property is not in any particular unit but in a specified range of relative positions.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Seat depth move",
                "value": 356518798,
                "description": "Seat depth move\nThe maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe 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.\nLarger 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.\nThis property is not in any particular unit but in a specified range of relative movement speeds.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Seat tilt position",
                "value": 356518799,
                "description": "Seat tilt position\nThe maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe 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.\nValues in between minInt32Value and maxInt32Value indicate a transition state between the lowest and highest positions.\nThis property is not in any particular unit but in a specified range of relative positions.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Seat tilt move",
                "value": 356518800,
                "description": "Seat tilt move\nThe maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe 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.\nLarger 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.\nThis property is not in any particular unit but in a specified range of relative movement speeds.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Lumber fore\/aft position",
                "value": 356518801,
                "description": "Lumber fore\/aft position\nThe maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe 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).\nValues in between minInt32Value and maxInt32Value indicate a transition state between the forward and rearward positions.\nThis property is not in any particular unit but in a specified range of relative positions.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Lumbar fore\/aft move",
                "value": 356518802,
                "description": "Lumbar fore\/aft move\nThe maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe 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.\nLarger 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.\nThis property is not in any particular unit but in a specified range of relative movement speeds.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Lumbar side support position",
                "value": 356518803,
                "description": "Lumbar side support position\nThe maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe 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).\nValues in between minInt32Value and maxInt32Value indicate a transition state between the thinnest and widest positions.\nThis property is not in any particular unit but in a specified range of relative positions.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Lumbar side support move",
                "value": 356518804,
                "description": "Lumbar side support move\nThe maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe 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.\nLarger 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.\nThis property is not in any particular unit but in a specified range of relative movement speeds.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "SEAT_HEADREST_HEIGHT_POS",
                "value": 289409941,
                "description": "(Deprecated) Headrest height position\nThis 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.\nSets the headrest height. Max value indicates tallest setting. Min value indicates shortest setting.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Headrest height position",
                "value": 356518820,
                "description": "Headrest height position\nSets the headrest height for supported seats. VehiclePropConfig.areaConfigs specifies which seats are supported.\nThe maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe minInt32Value indicates the headrest is in its lowest position. The maxInt32Value indicates the headrest is in its highest position.\nValues in between minInt32Value and maxInt32Value indicate a transition state between the lowest and highest positions.\nThis property is not in any particular unit but in a specified range of relative positions.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Headrest height move",
                "value": 356518806,
                "description": "Headrest height move\nThe maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe 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.\nLarger 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.\nThis property is not in any particular unit but in a specified range of relative movement speeds.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Headrest angle position",
                "value": 356518807,
                "description": "Headrest angle position\nThe maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe minInt32Value indicates the headrest is in its full recline position. The maxInt32Value indicates the headrest is in its most upright\/forward position.\nValues in between minInt32Value and maxInt32Value indicate a transition state between the full recline and most upright\/forward positions.\nThis property is not in any particular unit but in a specified range of relative positions.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Headrest angle move",
                "value": 356518808,
                "description": "Headrest angle move\nThe maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe 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.\nLarger 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.\nThis property is not in any particular unit but in a specified range of relative movement speeds.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Headrest fore\/aft position",
                "value": 356518809,
                "description": "Headrest fore\/aft position\nThe maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe minInt32Value indicates the headrest is in its rearward-most linear position. The maxInt32Value indicates the headrest is in its forward-most linear position.\nValues in between minInt32Value and maxInt32Value indicate a transition state between the forward and rearward positions.\nThis property is not in any particular unit but in a specified range of relative positions.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Headrest fore\/aft move",
                "value": 356518810,
                "description": "Headrest fore\/aft move\nThe maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe 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.\nLarger 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.\nThis property is not in any particular unit but in a specified range of relative movement speeds.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "SEAT_FOOTWELL_LIGHTS_STATE",
                "value": 356518811,
                "data_enums": [
                    "VehicleLightState"
                ],
                "data_enum": "VehicleLightState",
                "description": "Represents property for the seat footwell lights state.\nSEAT_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).\nThis property should only be implemented if SEAT_FOOTWELL_LIGHTS_STATE's value may be different from that of CABIN_LIGHTS_STATE.\nFor each supported area ID, the VehicleAreaConfig#supportedEnumValues must be defined unless all enum values of VehicleLightState are supported."
            },
            {
                "name": "SEAT_FOOTWELL_LIGHTS_SWITCH",
                "value": 356518812,
                "data_enums": [
                    "VehicleLightSwitch"
                ],
                "data_enum": "VehicleLightSwitch",
                "description": "Represents property for the seat footwell lights switch.\nSEAT_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).\nThis property should only be implemented if SEAT_FOOTWELL_LIGHTS_SWITCH's value may be different from that of CABIN_LIGHTS_SWITCH.\nFor each supported area ID, the VehicleAreaConfig#supportedEnumValues must be defined unless all enum values of VehicleLightSwitch are supported.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "SEAT_EASY_ACCESS_ENABLED",
                "value": 354421661,
                "description": "Represents property for Seat easy access feature.\nIf 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "SEAT_AIRBAG_ENABLED",
                "value": 354421662,
                "description": "Represents feature to enable\/disable a seat's ability to deploy airbag(s) when triggered (e.g. by a crash).\nIf 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.\nThis property can be set to VehiclePropertyAccess.READ read only for the sake of regulation or safety concerns.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Seat airbags deployed",
                "value": 356518821,
                "data_enums": [
                    "VehicleAirbagLocation"
                ],
                "data_enum": "VehicleAirbagLocation",
                "description": "Seat airbags deployed\nBit 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.\nEnums 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.\nFor each seat area ID, the VehicleAreaConfig#supportedEnumValues array must be defined unless all states of VehicleAirbagLocation are supported (including OTHER, which is not recommended)."
            },
            {
                "name": "SEAT_CUSHION_SIDE_SUPPORT_POS",
                "value": 356518815,
                "description": "Represents property for seat’s hipside (bottom cushion’s side) support position.\nThe maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe 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).\nValues in between minInt32Value and maxInt32Value indicate a transition state between the thinnest and widest positions.\nThis property is not in any particular unit but in a specified range of relative positions.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "SEAT_CUSHION_SIDE_SUPPORT_MOVE",
                "value": 356518816,
                "description": "Represents property for movement direction and speed of seat cushion side support.\nThe maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe 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).\nLarger 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.\nThis property is not in any particular unit but in a specified range of relative movement speeds.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "SEAT_LUMBAR_VERTICAL_POS",
                "value": 356518817,
                "description": "Represents property for seat’s lumbar support vertical position.\nThe maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe maxInt32Value indicates the lumbar support's highest position. The minInt32Value indicates the lumbar support's lowest position.\nValues in between minInt32Value and maxInt32Value indicate a transition state between the lowest and highest positions.\nThis property is not in any particular unit but in a specified range of relative positions.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "SEAT_LUMBAR_VERTICAL_MOVE",
                "value": 356518818,
                "description": "Represents property for vertical movement direction and speed of seat lumbar support.\nThe maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe 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.\nLarger 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.\nThis property is not in any particular unit but in a specified range of relative movement speeds.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "SEAT_WALK_IN_POS",
                "value": 356518819,
                "description": "Represents property that indicates the current walk-in position of the seat.\nThe maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe minInt32Value indicates the normal seat position. The minInt32Value must be 0. The maxInt32Value indicates the seat is in the full walk-in position.\nValues in between minInt32Value and maxInt32Value indicate a transition state between the normal and walk-in positions.\nThis property is not in any particular unit but in a specified range of relative positions.\nThe area ID must match the seat that actually moves when the walk-in feature activates, not the intended seat the passengers will sit in.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "SEAT_BELT_PRETENSIONER_DEPLOYED",
                "value": 354421670,
                "description": "Seat belt pretensioner deployed.\nProperty 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.\nIf 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"
            },
            {
                "name": "Seat Occupancy",
                "value": 356518832,
                "data_enums": [
                    "VehicleSeatOccupancyState"
                ],
                "data_enum": "VehicleSeatOccupancyState",
                "description": "Seat Occupancy\nIndicates 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."
            },
            {
                "name": "Window Position",
                "value": 322964416,
                "description": "Window Position\nThe maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe 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.\nValues in between minInt32Value and maxInt32Value indicate a transition state between the closed\/fully open out-of-plane and fully open positions.\nThis property is not in any particular unit but in a specified range of relative positions.\nFor 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\nNote that in this mode, 0 indicates the window is closed.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Window Move",
                "value": 322964417,
                "description": "Window Move\nThe maxInt32Value and minInt32Value in each VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe 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.\nLarger 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.\nThis property is not in any particular unit but in a specified range of relative movement speeds.\nFor a window that may open out of plane (i.e. vent mode of sunroof) this parameter will work as follows:\nIf sunroof is open: Max = open the sunroof further, automatically stop when fully open. Min = close the sunroof, automatically stop when sunroof is closed.\nIf 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.\nIf 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Window Child Lock",
                "value": 320867268,
                "description": "Window Child Lock\nTrue indicates the window is child-locked.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "WINDSHIELD_WIPERS_PERIOD",
                "value": 322964421,
                "description": "Windshield wipers period (milliseconds).\nReturns 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.\nWhen an intermittent wiper setting is selected, this property value must be set to 0 during the \"pause\" period of the intermittent wiping.\nThe 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."
            },
            {
                "name": "Windshield wipers state.",
                "value": 322964422,
                "data_enums": [
                    "WindshieldWipersState"
                ],
                "data_enum": "WindshieldWipersState",
                "description": "Windshield wipers state.\nReturns 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).\nIf 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.\nFor each supported area ID, the VehicleAreaConfig#supportedEnumValues array must be defined unless all states in WindshieldWipersState are supported (including OTHER, which is not recommended)."
            },
            {
                "name": "Windshield wipers switch.",
                "value": 322964423,
                "data_enums": [
                    "WindshieldWipersSwitch"
                ],
                "data_enum": "WindshieldWipersSwitch",
                "description": "Windshield wipers switch.\nRepresents 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).\nFor each supported area ID, the VehicleAreaConfig#supportedEnumValues array must be defined unless all states in WindshieldWipersSwitch are supported (including OTHER, which is not recommended).\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only.\nIf 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."
            },
            {
                "name": "Steering wheel depth position",
                "value": 289410016,
                "description": "Steering wheel depth position\nAll steering wheel properties' unique ids start from 0x0BE0.\nThe maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. All values between minInt32Value and maxInt32Value must be supported.\nThe maxInt32Value indicates the steering wheel position furthest from the driver. The minInt32Value indicates the steering wheel position closest to the driver.\nValues in between minInt32Value and maxInt32Value indicate a transition state between the closest and furthest positions.\nThis property is not in any particular unit but in a specified range of relative positions.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Steering wheel depth movement",
                "value": 289410017,
                "description": "Steering wheel depth movement\nThe maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. All values between minInt32Value and maxInt32Value must be supported.\nThe maxInt32Value indicates the steering wheel moving away from the driver. The minInt32Value indicates the steering wheel moving towards the driver.\nLarger 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.\nThis property is not in any particular unit but in a specified range of relative movement speeds.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Steering wheel height position",
                "value": 289410018,
                "description": "Steering wheel height position\nThe maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. All values between minInt32Value and maxInt32Value must be supported.\nThe maxInt32Value indicates the steering wheel being in the highest position. The minInt32Value indicates the steering wheel being in the lowest position.\nValues in between minInt32Value and maxInt32Value indicate a transition state between the lowest and highest positions.\nThis property is not in any particular unit but in a specified range of relative positions.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Steering wheel height movement",
                "value": 289410019,
                "description": "Steering wheel height movement\nThe maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. All values between minInt32Value and maxInt32Value must be supported.\nThe maxInt32Value indicates the steering wheel moving upwards. The minInt32Value indicates the steering wheel moving downwards.\nLarger 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.\nThis property is not in any particular unit but in a specified range of relative movement speeds.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "STEERING_WHEEL_THEFT_LOCK_ENABLED",
                "value": 287312868,
                "description": "Steering wheel theft lock feature enabled\nIf true, the steering wheel will lock automatically to prevent theft in certain situations.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Steering wheel locked",
                "value": 287312869,
                "description": "Steering wheel locked\nIf true, the steering wheel's position is locked and not changeable.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "STEERING_WHEEL_EASY_ACCESS_ENABLED",
                "value": 287312870,
                "description": "Steering wheel easy access feature enabled\nIf true, the driver’s steering wheel will automatically adjust to make it easier for the driver to enter and exit the vehicle.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "GLOVE_BOX_DOOR_POS",
                "value": 356518896,
                "description": "Property that represents the current position of the glove box door.\nThe maxInt32Value and minInt32Value in VehicleAreaConfig must be defined. All integers between minInt32Value and maxInt32Value must be supported.\nThe 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.\nValues in between minInt32Value and maxInt32Value indicate a transition state between the closed and fully open positions.\nThis property is not in any particular unit but in a specified range of relative positions.\nThe 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).\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Lock or unlock the glove box.",
                "value": 354421745,
                "description": "Lock or unlock the glove box.\nIf true, the glove box is locked. If false, the glove box is unlocked.\nThe 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).\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "VEHICLE_MAP_SERVICE",
                "value": 299895808,
                "description": "Vehicle Maps Service (VMS) message\nThis property uses MIXED data to communicate vms messages.\nIts 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;\nIVehicle#get must always return StatusCode::NOT_AVAILABLE."
            },
            {
                "name": "LOCATION_CHARACTERIZATION",
                "value": 289410064,
                "description": "Characterization of inputs used for computing location.\nThis 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.\nThe 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.\nWhen 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."
            },
            {
                "name": "ULTRASONICS_SENSOR_POSITION",
                "value": 406916128,
                "description": "Static data for the position of each ultrasonic sensor installed on the vehicle.\nEach individual sensor is identified by its unique VehicleAreaConfig#areaId and returns the sensor's position formatted as [x, y, z] where:\nint32Values[0] = x, the position of the sensor along the x-axis relative to the origin of the Android Automotive sensor coordinate frame in millimeters int32Values[1] = y, the position of the sensor along the y-axis relative to the origin of the Android Automotive sensor coordinate frame in millimeters. int32Values[2] = z, the position of the sensor along the z-axis relative to the origin of the Android Automotive sensor coordinate frame in millimeters.\nIf the data is aggregated by another ECU, then OEMs have the option of reporting the same reading across all included sensors or reporting a virtual representation of all the included sensors as if they were one sensor."
            },
            {
                "name": "ULTRASONICS_SENSOR_ORIENTATION",
                "value": 409013281,
                "description": "Static data for the orientation of each ultrasonic sensor installed on the vehicle.\nEach individual sensor is identified by its VehicleAreaConfig#areaId and returns the sensor's orientation formatted as [qw, qx, qy, qz] where:\nint32Values[0] = qw, the quaternion coefficient w within the quaterinion (w + xi + yj + zk) describing the rotation of the sensor relative to the Android Automotive sensor coordinate frame. int32Values[1] = qx, the quaternion coefficient x within the quaterinion (w + xi + yj + zk) describing the rotation of the sensor relative to the Android Automotive sensor coordinate frame. int32Values[2] = qy, the quaternion coefficient y within the quaterinion (w + xi + yj + zk) describing the rotation of the sensor relative to the Android Automotive sensor coordinate frame. int32Values[3] = qz, the quaternion coefficient z within the quaterinion (w + xi + yj + zk) describing the rotation of the sensor relative to the Android Automotive sensor coordinate frame.\nThis assumes each sensor uses the same axes conventions as Android Automotive.\nIf the data is aggregated by another ECU, then OEMs have the option of reporting the same reading across all included sensors or reporting a virtual representation of all the included sensors as if they were one sensor."
            },
            {
                "name": "ULTRASONICS_SENSOR_FIELD_OF_VIEW",
                "value": 406916130,
                "description": "Static data for the field of view of each ultrasonic sensor in degrees.\nEach individual sensor is identified by its VehicleAreaConfig#areaId and returns the sensor's field of view formatted as [horizontal, vertical] where:\nint32Values[0] = horizontal, the horizontal field of view for the specified ultrasonic sensor in degrees. int32Values[1] = vertical, the vertical field of view for the associated specified ultrasonic sensor in degrees.\nThis assumes each sensor uses the same axes conventions as Android Automotive.\nIf the data is aggregated by another ECU, then OEMs have the option of reporting the same reading across all included sensors or reporting a virtual representation of all the included sensors as if they were one sensor."
            },
            {
                "name": "ULTRASONICS_SENSOR_DETECTION_RANGE",
                "value": 406916131,
                "description": "Static data for the detection range of each ultrasonic sensor in millimeters.\nEach individual sensor is identified by its VehicleAreaConfig#areaId and returns the sensor's detection range formatted as [minimum, maximum] where:\nint32Values[0] = minimum, the minimum range detectable by the ultrasonic sensor in millimeters. int32Values[1] = maximum, the maximum range detectable by the ultrasonic sensor in millimeters.\nIf the data is aggregated by another ECU, then OEMs have the option of reporting the same reading across all included sensors or reporting a virtual representation of all the included sensors as if they were one sensor."
            },
            {
                "name": "ULTRASONICS_SENSOR_SUPPORTED_RANGES",
                "value": 406916132,
                "description": "Static data for the supported ranges of each ultrasonic sensor in millimeters.\nFor ultrasonic sensors that only support readings within a specific range. For example, if an ultrasonic sensor detects an object at 700mm, but can only report that an object has been detected between 500mm and 1000mm.\nEach individual sensor is identified by its VehicleAreaConfig#areaId and returns the sensor's supported ranges formatted as [range_min_1, range_max_1, range_min_2, range_max_2, ...] where:\nint32Values[0] = range_min_1, the minimum of one supported range by the specified sensor in millimeters, inclusive. int32Values[1] = range_max_1, the maximum of one supported range by the specified sensor in millimeters, inclusive. int32Values[2] = range_min_2, the minimum of another supported range by the specified sensor in millimeters, inclusive. int32Values[3] = range_max_2, the maximum of another supported range by the specified sensor in millimeters, inclusive.\nExample: - Ultrasonic sensor supports the following ranges: - 150mm to 499mm - 500mm to 999mm - 1000mm to 1500mm - The associated supported ranges should be formatted as: - int32Values[0] = 150 - int32Values[1] = 499 - int32Values[2] = 500 - int32Values[3] = 999 - int32Values[4] = 1000 - int32Values[5] = 1500\nIf this property is not defined, all the values within the ULTRASONICS_SENSOR_DETECTION_RANGE for the specified sensor are assumed to be supported.\nIf the data is aggregated by another ECU, then OEMs have the option of reporting the same reading across all included sensors or reporting a virtual representation of all the included sensors as if they were one sensor."
            },
            {
                "name": "ULTRASONICS_SENSOR_MEASURED_DISTANCE",
                "value": 406916133,
                "description": "The distance reading of the nearest detected object per sensor in millimeters.\nEach individual sensor is identified by its VehicleAreaConfig#areaId and returns the sensor's measured distance formatted as [distance, distance_error] where:\nint32Values[0] = distance, the measured distance of the nearest object in millimeters. If only a range is supported, this value must be set to the minimum supported distance in the detected range as specified in ULTRASONICS_SENSOR_SUPPORTED_RANGES. int32Values[1] = distance_error, the error of the measured distance value in millimeters.\nIf no object is detected, an empty vector must be returned. If distance_error is not available then an array of only the measured distance must be returned.\nIf the data is aggregated by another ECU, then OEMs have the option of reporting the same reading across all included sensors or reporting a virtual representation of all the included sensors as if they were one sensor."
            },
            {
                "name": "OBD2 Live Sensor Data",
                "value": 299896064,
                "description": "OBD2 Live Sensor Data\nReports a snapshot of the current (live) values of the OBD2 sensors available.\nThe configArray is set as follows: configArray[0] = number of vendor-specific integer-valued sensors configArray[1] = number of vendor-specific float-valued sensors\nThe 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);\nIt 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,.\nbytes 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.\nFor 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"
            },
            {
                "name": "OBD2 Freeze Frame Sensor Data",
                "value": 299896065,
                "description": "OBD2 Freeze Frame Sensor Data\nReports a snapshot of the value of the OBD2 sensors available at the time that a fault occurred and was detected.\nA configArray must be provided with the same meaning as defined for OBD2_LIVE_FRAME.\nThe 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).\nA 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.\nShould 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."
            },
            {
                "name": "OBD2 Freeze Frame Information",
                "value": 299896066,
                "description": "OBD2 Freeze Frame Information\nThis property describes the current freeze frames stored in vehicle memory and available for retrieval via OBD2_FREEZE_FRAME.\nThe 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."
            },
            {
                "name": "OBD2 Freeze Frame Clear",
                "value": 299896067,
                "description": "OBD2 Freeze Frame Clear\nThis property allows deletion of any of the freeze frames stored in vehicle memory, as described by OBD2_FREEZE_FRAME_INFO.\nThe configArray is set as follows: configArray[0] = 1 if the implementation is able to clear individual freeze frames by timestamp, 0 otherwise\nIVehicle#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."
            },
            {
                "name": "Headlights State",
                "value": 289410560,
                "data_enums": [
                    "VehicleLightState"
                ],
                "data_enum": "VehicleLightState",
                "description": "Headlights State\nReturn the current state of headlights."
            },
            {
                "name": "High beam lights state",
                "value": 289410561,
                "data_enums": [
                    "VehicleLightState"
                ],
                "data_enum": "VehicleLightState",
                "description": "High beam lights state\nReturn the current state of high beam lights."
            },
            {
                "name": "Fog light state",
                "value": 289410562,
                "data_enums": [
                    "VehicleLightState"
                ],
                "data_enum": "VehicleLightState",
                "description": "Fog light state\nReturn the current state of fog lights.\nIf 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.\nIf 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.\nIf 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.\nIf 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."
            },
            {
                "name": "Hazard light status",
                "value": 289410563,
                "data_enums": [
                    "VehicleLightState"
                ],
                "data_enum": "VehicleLightState",
                "description": "Hazard light status\nReturn the current status of hazard lights."
            },
            {
                "name": "Headlight switch",
                "value": 289410576,
                "data_enums": [
                    "VehicleLightSwitch"
                ],
                "data_enum": "VehicleLightSwitch",
                "description": "Headlight switch\nThe setting that the user wants.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "High beam light switch",
                "value": 289410577,
                "data_enums": [
                    "VehicleLightSwitch"
                ],
                "data_enum": "VehicleLightSwitch",
                "description": "High beam light switch\nThe setting that the user wants.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Fog light switch",
                "value": 289410578,
                "data_enums": [
                    "VehicleLightSwitch"
                ],
                "data_enum": "VehicleLightSwitch",
                "description": "Fog light switch\nThe setting that the user wants.\nIf 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.\nIf 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.\nIf 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.\nIf 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Hazard light switch",
                "value": 289410579,
                "data_enums": [
                    "VehicleLightSwitch"
                ],
                "data_enum": "VehicleLightSwitch",
                "description": "Hazard light switch\nThe setting that the user wants.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Cabin lights",
                "value": 289410817,
                "data_enums": [
                    "VehicleLightState"
                ],
                "data_enum": "VehicleLightState",
                "description": "Cabin lights\nReturn current status of cabin lights."
            },
            {
                "name": "Cabin lights switch",
                "value": 289410818,
                "data_enums": [
                    "VehicleLightSwitch"
                ],
                "data_enum": "VehicleLightSwitch",
                "description": "Cabin lights switch\nThe 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Reading lights",
                "value": 356519683,
                "data_enums": [
                    "VehicleLightState"
                ],
                "data_enum": "VehicleLightState",
                "description": "Reading lights\nReturn current status of reading lights."
            },
            {
                "name": "Reading lights switch",
                "value": 356519684,
                "data_enums": [
                    "VehicleLightSwitch"
                ],
                "data_enum": "VehicleLightSwitch",
                "description": "Reading lights switch\nThe 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Steering wheel lights state",
                "value": 289410828,
                "data_enums": [
                    "VehicleLightState"
                ],
                "data_enum": "VehicleLightState",
                "description": "Steering wheel lights state\nRepresents 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).\nThis property should only be implemented if STEERING_WHEEL_LIGHTS_STATE's value may be different from that of CABIN_LIGHTS_STATE.\nFor the global area ID (0), the VehicleAreaConfig#supportedEnumValues must be defined unless all enum values of VehicleLightState are supported."
            },
            {
                "name": "Steering wheel lights switch",
                "value": 289410829,
                "data_enums": [
                    "VehicleLightSwitch"
                ],
                "data_enum": "VehicleLightSwitch",
                "description": "Steering wheel lights switch\nRepresents 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).\nThis property should only be implemented if STEERING_WHEEL_LIGHTS_SWITCH's value may be different from that of CABIN_LIGHTS_SWITCH.\nFor the global area ID (0), the VehicleAreaConfig#supportedEnumValues must be defined unless all enum values of VehicleLightSwitch are supported.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "SUPPORT_CUSTOMIZE_VENDOR_PERMISSION",
                "value": 287313669,
                "description": "Support customize permissions for vendor properties\nImplement 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.\nFor 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."
            },
            {
                "name": "DISABLED_OPTIONAL_FEATURES",
                "value": 286265094,
                "description": "Allow disabling optional featurs from vhal.\nThis 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.\nValue read should include all features disabled with ',' separation. ex) \"com.android.car.user.CarUserNoticeService,storage_monitoring\""
            },
            {
                "name": "INITIAL_USER_INFO",
                "value": 299896583,
                "description": "Defines the initial Android user to be used during initialization.\nThis property is called by the Android system when it initializes and it lets the HAL define which Android user should be started.\nThis 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.\nFor example, on first boot, the request could be:\nint32[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)\nAnd if the HAL want to respond with the creation of an admin user called \"Owner\", the response would be:\nint32[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\nNotice 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.\nNOTE: 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)."
            },
            {
                "name": "SWITCH_USER",
                "value": 299896584,
                "description": "Defines a request to switch the foreground Android user.\nThis 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\nWhen 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).\nThe 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.\n1.LEGACY_ANDROID_SWITCH -----------------------\nCalled 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).\nThe 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).\nFor 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:\nint32[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)\n2.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.\nThe 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).\nFor 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:\nint32[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)\nIf the request succeeded, the HAL must update the property with:\nint32[0]: 42  \/\/ request id int32[1]: 3   \/\/ messageType = SwitchUserMessageType::VEHICLE_RESPONSE int32[2]: 1   \/\/ status = SwitchUserStatus::SUCCESS\nBut if it failed, the response would be something like:\nint32[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\n3.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.\n4.VEHICLE_REQUEST ------------------ Called by the HAL to request that the current foreground Android user is switched.\nThis 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.\nThe 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.\nFor example, if the current foreground Android user is 10 and the HAL asked it to switch to 11, the request would be:\nint32[0]: -108  \/\/ request id int32[1]: 4     \/\/ messageType = SwitchUserMessageType::VEHICLE_REQUEST int32[2]: 11    \/\/ Android user id\nIf the request succeeded and Android has 3 users (0, 10, 11), the response would be:\nint32[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)\nNotice 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).\n5.ANDROID_POST_SWITCH --------------------- Called by the Android System after a request to switch a user was made.\nThis 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:\n1. 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.\nThe HAL can update its internal state once it receives this request, but it doesn't need to reply back to the Android System.\nRequest: 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).\nResponse: none.\nExample: see VEHICLE_REQUEST section above."
            },
            {
                "name": "CREATE_USER",
                "value": 299896585,
                "description": "Called by the Android System after an Android user was created.\nThe HAL can use this property to create its equivalent user.\nThis 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.\nThe format of the request is defined by CreateUserRequest and the format of the response by CreateUserResponse.\nFor example, if system had 2 users (0 and 10) and a 3rd one (which is an ephemeral guest) was created, the request would be:\nint32[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\nThen if the request succeeded, the HAL would return:\nint32[0]: 42  \/\/ request id int32[1]: 1   \/\/ CreateUserStatus::SUCCESS\nBut if it failed:\nint32[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."
            },
            {
                "name": "REMOVE_USER",
                "value": 299896586,
                "description": "Called by the Android System after an Android user was removed.\nThe HAL can use this property to remove its equivalent user.\nThis 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.\nThe request is made by setting the VehiclePropValue with the contents defined by RemoveUserRequest.\nFor example, if system had 3 users (0, 10, and 11) and user 11 was removed, the request would be:\nint32[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)"
            },
            {
                "name": "USER_IDENTIFICATION_ASSOCIATION",
                "value": 299896587,
                "description": "Property used to associate (or query the association) the current user with vehicle-specific identification mechanisms (such as key FOB).\nThis 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.\nTo 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.\nTo 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.\nFor 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:\nint32[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)\nIf the user is associated with the FOB but not with the custom mechanism, the response would be:\nint32[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)\nThen to associate the user with the custom mechanism, a set request would be made:\nint32[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)\nIf the request succeeded, the response would be simply:\nint32[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)\nNotice 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:\nint32[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)"
            },
            {
                "name": "Enable\/request an EVS service.",
                "value": 289476368,
                "description": "Enable\/request an EVS service.\nThe property provides a generalized way to trigger EVS services.  VHAL should use this property to request Android to start or stop EVS service.\nint32Values[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.\nFor example, to enable rear view EVS service, android side can set the property value as [EvsServiceType::REAR_VIEW, EvsServiceState::ON]."
            },
            {
                "name": "POWER_POLICY_REQ",
                "value": 286265121,
                "description": "Defines a request to apply power policy.\nVHAL 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.\nstring: \"sample_policy_id\" \/\/ power policy ID"
            },
            {
                "name": "POWER_POLICY_GROUP_REQ",
                "value": 286265122,
                "description": "Defines a request to set the power polic group used to decide a default power policy per power status transition.\nVHAL 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.\nstring: \"sample_policy_group_id\" \/\/ power policy group ID"
            },
            {
                "name": "CURRENT_POWER_POLICY",
                "value": 286265123,
                "description": "Notifies the current power policy to VHAL layer.\nCar power policy service sets this property when the current power policy is changed.\nstring: \"sample_policy_id\" \/\/ power policy ID"
            },
            {
                "name": "WATCHDOG_ALIVE",
                "value": 290459441,
                "description": "Defines an event that car watchdog updates to tell it's alive.\nCar watchdog sets this property to system uptime in milliseconds at every 3 second. During the boot, the update may take longer time."
            },
            {
                "name": "WATCHDOG_TERMINATED_PROCESS",
                "value": 299896626,
                "description": "Defines a process terminated by car watchdog and the reason of termination.\nint32Values[0]: 1         \/\/ ProcessTerminationReason showing why a process is terminated. string: \"\/system\/bin\/log\" \/\/ Process execution command."
            },
            {
                "name": "VHAL_HEARTBEAT",
                "value": 290459443,
                "description": "Defines an event that VHAL signals to car watchdog as a heartbeat.\nIf 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."
            },
            {
                "name": "CLUSTER_SWITCH_UI",
                "value": 289410868,
                "description": "Starts the ClusterUI in cluster display.\nint32: 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."
            },
            {
                "name": "CLUSTER_DISPLAY_STATE",
                "value": 289476405,
                "description": "Changes the state of the cluster display.\nBounds: the area to render the cluster Activity. Inset: the area which Activity should avoid from placing any important information.\nint32[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'"
            },
            {
                "name": "CLUSTER_REPORT_STATE",
                "value": 299896630,
                "description": "Reports the current display state and ClusterUI state.\nClusterHome will send this message when it handles CLUSTER_SWITCH_UI, CLUSTER_DISPLAY_STATE.\nIn 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.\nint32[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]."
            },
            {
                "name": "CLUSTER_REQUEST_DISPLAY",
                "value": 289410871,
                "description": "Requests to change the cluster display state to show some ClusterUI.\nWhen 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.\nint32: the type of ClusterUI to show"
            },
            {
                "name": "CLUSTER_NAVIGATION_STATE",
                "value": 292556600,
                "description": "Informs the current navigation state.\nbytes: the serialized message of NavigationStateProto."
            },
            {
                "name": "ELECTRONIC_TOLL_COLLECTION_CARD_TYPE",
                "value": 289410873,
                "data_enums": [
                    "ElectronicTollCollectionCardType"
                ],
                "data_enum": "ElectronicTollCollectionCardType",
                "description": "Electronic Toll Collection card type.\nThis 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."
            },
            {
                "name": "ELECTRONIC_TOLL_COLLECTION_CARD_STATUS",
                "value": 289410874,
                "data_enums": [
                    "ElectronicTollCollectionCardStatus"
                ],
                "data_enum": "ElectronicTollCollectionCardStatus",
                "description": "Electronic Toll Collection card status.\nThis 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."
            },
            {
                "name": "Front fog lights state",
                "value": 289410875,
                "data_enums": [
                    "VehicleLightState"
                ],
                "data_enum": "VehicleLightState",
                "description": "Front fog lights state\nReturn 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."
            },
            {
                "name": "Front fog lights switch",
                "value": 289410876,
                "data_enums": [
                    "VehicleLightSwitch"
                ],
                "data_enum": "VehicleLightSwitch",
                "description": "Front fog lights switch\nThe 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Rear fog lights state",
                "value": 289410877,
                "data_enums": [
                    "VehicleLightState"
                ],
                "data_enum": "VehicleLightState",
                "description": "Rear fog lights state\nReturn 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."
            },
            {
                "name": "Rear fog lights switch",
                "value": 289410878,
                "data_enums": [
                    "VehicleLightSwitch"
                ],
                "data_enum": "VehicleLightSwitch",
                "description": "Rear fog lights switch\nThe 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "EV_CHARGE_CURRENT_DRAW_LIMIT",
                "value": 291508031,
                "description": "Indicates the maximum current draw threshold for charging set by the user\nconfigArray[0] is used to specify the max current draw allowed by the vehicle in Amperes.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "EV_CHARGE_PERCENT_LIMIT",
                "value": 291508032,
                "description": "Indicates the maximum charge percent threshold set by the user\nReturns a float value from 0 to 100.\nconfigArray 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Charging state of the car",
                "value": 289410881,
                "data_enums": [
                    "EvChargeState"
                ],
                "data_enum": "EvChargeState",
                "description": "Charging state of the car\nReturns the current charging state of the car.\nIf the vehicle has a target charge percentage other than 100, this property must return EvChargeState::STATE_FULLY_CHARGED when the battery charge level has reached the target level. See EV_CHARGE_PERCENT_LIMIT for more context."
            },
            {
                "name": "EV_CHARGE_SWITCH",
                "value": 287313730,
                "description": "Start or stop charging the EV battery\nThe setting that the user wants. Setting this property to true starts the battery charging and setting to false stops charging.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "EV_CHARGE_TIME_REMAINING",
                "value": 289410883,
                "description": "Estimated charge time remaining in seconds\nReturns 0 if the vehicle is not charging."
            },
            {
                "name": "EV_REGENERATIVE_BRAKING_STATE",
                "value": 289410884,
                "data_enums": [
                    "EvRegenerativeBrakingState"
                ],
                "data_enum": "EvRegenerativeBrakingState",
                "description": "Regenerative braking or one-pedal drive setting of the car\nReturns the current setting associated with the regenerative braking setting in the car\nIf the OEM requires more setting than those provided in EvRegenerativeBrakingState, the EV_BRAKE_REGENERATION_LEVEL property can be used instead, which provides a more granular way of providing the same information."
            },
            {
                "name": "TRAILER_PRESENT",
                "value": 289410885,
                "data_enums": [
                    "TrailerState"
                ],
                "data_enum": "TrailerState",
                "description": "Indicates if there is a trailer present or not.\nReturns the trailer state of the car."
            },
            {
                "name": "VEHICLE_CURB_WEIGHT",
                "value": 289410886,
                "description": "Vehicle’s curb weight in kilograms.\nReturns 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.\nconfigArray[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."
            },
            {
                "name": "GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT",
                "value": 289410887,
                "data_enums": [
                    "GsrComplianceRequirementType"
                ],
                "data_enum": "GsrComplianceRequirementType",
                "description": "EU's General security regulation compliance requirement.\nReturns whether general security regulation compliance is required, if so, what type of requirement."
            },
            {
                "name": "SUPPORTED_PROPERTY_IDS",
                "value": 289476424,
                "description": "(Deprecated) List of all supported property IDs.\nA 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.\nIn 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.\nThe 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."
            },
            {
                "name": "SHUTDOWN_REQUEST",
                "value": 289410889,
                "data_enums": [
                    "VehicleApPowerStateShutdownParam"
                ],
                "data_enum": "VehicleApPowerStateShutdownParam",
                "description": "Request the head unit to be shutdown.\n<p>This is required for executing a task when the head unit is powered off (remote task feature). After the head unit is powered-on to execute the task, the head unit should be shutdown. The head unit will send this message once the task is finished.\n<p>This is not for the case when a user wants to shutdown the head unit.\n<p>This usually involves telling a separate system outside the head unit (e.g. a power controller) to prepare shutting down the head unit.\n<p>Note that the external system must validate whether this request is valid by checking whether the vehicle is currently in use. If a user enters the vehicle after a SHUTDOWN_REQUEST is sent, then the system must ignore this request. It is recommended to store a VehicleInUse property in the power controller and exposes it through VEHICLE_IN_USE property. A shutdown request must be ignored if VehicleInUse is true.\n<p>If allowed, the external 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.\n<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.\n<p>Since this property is write-only, subscribing is not allowed and no property change event will be generated.\n<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.\n<p>For configuration information, VehiclePropConfig.configArray must have bit flag combining values in {@code VehicleApPowerStateConfigFlag} to indicate which shutdown options are supported.\n<p>Returns error if failed to send the shutdown request to the other system."
            },
            {
                "name": "VEHICLE_IN_USE",
                "value": 287313738,
                "description": "Whether the vehicle is currently in use.\n<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.\n<p>If this property is supported:\n<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.\n<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.\n<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.\n<p>This property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "CLUSTER_HEARTBEAT",
                "value": 299896651,
                "description": "Sends the heartbeat signal to ClusterOS.\nint64[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."
            },
            {
                "name": "VEHICLE_DRIVING_AUTOMATION_CURRENT_LEVEL",
                "value": 289410892,
                "data_enums": [
                    "VehicleAutonomousState"
                ],
                "data_enum": "VehicleAutonomousState",
                "description": "Current state of vehicle autonomy.\nDefines 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\nFor the global area ID (0), the VehicleAreaConfig#supportedEnumValues array must be defined unless all states of VehicleAutonomousState are supported."
            },
            {
                "name": "CAMERA_SERVICE_CURRENT_STATE",
                "value": 289476429,
                "data_enums": [
                    "CameraServiceState"
                ],
                "data_enum": "CameraServiceState",
                "description": "Reports current state of CarEvsService types.\nInforms other components of current state of each CarEvsService service type with values defined in CameraServiceState. CarEvsService will update this property whenever a service type transitions into a new state.\nint32[0]: Current state of REARVIEW service type. int32[1]: Current state of SURROUNDVIEW service type. int32[2]: Current state of FRONTVIEW service type. int32[3]: Current state of LEFTVIEW service type. int32[4]: Current state of RIGHTVIEW service type. int32[5]: Current state of DRIVERVIEW service type. int32[6]: Current state of FRONT_PASSENGERVIEW service type. int32[7]: Current state of REAR_PASSENGERVIEW service type."
            },
            {
                "name": "AUTOMATIC_EMERGENCY_BRAKING_ENABLED",
                "value": 287313920,
                "description": "Enable or disable Automatic Emergency Braking (AEB).\nSet 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. This property should apply for higher speed applications only. For enabling low speed automatic emergency braking, LOW_SPEED_AUTOMATIC_EMERGENCY_BRAKING_ENABLED should be used.\nIn 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "AUTOMATIC_EMERGENCY_BRAKING_STATE",
                "value": 289411073,
                "data_enums": [
                    "AutomaticEmergencyBrakingState",
                    "ErrorState"
                ],
                "data_enum": "AutomaticEmergencyBrakingState",
                "description": "Automatic Emergency Braking (AEB) state.\nReturns 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. This property should apply for higher speed applications only. For representing the state of the low speed automatic emergency braking system, LOW_SPEED_AUTOMATIC_EMERGENCY_BRAKING_STATE should be used.\nIf AEB includes forward collision warnings before activating the brakes, those warnings must be surfaced through the Forward Collision Warning (FCW) properties.\nFor 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."
            },
            {
                "name": "FORWARD_COLLISION_WARNING_ENABLED",
                "value": 287313922,
                "description": "Enable or disable Forward Collision Warning (FCW).\nSet 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.\nIn 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "FORWARD_COLLISION_WARNING_STATE",
                "value": 289411075,
                "data_enums": [
                    "ForwardCollisionWarningState",
                    "ErrorState"
                ],
                "data_enum": "ForwardCollisionWarningState",
                "description": "Forward Collision Warning (FCW) state.\nReturns 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.\nFor 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."
            },
            {
                "name": "BLIND_SPOT_WARNING_ENABLED",
                "value": 287313924,
                "description": "Enable and disable Blind Spot Warning (BSW).\nSet 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.\nIn 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "BLIND_SPOT_WARNING_STATE",
                "value": 339742725,
                "data_enums": [
                    "BlindSpotWarningState",
                    "ErrorState"
                ],
                "data_enum": "BlindSpotWarningState",
                "description": "Blind Spot Warning (BSW) state.\nReturns 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.\nFor 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."
            },
            {
                "name": "LANE_DEPARTURE_WARNING_ENABLED",
                "value": 287313926,
                "description": "Enable or disable Lane Departure Warning (LDW).\nSet 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.\nIn 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "LANE_DEPARTURE_WARNING_STATE",
                "value": 289411079,
                "data_enums": [
                    "LaneDepartureWarningState",
                    "ErrorState"
                ],
                "data_enum": "LaneDepartureWarningState",
                "description": "Lane Departure Warning (LDW) state.\nReturns 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.\nFor 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."
            },
            {
                "name": "LANE_KEEP_ASSIST_ENABLED",
                "value": 287313928,
                "description": "Enable or disable Lane Keep Assist (LKA).\nSet 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.\nThis is different from Lane Centering Assist (LCA) which, when activated, applies continuous steering control to keep the vehicle centered in the current lane.\nIn 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Lane Keep Assist (LKA) state.",
                "value": 289411081,
                "data_enums": [
                    "LaneKeepAssistState",
                    "ErrorState"
                ],
                "data_enum": "LaneKeepAssistState",
                "description": "Lane Keep Assist (LKA) state.\nReturns 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.\nIf LKA includes lane departure warnings before applying steering corrections, those warnings must be surfaced through the Lane Departure Warning (LDW) properties.\nFor 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."
            },
            {
                "name": "LANE_CENTERING_ASSIST_ENABLED",
                "value": 287313930,
                "description": "Enable or disable Lane Centering Assist (LCA).\nSet 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.\nThis 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.\nIn 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "LANE_CENTERING_ASSIST_COMMAND",
                "value": 289411083,
                "data_enums": [
                    "LaneCenteringAssistCommand"
                ],
                "data_enum": "LaneCenteringAssistCommand",
                "description": "Lane Centering Assist (LCA) commands.\nCommands to activate and suspend LCA.\nWhen 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.\nFor the global area ID (0), the VehicleAreaConfig#supportedEnumValues must be defined unless all enum values of LaneCenteringAssistCommand are supported.\nWhen 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."
            },
            {
                "name": "LANE_CENTERING_ASSIST_STATE",
                "value": 289411084,
                "data_enums": [
                    "LaneCenteringAssistState",
                    "ErrorState"
                ],
                "data_enum": "LaneCenteringAssistState",
                "description": "Lane Centering Assist (LCA) state.\nReturns 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.\nIf LCA includes lane departure warnings, those warnings must be surfaced through the Lane Departure Warning (LDW) properties.\nFor 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."
            },
            {
                "name": "EMERGENCY_LANE_KEEP_ASSIST_ENABLED",
                "value": 287313933,
                "description": "Enable or disable Emergency Lane Keep Assist (ELKA).\nSet 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.\nIn 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "EMERGENCY_LANE_KEEP_ASSIST_STATE",
                "value": 289411086,
                "data_enums": [
                    "EmergencyLaneKeepAssistState",
                    "ErrorState"
                ],
                "data_enum": "EmergencyLaneKeepAssistState",
                "description": "Emergency Lane Keep Assist (ELKA) state.\nReturns 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.\nFor 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."
            },
            {
                "name": "CRUISE_CONTROL_ENABLED",
                "value": 287313935,
                "description": "Enable or disable cruise control (CC).\nSet true to enable CC and false to disable CC. This property is shared by all forms of CruiseControlType(s).\nWhen CC is enabled, the ADAS system in the vehicle should be turned on and responding to commands.\nIn 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "CRUISE_CONTROL_TYPE",
                "value": 289411088,
                "data_enums": [
                    "CruiseControlType",
                    "ErrorState"
                ],
                "data_enum": "CruiseControlType",
                "description": "Current type of Cruise Control (CC).\nWhen 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.\nFor 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.\nTrying to write CruiseControlType#OTHER or an ErrorState to this property will throw an IllegalArgumentException.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "CRUISE_CONTROL_STATE",
                "value": 289411089,
                "data_enums": [
                    "CruiseControlState",
                    "ErrorState"
                ],
                "data_enum": "CruiseControlState",
                "description": "Current state of Cruise Control (CC).\nThis 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.\nFor 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."
            },
            {
                "name": "CRUISE_CONTROL_COMMAND",
                "value": 289411090,
                "data_enums": [
                    "CruiseControlCommand"
                ],
                "data_enum": "CruiseControlCommand",
                "description": "Write Cruise Control (CC) commands.\nSee CruiseControlCommand for the details about each supported command.\nFor 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.\nWhen 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."
            },
            {
                "name": "CRUISE_CONTROL_TARGET_SPEED",
                "value": 291508243,
                "description": "Current target speed for Cruise Control (CC).\nOEMs 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.\nThe maxFloatValue represents the upper bound of the target speed. The minFloatValue represents the lower bound of the target speed.\nWhen 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."
            },
            {
                "name": "ADAPTIVE_CRUISE_CONTROL_TARGET_TIME_GAP",
                "value": 289411092,
                "description": "Current target time gap for Adaptive Cruise Control (ACC) or Predictive Cruise Control in milliseconds.\nThis 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.\nThe 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.\nWhen 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "ADAPTIVE_CRUISE_CONTROL_LEAD_VEHICLE_MEASURED_DISTANCE",
                "value": 289411093,
                "description": "Measured distance from leading vehicle when using Adaptive Cruise Control (ACC) or Predictive Cruise Control.\nReturns the measured distance in millimeters between the rear-most point of the leading vehicle and the front-most point of the ACC vehicle.\nThe 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.\nWhen 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.\nWhen 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."
            },
            {
                "name": "HANDS_ON_DETECTION_ENABLED",
                "value": 287313942,
                "description": "Enable or disable Hands On Detection (HOD).\nSet 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.\nIn 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "HANDS_ON_DETECTION_DRIVER_STATE",
                "value": 289411095,
                "data_enums": [
                    "HandsOnDetectionDriverState",
                    "ErrorState"
                ],
                "data_enum": "HandsOnDetectionDriverState",
                "description": "Hands On Detection (HOD) driver state.\nReturns 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.\nIf 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.\nFor 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."
            },
            {
                "name": "HANDS_ON_DETECTION_WARNING",
                "value": 289411096,
                "data_enums": [
                    "HandsOnDetectionWarning",
                    "ErrorState"
                ],
                "data_enum": "HandsOnDetectionWarning",
                "description": "Hands On Detection (HOD) warning.\nReturns whether a warning is being sent to the driver for having their hands off the wheel for too long a duration.\nGenerally, 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.\nFor 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."
            },
            {
                "name": "DRIVER_DROWSINESS_ATTENTION_SYSTEM_ENABLED",
                "value": 287313945,
                "description": "Enable or disable driver drowsiness and attention monitoring.\nSet 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.\nIn 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "DRIVER_DROWSINESS_ATTENTION_STATE",
                "value": 289411098,
                "data_enums": [
                    "DriverDrowsinessAttentionState",
                    "ErrorState"
                ],
                "data_enum": "DriverDrowsinessAttentionState",
                "description": "Driver drowsiness and attention level state.\nReturns 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.\nGenerally, 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.\nIf 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}.\nFor 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."
            },
            {
                "name": "DRIVER_DROWSINESS_ATTENTION_WARNING_ENABLED",
                "value": 287313947,
                "description": "Enable or disable driver drowsiness and attention warnings.\nSet true to enable driver drowsiness and attention warnings and false to disable driver drowsiness and attention warnings.\nWhen 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.\nIn 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "DRIVER_DROWSINESS_ATTENTION_WARNING",
                "value": 289411100,
                "data_enums": [
                    "DriverDrowsinessAttentionWarning",
                    "ErrorState"
                ],
                "data_enum": "DriverDrowsinessAttentionWarning",
                "description": "Driver drowsiness and attention warning.\nReturns whether a warning is being sent to the driver for being drowsy or not attentive.\nGenerally, 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.\nFor 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."
            },
            {
                "name": "DRIVER_DISTRACTION_SYSTEM_ENABLED",
                "value": 287313949,
                "description": "Enable or disable driver distraction monitoring.\nSet 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.\nIn 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Driver distraction state.",
                "value": 289411102,
                "data_enums": [
                    "DriverDistractionState",
                    "ErrorState"
                ],
                "data_enum": "DriverDistractionState",
                "description": "Driver distraction state.\nReturns the current detected driver distraction state.\nGenerally, 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.\nIf 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}.\nFor 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."
            },
            {
                "name": "DRIVER_DISTRACTION_WARNING_ENABLED",
                "value": 287313951,
                "description": "Enable or disable driver distraction warnings.\nSet true to enable driver distraction warnings and false to disable driver distraction warnings.\nWhen driver distraction warnings are enabled, the driver distraction monitoring system inside the vehicle should warn the driver when it detects the driver is distracted.\nIn 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.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "Driver distraction warning.",
                "value": 289411104,
                "data_enums": [
                    "DriverDistractionWarning",
                    "ErrorState"
                ],
                "data_enum": "DriverDistractionWarning",
                "description": "Driver distraction warning.\nReturns whether a warning is being sent to the driver for being distracted.\nGenerally, 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.\nFor 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."
            },
            {
                "name": "LOW_SPEED_COLLISION_WARNING_ENABLED",
                "value": 287313953,
                "description": "Enable or disable Low Speed Collision Warning.\nSet true to enable low speed collision warning and false to disable low speed collision warning. When low speed collision warning is enabled, the ADAS system in the vehicle should warn the driver of potential collisions at low speeds. This property is different from the pre-existing FORWARD_COLLISION_WARNING_ENABLED, which should apply to higher speed applications only. If the vehicle doesn't have a separate collision detection system for low speed environments, this property should not be implemented.\nIn general, LOW_SPEED_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 high, that information must be conveyed through the ErrorState values in the LOW_SPEED_COLLISION_WARNING_STATE property.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "LOW_SPEED_COLLISION_WARNING_STATE",
                "value": 289411106,
                "data_enums": [
                    "LowSpeedCollisionWarningState",
                    "ErrorState"
                ],
                "data_enum": "LowSpeedCollisionWarningState",
                "description": "Low Speed Collision Warning state.\nReturns the current state of Low Speed Collision Warning. This property must always return a valid state defined in LowSpeedCollisionWarningState or ErrorState. It must not surface errors through StatusCode and must use the supported error states instead. This property is different from the pre-existing FORWARD_COLLISION_WARNING_STATE, which should apply to higher speed applications only. If the vehicle doesn't have a separate collision detection system for low speed environments, this property should not be implemented.\nFor the global area ID (0), the VehicleAreaConfig#supportedEnumValues array must be defined unless all states of both LowSpeedCollisionWarningState (including OTHER, which is not recommended) and ErrorState are supported."
            },
            {
                "name": "CROSS_TRAFFIC_MONITORING_ENABLED",
                "value": 287313955,
                "description": "Enable or disable Cross Traffic Monitoring.\nSet true to enable Cross Traffic Monitoring and false to disable Cross Traffic Monitoring. When Cross Traffic Monitoring is enabled, the ADAS system in the vehicle should be turned on and monitoring for potential sideways collisions.\nIn general, CROSS_TRAFFIC_MONITORING_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 high, that information must be conveyed through the ErrorState values in the CROSS_TRAFFIC_MONITORING_STATE property.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "CROSS_TRAFFIC_MONITORING_WARNING_STATE",
                "value": 289411108,
                "data_enums": [
                    "CrossTrafficMonitoringWarningState",
                    "ErrorState"
                ],
                "data_enum": "CrossTrafficMonitoringWarningState",
                "description": "Cross Traffic Monitoring warning state.\nReturns the current state of Cross Traffic Monitoring Warning. This property must always return a valid state defined in CrossTrafficMonitoringWarningState or ErrorState. It must not surface errors through StatusCode and must use the supported error states instead.\nFor the global area ID (0), the VehicleAreaConfig#supportedEnumValues array must be defined unless all states of both CrossTrafficMonitoringWarningState (including OTHER, which is not recommended) and ErrorState are supported."
            },
            {
                "name": "LOW_SPEED_AUTOMATIC_EMERGENCY_BRAKING_ENABLED",
                "value": 287313957,
                "description": "Enable or disable Low Speed Automatic Emergency Braking.\nSet true to enable Low Speed Automatic Emergency Braking or false to disable Low Speed Automatic Emergency Braking. When Low Speed Automatic Emergency Braking is enabled, the ADAS system in the vehicle should be turned on and monitoring to avoid potential collisions in low speed conditions. This property is different from the pre-existing AUTOMATIC_EMERGENCY_BRAKING_ENABLED, which should apply to higher speed applications only. If the vehicle doesn't have a separate collision avoidance system for low speed environments, this property should not be implemented.\nIn general, LOW_SPEED_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 LOW_SPEED_AUTOMATIC_EMERGENCY_BRAKING_STATE property.\nThis property is defined as VehiclePropertyAccess.READ_WRITE, but OEMs have the option to implement it as VehiclePropertyAccess.READ only."
            },
            {
                "name": "LOW_SPEED_AUTOMATIC_EMERGENCY_BRAKING_STATE",
                "value": 289411110,
                "data_enums": [
                    "LowSpeedAutomaticEmergencyBrakingState",
                    "ErrorState"
                ],
                "data_enum": "LowSpeedAutomaticEmergencyBrakingState",
                "description": "Low Speed Automatic Emergency Braking state.\nReturns the current state of Low Speed Automatic Emergency Braking. This property must always return a valid state defined in LowSpeedAutomaticEmergencyBrakingState or ErrorState. It must not surface errors through StatusCode and must use the supported error states instead. This property is different from the pre-existing AUTOMATIC_EMERGENCY_BRAKING_STATE, which should apply to higher speed applications only. If the vehicle doesn't have a separate collision avoidance system for low speed environments, this property should not be implemented.\nIf Low Speed Automatic Emergency Braking includes collision warnings before activating the brakes, those warnings must be surfaced through use of LOW_SPEED_COLLISION_WARNING_ENABLED and LOW_SPEED_COLLISION_WARNING_STATE.\nFor the global area ID (0), the VehicleAreaConfig#supportedEnumValues array must be defined unless all states of both LowSpeedAutomaticEmergencyBrakingState (including OTHER, which is not recommended) and ErrorState are supported."
            }
        ]
    },
    {
        "name": "AutomaticEmergencyBrakingState",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "OTHER",
                "value": 0
            },
            {
                "name": "ENABLED",
                "value": 1
            },
            {
                "name": "ACTIVATED",
                "value": 2
            },
            {
                "name": "USER_OVERRIDE",
                "value": 3
            }
        ]
    },
    {
        "name": "BlindSpotWarningState",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "OTHER",
                "value": 0
            },
            {
                "name": "NO_WARNING",
                "value": 1
            },
            {
                "name": "WARNING",
                "value": 2
            }
        ]
    },
    {
        "name": "CameraServiceState",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "UNAVAILABLE",
                "value": 0
            },
            {
                "name": "INACTIVE",
                "value": 1
            },
            {
                "name": "REQUESTED",
                "value": 2
            },
            {
                "name": "ACTIVE",
                "value": 3
            }
        ]
    },
    {
        "name": "CrossTrafficMonitoringWarningState",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "OTHER",
                "value": 0
            },
            {
                "name": "NO_WARNING",
                "value": 1
            },
            {
                "name": "WARNING_FRONT_LEFT",
                "value": 2
            },
            {
                "name": "WARNING_FRONT_RIGHT",
                "value": 3
            },
            {
                "name": "WARNING_FRONT_BOTH",
                "value": 4
            },
            {
                "name": "WARNING_REAR_LEFT",
                "value": 5
            },
            {
                "name": "WARNING_REAR_RIGHT",
                "value": 6
            },
            {
                "name": "WARNING_REAR_BOTH",
                "value": 7
            }
        ]
    },
    {
        "name": "CruiseControlCommand",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "ACTIVATE",
                "value": 1
            },
            {
                "name": "SUSPEND",
                "value": 2
            },
            {
                "name": "INCREASE_TARGET_SPEED",
                "value": 3
            },
            {
                "name": "DECREASE_TARGET_SPEED",
                "value": 4
            },
            {
                "name": "INCREASE_TARGET_TIME_GAP",
                "value": 5
            },
            {
                "name": "DECREASE_TARGET_TIME_GAP",
                "value": 6
            }
        ]
    },
    {
        "name": "CruiseControlState",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "OTHER",
                "value": 0
            },
            {
                "name": "ENABLED",
                "value": 1
            },
            {
                "name": "ACTIVATED",
                "value": 2
            },
            {
                "name": "USER_OVERRIDE",
                "value": 3
            },
            {
                "name": "SUSPENDED",
                "value": 4
            },
            {
                "name": "FORCED_DEACTIVATION_WARNING",
                "value": 5
            }
        ]
    },
    {
        "name": "CruiseControlType",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "OTHER",
                "value": 0
            },
            {
                "name": "STANDARD",
                "value": 1
            },
            {
                "name": "ADAPTIVE",
                "value": 2
            },
            {
                "name": "PREDICTIVE",
                "value": 3
            }
        ]
    },
    {
        "name": "CustomInputType",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "CUSTOM_EVENT_F1",
                "value": 1001
            },
            {
                "name": "CUSTOM_EVENT_F2",
                "value": 1002
            },
            {
                "name": "CUSTOM_EVENT_F3",
                "value": 1003
            },
            {
                "name": "CUSTOM_EVENT_F4",
                "value": 1004
            },
            {
                "name": "CUSTOM_EVENT_F5",
                "value": 1005
            },
            {
                "name": "CUSTOM_EVENT_F6",
                "value": 1006
            },
            {
                "name": "CUSTOM_EVENT_F7",
                "value": 1007
            },
            {
                "name": "CUSTOM_EVENT_F8",
                "value": 1008
            },
            {
                "name": "CUSTOM_EVENT_F9",
                "value": 1009
            },
            {
                "name": "CUSTOM_EVENT_F10",
                "value": 1010
            }
        ]
    },
    {
        "name": "DriverDistractionState",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "OTHER",
                "value": 0
            },
            {
                "name": "NOT_DISTRACTED",
                "value": 1
            },
            {
                "name": "DISTRACTED",
                "value": 2
            }
        ]
    },
    {
        "name": "DriverDistractionWarning",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "OTHER",
                "value": 0
            },
            {
                "name": "NO_WARNING",
                "value": 1
            },
            {
                "name": "WARNING",
                "value": 2
            }
        ]
    },
    {
        "name": "DriverDrowsinessAttentionState",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "OTHER",
                "value": 0
            },
            {
                "name": "KSS_RATING_1_EXTREMELY_ALERT",
                "value": 1
            },
            {
                "name": "KSS_RATING_2_VERY_ALERT",
                "value": 2
            },
            {
                "name": "KSS_RATING_3_ALERT",
                "value": 3
            },
            {
                "name": "KSS_RATING_4_RATHER_ALERT",
                "value": 4
            },
            {
                "name": "KSS_RATING_5_NEITHER_ALERT_NOR_SLEEPY",
                "value": 5
            },
            {
                "name": "KSS_RATING_6_SOME_SLEEPINESS",
                "value": 6
            },
            {
                "name": "KSS_RATING_7_SLEEPY_NO_EFFORT",
                "value": 7
            },
            {
                "name": "KSS_RATING_8_SLEEPY_SOME_EFFORT",
                "value": 8
            },
            {
                "name": "KSS_RATING_9_VERY_SLEEPY",
                "value": 9
            }
        ]
    },
    {
        "name": "DriverDrowsinessAttentionWarning",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "OTHER",
                "value": 0
            },
            {
                "name": "NO_WARNING",
                "value": 1
            },
            {
                "name": "WARNING",
                "value": 2
            }
        ]
    },
    {
        "name": "ElectronicStabilityControlState",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "OTHER",
                "value": 0
            },
            {
                "name": "ENABLED",
                "value": 1
            },
            {
                "name": "ACTIVATED",
                "value": 2
            }
        ]
    },
    {
        "name": "ElectronicTollCollectionCardStatus",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "UNKNOWN",
                "value": 0
            },
            {
                "name": "ELECTRONIC_TOLL_COLLECTION_CARD_VALID",
                "value": 1
            },
            {
                "name": "ELECTRONIC_TOLL_COLLECTION_CARD_INVALID",
                "value": 2
            },
            {
                "name": "ELECTRONIC_TOLL_COLLECTION_CARD_NOT_INSERTED",
                "value": 3
            }
        ]
    },
    {
        "name": "ElectronicTollCollectionCardType",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "UNKNOWN",
                "value": 0
            },
            {
                "name": "JP_ELECTRONIC_TOLL_COLLECTION_CARD",
                "value": 1
            },
            {
                "name": "JP_ELECTRONIC_TOLL_COLLECTION_CARD_V2",
                "value": 2
            }
        ]
    },
    {
        "name": "EmergencyLaneKeepAssistState",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "OTHER",
                "value": 0
            },
            {
                "name": "ENABLED",
                "value": 1
            },
            {
                "name": "WARNING_LEFT",
                "value": 2
            },
            {
                "name": "WARNING_RIGHT",
                "value": 3
            },
            {
                "name": "ACTIVATED_STEER_LEFT",
                "value": 4
            },
            {
                "name": "ACTIVATED_STEER_RIGHT",
                "value": 5
            },
            {
                "name": "USER_OVERRIDE",
                "value": 6
            }
        ]
    },
    {
        "name": "ErrorState",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "OTHER_ERROR_STATE",
                "value": -1
            },
            {
                "name": "NOT_AVAILABLE_DISABLED",
                "value": -2
            },
            {
                "name": "NOT_AVAILABLE_SPEED_LOW",
                "value": -3
            },
            {
                "name": "NOT_AVAILABLE_SPEED_HIGH",
                "value": -4
            },
            {
                "name": "NOT_AVAILABLE_POOR_VISIBILITY",
                "value": -5
            },
            {
                "name": "NOT_AVAILABLE_SAFETY",
                "value": -6
            }
        ]
    },
    {
        "name": "EvChargeState",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "UNKNOWN",
                "value": 0
            },
            {
                "name": "CHARGING",
                "value": 1
            },
            {
                "name": "FULLY_CHARGED",
                "value": 2
            },
            {
                "name": "NOT_CHARGING",
                "value": 3
            },
            {
                "name": "ERROR",
                "value": 4
            }
        ]
    },
    {
        "name": "EvConnectorType",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "UNKNOWN",
                "value": 0
            },
            {
                "name": "IEC_TYPE_1_AC",
                "value": 1
            },
            {
                "name": "IEC_TYPE_2_AC",
                "value": 2
            },
            {
                "name": "IEC_TYPE_3_AC",
                "value": 3
            },
            {
                "name": "IEC_TYPE_4_DC",
                "value": 4
            },
            {
                "name": "IEC_TYPE_1_CCS_DC",
                "value": 5
            },
            {
                "name": "IEC_TYPE_2_CCS_DC",
                "value": 6
            },
            {
                "name": "TESLA_ROADSTER",
                "value": 7
            },
            {
                "name": "TESLA_HPWC",
                "value": 8
            },
            {
                "name": "TESLA_SUPERCHARGER",
                "value": 9
            },
            {
                "name": "GBT_AC",
                "value": 10
            },
            {
                "name": "GBT_DC",
                "value": 11
            },
            {
                "name": "OTHER",
                "value": 101
            }
        ]
    },
    {
        "name": "EvRegenerativeBrakingState",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "UNKNOWN",
                "value": 0
            },
            {
                "name": "DISABLED",
                "value": 1
            },
            {
                "name": "PARTIALLY_ENABLED",
                "value": 2
            },
            {
                "name": "FULLY_ENABLED",
                "value": 3
            }
        ]
    },
    {
        "name": "EvStoppingMode",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "OTHER",
                "value": 0
            },
            {
                "name": "CREEP",
                "value": 1
            },
            {
                "name": "ROLL",
                "value": 2
            },
            {
                "name": "HOLD",
                "value": 3
            }
        ]
    },
    {
        "name": "ForwardCollisionWarningState",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "OTHER",
                "value": 0
            },
            {
                "name": "NO_WARNING",
                "value": 1
            },
            {
                "name": "WARNING",
                "value": 2
            }
        ]
    },
    {
        "name": "FuelType",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "FUEL_TYPE_UNKNOWN",
                "value": 0
            },
            {
                "name": "FUEL_TYPE_UNLEADED",
                "value": 1
            },
            {
                "name": "FUEL_TYPE_LEADED",
                "value": 2
            },
            {
                "name": "FUEL_TYPE_DIESEL_1",
                "value": 3
            },
            {
                "name": "FUEL_TYPE_DIESEL_2",
                "value": 4
            },
            {
                "name": "FUEL_TYPE_BIODIESEL",
                "value": 5
            },
            {
                "name": "FUEL_TYPE_E85",
                "value": 6
            },
            {
                "name": "FUEL_TYPE_LPG",
                "value": 7
            },
            {
                "name": "FUEL_TYPE_CNG",
                "value": 8
            },
            {
                "name": "FUEL_TYPE_LNG",
                "value": 9
            },
            {
                "name": "FUEL_TYPE_ELECTRIC",
                "value": 10
            },
            {
                "name": "FUEL_TYPE_HYDROGEN",
                "value": 11
            },
            {
                "name": "FUEL_TYPE_OTHER",
                "value": 12
            }
        ]
    },
    {
        "name": "GsrComplianceRequirementType",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "GSR_COMPLIANCE_NOT_REQUIRED",
                "value": 0
            },
            {
                "name": "GSR_COMPLIANCE_REQUIRED_V1",
                "value": 1
            }
        ]
    },
    {
        "name": "HandsOnDetectionDriverState",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "OTHER",
                "value": 0
            },
            {
                "name": "HANDS_ON",
                "value": 1
            },
            {
                "name": "HANDS_OFF",
                "value": 2
            }
        ]
    },
    {
        "name": "HandsOnDetectionWarning",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "OTHER",
                "value": 0
            },
            {
                "name": "NO_WARNING",
                "value": 1
            },
            {
                "name": "WARNING",
                "value": 2
            }
        ]
    },
    {
        "name": "ImpactSensorLocation",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "OTHER",
                "value": 1
            },
            {
                "name": "FRONT",
                "value": 2
            },
            {
                "name": "FRONT_LEFT_DOOR_SIDE",
                "value": 4
            },
            {
                "name": "FRONT_RIGHT_DOOR_SIDE",
                "value": 8
            },
            {
                "name": "REAR_LEFT_DOOR_SIDE",
                "value": 16
            },
            {
                "name": "REAR_RIGHT_DOOR_SIDE",
                "value": 32
            },
            {
                "name": "REAR",
                "value": 64
            }
        ]
    },
    {
        "name": "LaneCenteringAssistCommand",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "ACTIVATE",
                "value": 1
            },
            {
                "name": "DEACTIVATE",
                "value": 2
            }
        ]
    },
    {
        "name": "LaneCenteringAssistState",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "OTHER",
                "value": 0
            },
            {
                "name": "ENABLED",
                "value": 1
            },
            {
                "name": "ACTIVATION_REQUESTED",
                "value": 2
            },
            {
                "name": "ACTIVATED",
                "value": 3
            },
            {
                "name": "USER_OVERRIDE",
                "value": 4
            },
            {
                "name": "FORCED_DEACTIVATION_WARNING",
                "value": 5
            }
        ]
    },
    {
        "name": "LaneDepartureWarningState",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "OTHER",
                "value": 0
            },
            {
                "name": "NO_WARNING",
                "value": 1
            },
            {
                "name": "WARNING_LEFT",
                "value": 2
            },
            {
                "name": "WARNING_RIGHT",
                "value": 3
            }
        ]
    },
    {
        "name": "LaneKeepAssistState",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "OTHER",
                "value": 0
            },
            {
                "name": "ENABLED",
                "value": 1
            },
            {
                "name": "ACTIVATED_STEER_LEFT",
                "value": 2
            },
            {
                "name": "ACTIVATED_STEER_RIGHT",
                "value": 3
            },
            {
                "name": "USER_OVERRIDE",
                "value": 4
            }
        ]
    },
    {
        "name": "LowSpeedAutomaticEmergencyBrakingState",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "OTHER",
                "value": 0
            },
            {
                "name": "ENABLED",
                "value": 1
            },
            {
                "name": "ACTIVATED",
                "value": 2
            },
            {
                "name": "USER_OVERRIDE",
                "value": 3
            }
        ]
    },
    {
        "name": "LowSpeedCollisionWarningState",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "OTHER",
                "value": 0
            },
            {
                "name": "NO_WARNING",
                "value": 1
            },
            {
                "name": "WARNING",
                "value": 2
            }
        ]
    },
    {
        "name": "PortLocationType",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "UNKNOWN",
                "value": 0
            },
            {
                "name": "FRONT_LEFT",
                "value": 1
            },
            {
                "name": "FRONT_RIGHT",
                "value": 2
            },
            {
                "name": "REAR_RIGHT",
                "value": 3
            },
            {
                "name": "REAR_LEFT",
                "value": 4
            },
            {
                "name": "FRONT",
                "value": 5
            },
            {
                "name": "REAR",
                "value": 6
            }
        ]
    },
    {
        "name": "RotaryInputType",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "ROTARY_INPUT_TYPE_SYSTEM_NAVIGATION",
                "value": 0
            },
            {
                "name": "ROTARY_INPUT_TYPE_AUDIO_VOLUME",
                "value": 1
            }
        ]
    },
    {
        "name": "TrailerState",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "UNKNOWN",
                "value": 0
            },
            {
                "name": "NOT_PRESENT",
                "value": 1
            },
            {
                "name": "PRESENT",
                "value": 2
            },
            {
                "name": "ERROR",
                "value": 3
            }
        ]
    },
    {
        "name": "VehicleAirbagLocation",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "OTHER",
                "value": 1
            },
            {
                "name": "FRONT",
                "value": 2
            },
            {
                "name": "KNEE",
                "value": 4
            },
            {
                "name": "LEFT_SIDE",
                "value": 8
            },
            {
                "name": "RIGHT_SIDE",
                "value": 16
            },
            {
                "name": "CURTAIN",
                "value": 32
            }
        ]
    },
    {
        "name": "VehicleApPowerStateShutdownParam",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "SHUTDOWN_IMMEDIATELY",
                "value": 1
            },
            {
                "name": "CAN_SLEEP",
                "value": 2
            },
            {
                "name": "SHUTDOWN_ONLY",
                "value": 3
            },
            {
                "name": "SLEEP_IMMEDIATELY",
                "value": 4
            },
            {
                "name": "HIBERNATE_IMMEDIATELY",
                "value": 5
            },
            {
                "name": "CAN_HIBERNATE",
                "value": 6
            },
            {
                "name": "EMERGENCY_SHUTDOWN",
                "value": 7
            }
        ]
    },
    {
        "name": "VehicleAreaSeat",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "UNKNOWN",
                "value": 0
            },
            {
                "name": "ROW_1_LEFT",
                "value": 1
            },
            {
                "name": "ROW_1_CENTER",
                "value": 2
            },
            {
                "name": "ROW_1_RIGHT",
                "value": 4
            },
            {
                "name": "ROW_2_LEFT",
                "value": 16
            },
            {
                "name": "ROW_2_CENTER",
                "value": 32
            },
            {
                "name": "ROW_2_RIGHT",
                "value": 64
            },
            {
                "name": "ROW_3_LEFT",
                "value": 256
            },
            {
                "name": "ROW_3_CENTER",
                "value": 512
            },
            {
                "name": "ROW_3_RIGHT",
                "value": 1024
            }
        ]
    },
    {
        "name": "VehicleAutonomousState",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "LEVEL_0",
                "value": 0
            },
            {
                "name": "LEVEL_1",
                "value": 1
            },
            {
                "name": "LEVEL_2",
                "value": 2
            },
            {
                "name": "LEVEL_3",
                "value": 3
            },
            {
                "name": "LEVEL_4",
                "value": 4
            },
            {
                "name": "LEVEL_5",
                "value": 5
            }
        ]
    },
    {
        "name": "VehicleGear",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "GEAR_UNKNOWN",
                "value": 0
            },
            {
                "name": "GEAR_NEUTRAL",
                "value": 1
            },
            {
                "name": "GEAR_REVERSE",
                "value": 2
            },
            {
                "name": "GEAR_PARK",
                "value": 4
            },
            {
                "name": "GEAR_DRIVE",
                "value": 8
            },
            {
                "name": "GEAR_1",
                "value": 16
            },
            {
                "name": "GEAR_2",
                "value": 32
            },
            {
                "name": "GEAR_3",
                "value": 64
            },
            {
                "name": "GEAR_4",
                "value": 128
            },
            {
                "name": "GEAR_5",
                "value": 256
            },
            {
                "name": "GEAR_6",
                "value": 512
            },
            {
                "name": "GEAR_7",
                "value": 1024
            },
            {
                "name": "GEAR_8",
                "value": 2048
            },
            {
                "name": "GEAR_9",
                "value": 4096
            }
        ]
    },
    {
        "name": "VehicleHvacFanDirection",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "UNKNOWN",
                "value": 0
            },
            {
                "name": "FACE",
                "value": 1
            },
            {
                "name": "FLOOR",
                "value": 2
            },
            {
                "name": "FACE_AND_FLOOR",
                "value": 3
            },
            {
                "name": "DEFROST",
                "value": 4
            },
            {
                "name": "DEFROST_AND_FLOOR",
                "value": 6
            }
        ]
    },
    {
        "name": "VehicleIgnitionState",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "UNDEFINED",
                "value": 0
            },
            {
                "name": "LOCK",
                "value": 1
            },
            {
                "name": "OFF",
                "value": 2
            },
            {
                "name": "ACC",
                "value": 3
            },
            {
                "name": "ON",
                "value": 4
            },
            {
                "name": "START",
                "value": 5
            }
        ]
    },
    {
        "name": "VehicleLightState",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "OFF",
                "value": 0
            },
            {
                "name": "ON",
                "value": 1
            },
            {
                "name": "DAYTIME_RUNNING",
                "value": 2
            }
        ]
    },
    {
        "name": "VehicleLightSwitch",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "OFF",
                "value": 0
            },
            {
                "name": "ON",
                "value": 1
            },
            {
                "name": "DAYTIME_RUNNING",
                "value": 2
            },
            {
                "name": "AUTOMATIC",
                "value": 256
            }
        ]
    },
    {
        "name": "VehicleOilLevel",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "CRITICALLY_LOW",
                "value": 0
            },
            {
                "name": "LOW",
                "value": 1
            },
            {
                "name": "NORMAL",
                "value": 2
            },
            {
                "name": "HIGH",
                "value": 3
            },
            {
                "name": "ERROR",
                "value": 4
            }
        ]
    },
    {
        "name": "VehicleSeatOccupancyState",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "UNKNOWN",
                "value": 0
            },
            {
                "name": "VACANT",
                "value": 1
            },
            {
                "name": "OCCUPIED",
                "value": 2
            }
        ]
    },
    {
        "name": "VehicleTurnSignal",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "NONE",
                "value": 0
            },
            {
                "name": "RIGHT",
                "value": 1
            },
            {
                "name": "LEFT",
                "value": 2
            }
        ]
    },
    {
        "name": "VehicleUnit",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "SHOULD_NOT_USE",
                "value": 0
            },
            {
                "name": "METER_PER_SEC",
                "value": 1
            },
            {
                "name": "RPM",
                "value": 2
            },
            {
                "name": "HERTZ",
                "value": 3
            },
            {
                "name": "PERCENTILE",
                "value": 16
            },
            {
                "name": "MILLIMETER",
                "value": 32
            },
            {
                "name": "METER",
                "value": 33
            },
            {
                "name": "KILOMETER",
                "value": 35
            },
            {
                "name": "MILE",
                "value": 36
            },
            {
                "name": "CELSIUS",
                "value": 48
            },
            {
                "name": "FAHRENHEIT",
                "value": 49
            },
            {
                "name": "KELVIN",
                "value": 50
            },
            {
                "name": "MILLILITER",
                "value": 64
            },
            {
                "name": "LITER",
                "value": 65
            },
            {
                "name": "GALLON",
                "value": 66
            },
            {
                "name": "US_GALLON",
                "value": 66
            },
            {
                "name": "IMPERIAL_GALLON",
                "value": 67
            },
            {
                "name": "NANO_SECS",
                "value": 80
            },
            {
                "name": "MILLI_SECS",
                "value": 81
            },
            {
                "name": "SECS",
                "value": 83
            },
            {
                "name": "YEAR",
                "value": 89
            },
            {
                "name": "WATT_HOUR",
                "value": 96
            },
            {
                "name": "MILLIAMPERE",
                "value": 97
            },
            {
                "name": "MILLIVOLT",
                "value": 98
            },
            {
                "name": "MILLIWATTS",
                "value": 99
            },
            {
                "name": "AMPERE_HOURS",
                "value": 100
            },
            {
                "name": "KILOWATT_HOUR",
                "value": 101
            },
            {
                "name": "AMPERE",
                "value": 102
            },
            {
                "name": "KILOPASCAL",
                "value": 112
            },
            {
                "name": "PSI",
                "value": 113
            },
            {
                "name": "BAR",
                "value": 114
            },
            {
                "name": "DEGREES",
                "value": 128
            },
            {
                "name": "MILES_PER_HOUR",
                "value": 144
            },
            {
                "name": "KILOMETERS_PER_HOUR",
                "value": 145
            }
        ]
    },
    {
        "name": "WindshieldWipersState",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "OTHER",
                "value": 0
            },
            {
                "name": "OFF",
                "value": 1
            },
            {
                "name": "ON",
                "value": 2
            },
            {
                "name": "SERVICE",
                "value": 3
            }
        ]
    },
    {
        "name": "WindshieldWipersSwitch",
        "package": "android.hardware.automotive.vehicle",
        "values": [
            {
                "name": "OTHER",
                "value": 0
            },
            {
                "name": "OFF",
                "value": 1
            },
            {
                "name": "MIST",
                "value": 2
            },
            {
                "name": "INTERMITTENT_LEVEL_1",
                "value": 3
            },
            {
                "name": "INTERMITTENT_LEVEL_2",
                "value": 4
            },
            {
                "name": "INTERMITTENT_LEVEL_3",
                "value": 5
            },
            {
                "name": "INTERMITTENT_LEVEL_4",
                "value": 6
            },
            {
                "name": "INTERMITTENT_LEVEL_5",
                "value": 7
            },
            {
                "name": "CONTINUOUS_LEVEL_1",
                "value": 8
            },
            {
                "name": "CONTINUOUS_LEVEL_2",
                "value": 9
            },
            {
                "name": "CONTINUOUS_LEVEL_3",
                "value": 10
            },
            {
                "name": "CONTINUOUS_LEVEL_4",
                "value": 11
            },
            {
                "name": "CONTINUOUS_LEVEL_5",
                "value": 12
            },
            {
                "name": "AUTO",
                "value": 13
            },
            {
                "name": "SERVICE",
                "value": 14
            }
        ]
    }
]