1 /*
2  * Copyright (C) 2018 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.car;
18 
19 import static android.car.feature.Flags.FLAG_ANDROID_VIC_VEHICLE_PROPERTIES;
20 import static android.Manifest.permission.ACCESS_FINE_LOCATION;
21 
22 import static com.android.car.internal.ExcludeFromCodeCoverageGeneratedReport.BOILERPLATE_CODE;
23 import static com.android.car.internal.property.VehiclePropertyIdDebugUtils.isDefined;
24 import static com.android.car.internal.property.VehiclePropertyIdDebugUtils.toName;
25 
26 import android.annotation.FlaggedApi;
27 import android.annotation.RequiresPermission;
28 import android.annotation.SystemApi;
29 import android.car.hardware.CarHvacFanDirection;
30 import android.car.hardware.CarPropertyValue;
31 import android.car.hardware.property.AutomaticEmergencyBrakingState;
32 import android.car.hardware.property.BlindSpotWarningState;
33 import android.car.hardware.property.CruiseControlCommand;
34 import android.car.hardware.property.CruiseControlState;
35 import android.car.hardware.property.CruiseControlType;
36 import android.car.hardware.property.DriverDistractionState;
37 import android.car.hardware.property.DriverDistractionWarning;
38 import android.car.hardware.property.DriverDrowsinessAttentionState;
39 import android.car.hardware.property.DriverDrowsinessAttentionWarning;
40 import android.car.hardware.property.EmergencyLaneKeepAssistState;
41 import android.car.hardware.property.ErrorState;
42 import android.car.hardware.property.EvChargeState;
43 import android.car.hardware.property.EvChargingConnectorType;
44 import android.car.hardware.property.EvRegenerativeBrakingState;
45 import android.car.hardware.property.EvStoppingMode;
46 import android.car.hardware.property.ForwardCollisionWarningState;
47 import android.car.hardware.property.HandsOnDetectionDriverState;
48 import android.car.hardware.property.HandsOnDetectionWarning;
49 import android.car.hardware.property.LaneCenteringAssistCommand;
50 import android.car.hardware.property.LaneCenteringAssistState;
51 import android.car.hardware.property.LaneDepartureWarningState;
52 import android.car.hardware.property.LaneKeepAssistState;
53 import android.car.hardware.property.LocationCharacterization;
54 import android.car.hardware.property.TrailerState;
55 import android.car.hardware.property.VehicleElectronicTollCollectionCardStatus;
56 import android.car.hardware.property.VehicleElectronicTollCollectionCardType;
57 import android.car.hardware.property.VehicleLightState;
58 import android.car.hardware.property.VehicleLightSwitch;
59 import android.car.hardware.property.VehicleOilLevel;
60 import android.car.hardware.property.VehicleTurnSignal;
61 import android.car.hardware.property.WindshieldWipersState;
62 import android.car.hardware.property.WindshieldWipersSwitch;
63 
64 import com.android.car.internal.ExcludeFromCodeCoverageGeneratedReport;
65 
66 /**
67  * List of vehicle property IDs.
68  *
69  * <p> Property IDs are used with the {@link android.car.hardware.property.CarPropertyManager} APIs
70  * (e.g. {@link android.car.hardware.property.CarPropertyManager#getProperty(int, int)} or {@link
71  * android.car.hardware.property.CarPropertyManager#setProperty(Class, int, int, Object)}).
72  */
73 public final class VehiclePropertyIds {
74 
75     /**
76      * Undefined property.
77      *
78      * <p>This property should never be used/will never be supported.
79      */
80     public static final int INVALID = 0;
81     /**
82      * VIN of vehicle
83      *
84      * <p>Property Config:
85      * <ul>
86      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
87      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
88      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
89      *  <li>{@code String} property type
90      * </ul>
91      *
92      * <p>Required Permission:
93      * <ul>
94      *  <li>Signature|Privileged permission "android.car.permission.CAR_IDENTIFICATION" to read
95      *  property.
96      *  <li>Property is not writable.
97      * </ul>
98      */
99     @RequiresPermission(Car.PERMISSION_IDENTIFICATION)
100     public static final int INFO_VIN = 286261504;
101     /**
102      * Manufacturer of vehicle.
103      *
104      * <p>This property communicates the vehicle's public brand name.
105      *
106      * <p>Property Config:
107      * <ul>
108      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
109      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
110      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
111      *  <li>{@code String} property type
112      * </ul>
113      *
114      * <p>Required Permission:
115      * <ul>
116      *  <li>Normal permission {@link Car#PERMISSION_CAR_INFO} to read property.
117      *  <li>Property is not writable.
118      * </ul>
119      */
120     @RequiresPermission(Car.PERMISSION_CAR_INFO)
121     public static final int INFO_MAKE = 286261505;
122     /**
123      * Model of vehicle.
124      *
125      * <p>This property communicates the vehicle's public model name.
126      *
127      * <p>Property Config:
128      * <ul>
129      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
130      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
131      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
132      *  <li>{@code String} property type
133      * </ul>
134      *
135      * <p>Required Permission:
136      * <ul>
137      *  <li>Normal permission {@link Car#PERMISSION_CAR_INFO} to read property.
138      *  <li>Property is not writable.
139      * </ul>
140      */
141     @RequiresPermission(Car.PERMISSION_CAR_INFO)
142     public static final int INFO_MODEL = 286261506;
143     /**
144      * Model year of vehicle in YYYY format based on Gregorian calendar.
145      *
146      * <p>Property Config:
147      * <ul>
148      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
149      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
150      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
151      *  <li>{@code Integer} property type
152      * </ul>
153      *
154      * <p>Required Permission:
155      * <ul>
156      *  <li>Normal permission {@link Car#PERMISSION_CAR_INFO} to read property.
157      *  <li>Property is not writable.
158      * </ul>
159      */
160     @RequiresPermission(Car.PERMISSION_CAR_INFO)
161     public static final int INFO_MODEL_YEAR = 289407235;
162     /**
163      * Fuel capacity of the vehicle in milliliters.
164      *
165      * <p>This property communicates the maximum amount of the fuel that can be stored in the
166      * vehicle in milliliters. This property will not be implemented for electric vehicles. That is,
167      * if {@link #INFO_FUEL_TYPE} only contains {@link FuelType#ELECTRIC}, this property will not be
168      * implemented. For EVs, see {@link #INFO_EV_BATTERY_CAPACITY}.
169      *
170      * <p>Property Config:
171      * <ul>
172      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
173      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
174      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
175      *  <li>{@code Float} property type
176      * </ul>
177      *
178      * <p>Required Permission:
179      * <ul>
180      *  <li>Normal permission {@link Car#PERMISSION_CAR_INFO} to read property.
181      *  <li>Property is not writable.
182      * </ul>
183      */
184     @RequiresPermission(Car.PERMISSION_CAR_INFO)
185     public static final int INFO_FUEL_CAPACITY = 291504388;
186     /**
187      * List the {@link FuelType}s the vehicle may use.
188      *
189      * <p>{@link FuelType#ELECTRIC} will only be included if the vehicle is plug in rechargeable.
190      * Note that for this reason, even though {@link FuelType#ELECTRIC} is not listed as a fuel
191      * type, other EV properties such as {@link #INFO_EV_BATTERY_CAPACITY} can still be supported on
192      * the vehicle.
193      *
194      * <p>For example:
195      * <ul>
196      *  <li>FHEVs (Fully Hybrid Electric Vehicles) will not include {@link FuelType#ELECTRIC} in its
197      *  {@code Integer[]} value. So {@code INFO_FUEL_TYPE} will be populated as such:
198      *  { {@link FuelType#UNLEADED} }.
199      *  <li>On the other hand, PHEVs (Plug-in Hybrid Electric Vehicles) are plug in rechargeable,
200      *  and hence will include {@link FuelType#ELECTRIC} in {@code INFO_FUEL_TYPE}'s {@code
201      *  Integer[]} value. So {@code INFO_FUEL_TYPE} will be populated as such:
202      *  { {@link FuelType#UNLEADED}, {@link FuelType#ELECTRIC} }.
203      * </ul>
204      *
205      * <p>Property Config:
206      * <ul>
207      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
208      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
209      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
210      *  <li>{@code Integer[]} property type
211      * </ul>
212      *
213      * <p>Required Permission:
214      * <ul>
215      *  <li>Normal permission {@link Car#PERMISSION_CAR_INFO} to read property.
216      *  <li>Property is not writable.
217      * </ul>
218      *
219      * @data_enum {@link FuelType}
220      */
221     @RequiresPermission(Car.PERMISSION_CAR_INFO)
222     public static final int INFO_FUEL_TYPE = 289472773;
223     /**
224      * Nominal usable battery capacity for EV or hybrid vehicle.
225      *
226      * <p>Returns the nominal battery capacity in {@link android.car.VehicleUnit#WATT_HOUR}, if EV
227      * or hybrid. This is the usable battery capacity when the vehicle is new. This value might be
228      * different from {@link #EV_CURRENT_BATTERY_CAPACITY} because {@link
229      * #EV_CURRENT_BATTERY_CAPACITY} returns the real-time usable battery capacity taking into
230      * account factors such as battery aging and temperature dependency.
231      *
232      * <p>Property Config:
233      * <ul>
234      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
235      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
236      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
237      *  <li>{@code Float} property type
238      * </ul>
239      *
240      * <p>Required Permission:
241      * <ul>
242      *  <li>Normal permission {@link Car#PERMISSION_CAR_INFO} to read property.
243      *  <li>Property is not writable.
244      * </ul>
245      */
246     @RequiresPermission(Car.PERMISSION_CAR_INFO)
247     public static final int INFO_EV_BATTERY_CAPACITY = 291504390;
248     /**
249      * List of {@link android.car.hardware.property.EvChargingConnectorType}s this vehicle may use.
250      *
251      * <p>If the vehicle has multiple charging ports, this property will return all possible
252      * connector types that can be used by at least one charging port on the vehicle.
253      *
254      * <p>Property Config:
255      * <ul>
256      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
257      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
258      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
259      *  <li>{@code Integer[]} property type
260      * </ul>
261      *
262      * <p>Required Permission:
263      * <ul>
264      *  <li>Normal permission {@link Car#PERMISSION_CAR_INFO} to read property.
265      *  <li>Property is not writable.
266      * </ul>
267      *
268      * @data_enum {@link EvChargingConnectorType}
269      */
270     @RequiresPermission(Car.PERMISSION_CAR_INFO)
271     public static final int INFO_EV_CONNECTOR_TYPE = 289472775;
272     /**
273      * {@link PortLocationType} for the fuel door location.
274      *
275      * <p>This property communicates the location of the fuel door on the vehicle. This property
276      * will not be implemented for electric vehicles. That is, if {@link #INFO_FUEL_TYPE} only
277      * contains {@link FuelType#ELECTRIC}, this property will not be implemented. For EVs, see
278      * {@link #INFO_EV_PORT_LOCATION} or {@link #INFO_MULTI_EV_PORT_LOCATIONS}.
279      *
280      * <p>Property Config:
281      * <ul>
282      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
283      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
284      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
285      *  <li>{@code Integer} property type
286      * </ul>
287      *
288      * <p>Required Permission:
289      * <ul>
290      *  <li>Normal permission {@link Car#PERMISSION_CAR_INFO} to read property.
291      *  <li>Property is not writable.
292      * </ul>
293      *
294      * @data_enum {@link PortLocationType}
295      */
296     @RequiresPermission(Car.PERMISSION_CAR_INFO)
297     public static final int INFO_FUEL_DOOR_LOCATION = 289407240;
298     /**
299      * {@link PortLocationType} for the EV port location.
300      *
301      * <p>This property communicates the location of the charging port on the EV. If there are
302      * multiple ports on the vehicle, this will communicate the port that enables the fastest
303      * charging on the vehicle. See {@link #INFO_MULTI_EV_PORT_LOCATIONS} to get information on all
304      * port locations.
305      *
306      * <p>Property Config:
307      * <ul>
308      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
309      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
310      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
311      *  <li>{@code Integer} property type
312      * </ul>
313      *
314      * <p>Required Permission:
315      * <ul>
316      *  <li>Normal permission {@link Car#PERMISSION_CAR_INFO} to read property.
317      *  <li>Property is not writable.
318      * </ul>
319      *
320      * @data_enum {@link PortLocationType}
321      */
322     @RequiresPermission(Car.PERMISSION_CAR_INFO)
323     public static final int INFO_EV_PORT_LOCATION = 289407241;
324     /**
325      * List {@link PortLocationType}s for Multiple EV port locations.
326      *
327      * <p>Property Config:
328      * <ul>
329      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
330      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
331      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
332      *  <li>{@code Integer[]} property type
333      * </ul>
334      *
335      * <p>Required Permission:
336      * <ul>
337      *  <li>Normal permission {@link Car#PERMISSION_CAR_INFO} to read property.
338      *  <li>Property is not writable.
339      * </ul>
340      *
341      * @data_enum {@link PortLocationType}
342      */
343     @RequiresPermission(Car.PERMISSION_CAR_INFO)
344     public static final int INFO_MULTI_EV_PORT_LOCATIONS = 289472780;
345     /**
346      * Driver's seat location.
347      *
348      * <p>The only area ID listed in {@link android.car.hardware.CarPropertyConfig#getAreaIds} for
349      * {@code INFO_DRIVER_SEAT} will be {@code 0}.
350      *
351      * <p>Property Config:
352      * <ul>
353      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
354      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
355      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
356      *  <li>{@code Integer} property type
357      * </ul>
358      *
359      * <p>Required Permission:
360      * <ul>
361      *  <li>Normal permission {@link Car#PERMISSION_CAR_INFO} to read property.
362      *  <li>Property is not writable.
363      * </ul>
364      *
365      * @data_enum {@link VehicleAreaSeat}
366      */
367     @RequiresPermission(Car.PERMISSION_CAR_INFO)
368     public static final int INFO_DRIVER_SEAT = 356516106;
369     /**
370      * Vehicle's exterior dimensions in millimeters.
371      *
372      * <p>Exterior dimensions defined in the {@link CarPropertyValue#getValue()} {@code Integer[]}:
373      * <ul>
374      *  <li>Integer[0] = height
375      *  <li>Integer[1] = length
376      *  <li>Integer[2] = width
377      *  <li>Integer[3] = width including mirrors
378      *  <li>Integer[4] = wheel base
379      *  <li>Integer[5] = track width front
380      *  <li>Integer[6] = track width rear
381      *  <li>Integer[7] = curb to curb turning diameter
382      * </ul>
383      *
384      * <p>Property Config:
385      * <ul>
386      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
387      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
388      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
389      *  <li>{@code Integer[]} property type
390      * </ul>
391      *
392      * <p>Required Permission:
393      * <ul>
394      *  <li>Normal permission {@link Car#PERMISSION_CAR_INFO} to read property.
395      *  <li>Property is not writable.
396      * </ul>
397      */
398     @RequiresPermission(Car.PERMISSION_CAR_INFO)
399     public static final int INFO_EXTERIOR_DIMENSIONS = 289472779;
400     /**
401      * Current odometer value of the vehicle in kilometers.
402      *
403      * <p>Property Config:
404      * <ul>
405      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
406      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
407      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_CONTINUOUS}
408      *  <li>{@code Float} property type
409      * </ul>
410      *
411      * <p>Required Permission:
412      * <ul>
413      *  <li>Signature|Privileged permission "android.car.permission.CAR_MILEAGE" to read property.
414      *  <li>Property is not writable.
415      * </ul>
416      */
417     @RequiresPermission(Car.PERMISSION_MILEAGE)
418     public static final int PERF_ODOMETER = 291504644;
419     /**
420      * Speed of the vehicle in meters per second.
421      *
422      * <p>When the vehicle is moving forward, {@code PERF_VEHICLE_SPEED} is positive and negative
423      * when the vehicle is moving backward. Also, this value is independent of gear value ({@link
424      * #CURRENT_GEAR} or {@link #GEAR_SELECTION}). For example, if {@link #GEAR_SELECTION} is
425      * {@link VehicleGear#GEAR_NEUTRAL}, {@code PERF_VEHICLE_SPEED} is positive when the vehicle is
426      * moving forward, negative when moving backward, and zero when not moving.
427      *
428      * <p>Property Config:
429      * <ul>
430      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
431      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
432      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_CONTINUOUS}
433      *  <li>{@code Float} property type
434      * </ul>
435      *
436      * <p>Required Permission:
437      * <ul>
438      *  <li>Dangerous permission {@link Car#PERMISSION_SPEED} to read property.
439      *  <li>Property is not writable.
440      * </ul>
441      */
442     @RequiresPermission(Car.PERMISSION_SPEED)
443     public static final int PERF_VEHICLE_SPEED = 291504647;
444     /**
445      * Speed of the vehicle in meters per second for displays.
446      *
447      * <p>Some cars display a slightly slower speed than the actual speed. This is
448      * usually displayed on the speedometer.
449      *
450      * <p>Property Config:
451      * <ul>
452      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
453      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
454      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_CONTINUOUS}
455      *  <li>{@code Float} property type
456      * </ul>
457      *
458      * <p>Required Permission:
459      * <ul>
460      *  <li>Dangerous permission {@link Car#PERMISSION_SPEED} to read property.
461      *  <li>Property is not writable.
462      * </ul>
463      */
464     @RequiresPermission(Car.PERMISSION_SPEED)
465     public static final int PERF_VEHICLE_SPEED_DISPLAY = 291504648;
466     /**
467      * Front bicycle model steering angle for vehicle in degrees.
468      *
469      * <p>Left is negative.
470      *
471      * <p>This property is independent of the angle of the steering wheel. This property
472      * communicates the angle of the front wheels with respect to the vehicle, not the angle of the
473      * steering wheel.
474      *
475      * <p>Property Config:
476      * <ul>
477      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
478      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
479      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_CONTINUOUS}
480      *  <li>{@code Float} property type
481      * </ul>
482      *
483      * <p>Required Permission:
484      * <ul>
485      *  <li>Signature|Privileged permission "android.car.permission.READ_CAR_STEERING" to read
486      *  property.
487      *  <li>Property is not writable.
488      * </ul>
489      */
490     @RequiresPermission(Car.PERMISSION_READ_STEERING_STATE)
491     public static final int PERF_STEERING_ANGLE = 291504649;
492     /**
493      * Rear bicycle model steering angle for vehicle in degrees.
494      *
495      * <p>Left is negative.
496      *
497      * <p>This property is independent of the angle of the steering wheel. This property
498      * communicates the angle of the rear wheels with respect to the vehicle, not the angle of the
499      * steering wheel.
500      *
501      * <p>Property Config:
502      * <ul>
503      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
504      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
505      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_CONTINUOUS}
506      *  <li>{@code Float} property type
507      * </ul>
508      *
509      * <p>Required Permission:
510      * <ul>
511      *  <li>Signature|Privileged permission "android.car.permission.READ_CAR_STEERING" to read
512      *  property.
513      *  <li>Property is not writable.
514      * </ul>
515      */
516     @RequiresPermission(Car.PERMISSION_READ_STEERING_STATE)
517     public static final int PERF_REAR_STEERING_ANGLE = 291504656;
518     /**
519      * Temperature of engine coolant in celsius.
520      *
521      * <p>Property Config:
522      * <ul>
523      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
524      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
525      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_CONTINUOUS}
526      *  <li>{@code Float} property type
527      * </ul>
528      *
529      * <p>Required Permission:
530      * <ul>
531      *  <li>Signature|Privileged permission "android.car.permission.CAR_ENGINE_DETAILED" to read
532      *  property.
533      *  <li>Property is not writable.
534      * </ul>
535      */
536     @RequiresPermission(Car.PERMISSION_CAR_ENGINE_DETAILED)
537     public static final int ENGINE_COOLANT_TEMP = 291504897;
538     /**
539      * Engine oil level.
540      *
541      * <p>Returns the status of the oil level for the vehicle. See {@code VehicleOilLevel} for
542      * possible values for {@code ENGINE_OIL_LEVEL}.
543      *
544      * <p>Property Config:
545      * <ul>
546      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
547      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
548      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
549      *  <li>{@code Integer} property type
550      * </ul>
551      *
552      * <p>Required Permission:
553      * <ul>
554      *  <li>Signature|Privileged permission "android.car.permission.CAR_ENGINE_DETAILED" to read
555      *  property.
556      *  <li>Property is not writable.
557      * </ul>
558      *
559      * @data_enum {@link VehicleOilLevel}
560      */
561     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_CAR_ENGINE_DETAILED))
562     public static final int ENGINE_OIL_LEVEL = 289407747;
563     /**
564      * Temperature of engine oil in celsius.
565      *
566      * <p>Property Config:
567      * <ul>
568      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
569      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
570      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_CONTINUOUS}
571      *  <li>{@code Float} property type
572      * </ul>
573      *
574      * <p>Required Permission:
575      * <ul>
576      *  <li>Signature|Privileged permission "android.car.permission.CAR_ENGINE_DETAILED" to read
577      *  property.
578      *  <li>Property is not writable.
579      * </ul>
580      */
581     @RequiresPermission(Car.PERMISSION_CAR_ENGINE_DETAILED)
582     public static final int ENGINE_OIL_TEMP = 291504900;
583     /**
584      * Engine rpm.
585      *
586      * <p>Property Config:
587      * <ul>
588      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
589      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
590      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_CONTINUOUS}
591      *  <li>{@code Float} property type
592      * </ul>
593      *
594      * <p>Required Permission:
595      * <ul>
596      *  <li>Signature|Privileged permission "android.car.permission.CAR_ENGINE_DETAILED" to read
597      *  property.
598      *  <li>Property is not writable.
599      * </ul>
600      */
601     @RequiresPermission(Car.PERMISSION_CAR_ENGINE_DETAILED)
602     public static final int ENGINE_RPM = 291504901;
603     /**
604      * Represents feature for engine idle automatic stop.
605      *
606      * <p>If true, the vehicle may automatically shut off the engine when it is not needed and then
607      * automatically restart it when needed.
608      *
609      * <p>Property Config:
610      * <ul>
611      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
612      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
613      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
614      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
615      *  <li>{@code Boolean} property type
616      * </ul>
617      *
618      * <p>Required Permission:
619      * <ul>
620      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CAR_ENGINE_DETAILED} to read and
621      *  write property.
622      * </ul>
623      *
624      * @hide
625      */
626     @SystemApi
627     @RequiresPermission(Car.PERMISSION_CAR_ENGINE_DETAILED)
628     public static final int ENGINE_IDLE_AUTO_STOP_ENABLED = 287310624;
629     /**
630      * Impact detected.
631      *
632      * <p>Bit flag property to relay information on whether an impact has occurred on a particular
633      * side of the vehicle as described through the {@link
634      * android.car.hardware.property.ImpactSensorLocation} enum. As a bit flag property, this
635      * property can be set to multiple ORed together values of the enum when necessary.
636      *
637      * <p>For the global area ID (0), the {@link
638      * android.car.hardware.property.AreaIdConfig#getSupportedEnumValues()} array obtained from
639      * {@link android.car.hardware.CarPropertyConfig#getAreaIdConfig(int)} specifies which bit flags
640      * from {@link android.car.hardware.property.ImpactSensorLocation} are supported.
641      *
642      * <p>Property Config:
643      * <ul>
644      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
645      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
646      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
647      *  <li>{@code Integer} property type
648      * </ul>
649      *
650      * <p>Required Permission:
651      * <ul>
652      *  <li>Signature|Privileged permission "android.car.permission.READ_IMPACT_SENSORS" to read
653      *  property.
654      *  <li>Property is not writable.
655      * </ul>
656      *
657      * @data_enum {@link android.car.hardware.property.ImpactSensorLocation}
658      *
659      * @hide
660      */
661     @FlaggedApi(FLAG_ANDROID_VIC_VEHICLE_PROPERTIES)
662     @SystemApi
663     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_IMPACT_SENSORS))
664     public static final int IMPACT_DETECTED = 289407792;
665     /**
666      * Reports wheel ticks.
667      *
668      * <p>The first element in the array is a reset count.  A reset indicates
669      * previous tick counts are not comparable with this and future ones.  Some
670      * sort of discontinuity in tick counting has occurred.
671      *
672      * <p>The next four elements represent ticks for individual wheels in the
673      * following order: front left, front right, rear right, rear left.  All
674      * tick counts are cumulative.  Tick counts increment when the vehicle
675      * moves forward, and decrement when vehicles moves in reverse.  The ticks
676      * should be reset to 0 when the vehicle is started by the user.
677      *
678      * <ul>
679      *  <li>Long[0] = reset count
680      *  <li>Long[1] = front left ticks
681      *  <li>Long[2] = front right ticks
682      *  <li>Long[3] = rear right ticks
683      *  <li>Long[4] = rear left ticks
684      * </ul>
685      *
686      * <p>configArray is used to indicate the micrometers-per-wheel-tick values and
687      * which wheels are supported. Each micrometers-per-wheel-tick value is static (i.e. will not
688      * update based on wheel's status) and a best approximation. For example, if a vehicle has
689      * multiple rim/tire size options, the micrometers-per-wheel-tick values are set to those for
690      * the typically expected rim/tire size. configArray is set as follows:
691      *
692      * <ul>
693      *  <li>configArray[0], bits [0:3] = supported wheels. Uses {@link VehicleAreaWheel}. For
694      *  example, if all wheels are supported, then configArray[0] = {@link
695      *  VehicleAreaWheel#WHEEL_LEFT_FRONT} | {@link VehicleAreaWheel#WHEEL_RIGHT_FRONT} | {@link
696      *  VehicleAreaWheel#WHEEL_LEFT_REAR} | {@link VehicleAreaWheel#WHEEL_RIGHT_REAR}
697      *  <li>configArray[1] = micrometers per front left wheel tick
698      *  <li>configArray[2] = micrometers per front right wheel tick
699      *  <li>configArray[3] = micrometers per rear right wheel tick
700      *  <li>configArray[4] = micrometers per rear left wheel tick
701      * </ul>
702      *
703      * <p>NOTE:  If a wheel is not supported, its value is always 0.
704      *
705      * <p>Property Config:
706      * <ul>
707      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
708      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
709      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_CONTINUOUS}
710      *  <li>{@code Long[]} property type
711      * </ul>
712      *
713      * <p>Required Permission:
714      * <ul>
715      *  <li>Dangerous permission {@link Car#PERMISSION_SPEED} to read property.
716      *  <li>Property is not writable.
717      * </ul>
718      */
719     @RequiresPermission(Car.PERMISSION_SPEED)
720     public static final int WHEEL_TICK = 290521862;
721     /**
722      * Fuel level in milliliters.
723      *
724      * <p>This property communicates the current amount of fuel remaining in the vehicle in
725      * milliliters. This property will not be implemented for electric vehicles. That is, if {@link
726      * #INFO_FUEL_TYPE} only contains {@link FuelType#ELECTRIC}, this property will not be
727      * implemented. For EVs, see {@link #EV_BATTERY_LEVEL}.
728      *
729      * <p>This property's value will not exceed {@link #INFO_FUEL_CAPACITY}.
730      *
731      * <p>Property Config:
732      * <ul>
733      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
734      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
735      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_CONTINUOUS}
736      *  <li>{@code Float} property type
737      * </ul>
738      *
739      * <p>Required Permission:
740      * <ul>
741      *  <li>Dangerous permission {@link Car#PERMISSION_ENERGY} to read property.
742      *  <li>Property is not writable.
743      * </ul>
744      */
745     @RequiresPermission(Car.PERMISSION_ENERGY)
746     public static final int FUEL_LEVEL = 291504903;
747     /**
748      * Fuel door open.
749      *
750      * <p>This property communicates whether the fuel door on the vehicle is open or not. This
751      * property will not be implemented for electric vehicles. That is, if {@link #INFO_FUEL_TYPE}
752      * only contains {@link FuelType#ELECTRIC}, this property will not be implemented. For EVs, see
753      * {@link #EV_CHARGE_PORT_OPEN}.
754      *
755      * <p>Property Config:
756      * <ul>
757      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
758      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
759      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
760      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
761      *  <li>{@code Boolean} property type
762      * </ul>
763      *
764      * <p>Required Permissions:
765      * <ul>
766      *  <li>Normal permission {@link Car#PERMISSION_ENERGY_PORTS} or Signature|Privileged permission
767      *  "android.car.permission.CONTROL_CAR_ENERGY_PORTS"to read property.
768      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_ENERGY_PORTS" to
769      *  write property.
770      * </ul>
771      */
772     @RequiresPermission.Read(@RequiresPermission(anyOf = {Car.PERMISSION_ENERGY_PORTS,
773             Car.PERMISSION_CONTROL_ENERGY_PORTS}))
774     @RequiresPermission.Write(@RequiresPermission(Car.PERMISSION_CONTROL_ENERGY_PORTS))
775     public static final int FUEL_DOOR_OPEN = 287310600;
776     /**
777      * EV battery level.
778      *
779      * <p>Returns the current battery level in {@link android.car.VehicleUnit#WATT_HOUR}, if EV or
780      * hybrid. This value will not exceed {@link #EV_CURRENT_BATTERY_CAPACITY}. To calculate the
781      * battery percentage, use:
782      * ({@link #EV_BATTERY_LEVEL}/{@link #EV_CURRENT_BATTERY_CAPACITY})*100.
783      *
784      * <p>Property Config:
785      * <ul>
786      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
787      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
788      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_CONTINUOUS}
789      *  <li>{@code Float} property type
790      * </ul>
791      *
792      * <p>Required Permission:
793      * <ul>
794      *  <li>Dangerous permission {@link Car#PERMISSION_ENERGY} to read property.
795      *  <li>Property is not writable.
796      * </ul>
797      */
798     @RequiresPermission(Car.PERMISSION_ENERGY)
799     public static final int EV_BATTERY_LEVEL = 291504905;
800     /**
801      * Current usable battery capacity for EV or hybrid vehicle.
802      *
803      * <p>Returns the actual value of battery capacity in {@link android.car.VehicleUnit#WATT_HOUR},
804      * if EV or hybrid. This property captures the real-time usable battery capacity taking into
805      * account factors such as battery aging and temperature dependency. Therefore, this value might
806      * be different from {@link #INFO_EV_BATTERY_CAPACITY} because {@link #INFO_EV_BATTERY_CAPACITY}
807      * returns the nominal battery capacity from when the vehicle was new.
808      *
809      * <p>Property Config:
810      * <ul>
811      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
812      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
813      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
814      *  <li>{@code Float} property type
815      * </ul>
816      *
817      * <p>Required Permission:
818      * <ul>
819      *  <li>Dangerous permission {@link Car#PERMISSION_ENERGY} to read property.
820      *  <li>Property is not writable.
821      * </ul>
822      */
823     @RequiresPermission(Car.PERMISSION_ENERGY)
824     public static final int EV_CURRENT_BATTERY_CAPACITY = 291504909;
825     /**
826      * EV charge port open.
827      *
828      * <p>If the vehicle has multiple charging ports, this property will return true if any of the
829      * charge ports are open.
830      *
831      * <p>Property Config:
832      * <ul>
833      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
834      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
835      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
836      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
837      *  <li>{@code Boolean} property type
838      * </ul>
839      *
840      * <p>Required Permissions:
841      * <ul>
842      *  <li>Normal permission {@link Car#PERMISSION_ENERGY_PORTS} or Signature|Privileged permission
843      *  "android.car.permission.CONTROL_CAR_ENERGY_PORTS"to read property.
844      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_ENERGY_PORTS" to
845      *  write property.
846      * </ul>
847      */
848     @RequiresPermission.Read(@RequiresPermission(anyOf = {Car.PERMISSION_ENERGY_PORTS,
849             Car.PERMISSION_CONTROL_ENERGY_PORTS}))
850     @RequiresPermission.Write(@RequiresPermission(Car.PERMISSION_CONTROL_ENERGY_PORTS))
851     public static final int EV_CHARGE_PORT_OPEN = 287310602;
852     /**
853      * EV charge port connected.
854      *
855      * <p>If the vehicle has multiple charging ports, this property will return true if any of the
856      * charge ports are connected.
857      *
858      * <p>Property Config:
859      * <ul>
860      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
861      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
862      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
863      *  <li>{@code Boolean} property type
864      * </ul>
865      *
866      * <p>Required Permission:
867      * <ul>
868      *  <li>Normal permission {@link Car#PERMISSION_ENERGY_PORTS} to read property.
869      *  <li>Property is not writable.
870      * </ul>
871      */
872     @RequiresPermission(Car.PERMISSION_ENERGY_PORTS)
873     public static final int EV_CHARGE_PORT_CONNECTED = 287310603;
874     /**
875      * EV instantaneous charge rate in milliwatts.
876      *
877      * <p>Positive rate indicates battery is being charged, and Negative rate indicates battery
878      * being discharged.
879      *
880      * <p>Property Config:
881      * <ul>
882      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
883      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
884      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_CONTINUOUS}
885      *  <li>{@code Float} property type
886      * </ul>
887      *
888      * <p>Required Permission:
889      * <ul>
890      *  <li>Dangerous permission {@link Car#PERMISSION_ENERGY} to read property.
891      *  <li>Property is not writable.
892      * </ul>
893      */
894     @RequiresPermission(Car.PERMISSION_ENERGY)
895     public static final int EV_BATTERY_INSTANTANEOUS_CHARGE_RATE = 291504908;
896     /**
897      * Range remaining in meters.
898      *
899      * <p>Range remaining accounts for all energy sources in a vehicle.  For example, a hybrid car's
900      * range will be the sum of the ranges based on fuel and battery.
901      *
902      * <p>Property Config:
903      * <ul>
904      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
905      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
906      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
907      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_CONTINUOUS}
908      *  <li>{@code Float} property type
909      * </ul>
910      *
911      * <p>Required Permissions:
912      * <ul>
913      *  <li>Dangerous permission {@link Car#PERMISSION_ENERGY} or Signature|Privileged permission
914      *  "android.car.permission.ADJUST_RANGE_REMAINING" to read property.
915      *  <li>Signature|Privileged permission "android.car.permission.ADJUST_RANGE_REMAINING" to write
916      *  property.
917      * </ul>
918      */
919     @RequiresPermission.Read(@RequiresPermission(anyOf = {Car.PERMISSION_ENERGY,
920             Car.PERMISSION_ADJUST_RANGE_REMAINING}))
921     @RequiresPermission.Write(@RequiresPermission(Car.PERMISSION_ADJUST_RANGE_REMAINING))
922     public static final int RANGE_REMAINING = 291504904;
923     /**
924      * EV battery average temperature
925      *
926      * <p>Exposes the temperature of the battery in an EV. If multiple batteries exist in the EV, or
927      * multiple temperature sensors exist, this property will be set to a meaningful weighted
928      * average that best represents the overall temperature of the battery system.
929      *
930      * <p>Property Config:
931      * <ul>
932      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
933      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
934      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_CONTINUOUS}
935      *  <li>{@code Float} property type
936      * </ul>
937      *
938      * <p>Required Permissions:
939      * <ul>
940      *  <li>Dangerous permission {@link Car#PERMISSION_ENERGY} to read property.
941      *  <li>Property is not writable.
942      * </ul>
943      */
944     @FlaggedApi(FLAG_ANDROID_VIC_VEHICLE_PROPERTIES)
945     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_ENERGY))
946     public static final int EV_BATTERY_AVERAGE_TEMPERATURE = 291504910;
947     /**
948      * Tire pressure in kilopascals.
949      *
950      * <p>For each area ID listed in {@link android.car.hardware.CarPropertyConfig#getAreaIds}, the
951      * corresponding {@link android.car.hardware.property.AreaIdConfig#getMinValue()} and {@link
952      * android.car.hardware.property.AreaIdConfig#getMaxValue()} indicates the OEM recommended tire
953      * pressure range for that tire.
954      *
955      * <p>Property Config:
956      * <ul>
957      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
958      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_WHEEL}
959      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_CONTINUOUS}
960      *  <li>{@code Float} property type
961      * </ul>
962      *
963      * <p>Required Permission:
964      * <ul>
965      *  <li>Signature|Privileged permission "android.car.permission.CAR_TIRES" to read property.
966      *  <li>Property is not writable.
967      * </ul>
968      */
969     @RequiresPermission(Car.PERMISSION_TIRES)
970     public static final int TIRE_PRESSURE = 392168201;
971     /**
972      * Critically low tire pressure.
973      *
974      * <p>For each area ID listed in {@link android.car.hardware.CarPropertyConfig#getAreaIds}, the
975      * corresponding {@code CRITICALLY_LOW_TIRE_PRESSURE} will be less than or equal the {@link
976      * android.car.hardware.property.AreaIdConfig#getMinValue()} of {@link #TIRE_PRESSURE} for the
977      * same area ID.
978      *
979      * <p>Property Config:
980      * <ul>
981      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
982      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_WHEEL}
983      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
984      *  <li>{@code Float} property type
985      * </ul>
986      *
987      * <p>Required Permission:
988      * <ul>
989      *  <li>Signature|Privileged permission "android.car.permission.CAR_TIRES" to read property.
990      *  <li>Property is not writable.
991      * </ul>
992      */
993     @RequiresPermission(Car.PERMISSION_TIRES)
994     public static final int CRITICALLY_LOW_TIRE_PRESSURE = 392168202;
995     /**
996      * Currently selected gear by user.
997      *
998      * <p> See {@link VehicleGear} for gear value enum.
999      *
1000      * <p>configArray represents the list of supported gears for the vehicle. For example,
1001      * configArray for an EV vehicle is set as follows:
1002      *
1003      * <ul>
1004      *  <li>configArray[0] = {@link VehicleGear#GEAR_REVERSE}
1005      *  <li>configArray[1] = {@link VehicleGear#GEAR_PARK}
1006      *  <li>configArray[2] = {@link VehicleGear#GEAR_DRIVE}
1007      * </ul>
1008      *
1009      * <p>Example automatic transmission configArray:
1010      *
1011      * <ul>
1012      *  <li>configArray[0] = {@link VehicleGear#GEAR_NEUTRAL}
1013      *  <li>configArray[1] = {@link VehicleGear#GEAR_REVERSE}
1014      *  <li>configArray[2] = {@link VehicleGear#GEAR_PARK}
1015      *  <li>configArray[3] = {@link VehicleGear#GEAR_DRIVE}
1016      *  <li>configArray[4] = {@link VehicleGear#GEAR_FIRST}
1017      *  <li>configArray[5] = {@link VehicleGear#GEAR_SECOND}
1018      *  <li>...
1019      * </ul>
1020      *
1021      * <p>Example manual transmission configArray:
1022      *
1023      * <ul>
1024      *  <li>configArray[0] = {@link VehicleGear#GEAR_NEUTRAL}
1025      *  <li>configArray[1] = {@link VehicleGear#GEAR_REVERSE}
1026      *  <li>configArray[4] = {@link VehicleGear#GEAR_FIRST}
1027      *  <li>configArray[5] = {@link VehicleGear#GEAR_SECOND}
1028      *  <li>...
1029      * </ul>
1030      *
1031      * <p>Property Config:
1032      * <ul>
1033      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1034      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
1035      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1036      *  <li>{@code Integer} property type
1037      * </ul>
1038      *
1039      * <p>Required Permission:
1040      * <ul>
1041      *  <li>Normal permission {@link Car#PERMISSION_POWERTRAIN} to read property.
1042      *  <li>Property is not writable.
1043      * </ul>
1044      *
1045      * @data_enum {@link VehicleGear}
1046      */
1047     @RequiresPermission(Car.PERMISSION_POWERTRAIN)
1048     public static final int GEAR_SELECTION = 289408000;
1049     /**
1050      * Vehicle transmission's current {@link VehicleGear}.
1051      *
1052      * <p>{@code CURRENT_GEAR}'s value may not match that of {@link
1053      * VehiclePropertyIds#GEAR_SELECTION}. For example, if the {@link
1054      * VehiclePropertyIds#GEAR_SELECTION} is {@link VehicleGear#GEAR_DRIVE} in a vehicle with an
1055      * automatic transmission, the {@code CURRENT_GEAR} will be one of {@link
1056      * VehicleGear#GEAR_FIRST}, {@link VehicleGear#GEAR_SECOND}, etc, which reflects the actual gear
1057      * the transmission is currently running in.
1058      *
1059      * <p>configArray represents the list of supported {@link VehicleGear}s for {@code
1060      * CURRENT_GEAR}. For example, the configArray for an EV vehicle is set as follows:
1061      *
1062      * <ul>
1063      *  <li>configArray[0] = {@link VehicleGear#GEAR_REVERSE}
1064      *  <li>configArray[1] = {@link VehicleGear#GEAR_PARK}
1065      *  <li>configArray[2] = {@link VehicleGear#GEAR_DRIVE}
1066      * </ul>
1067      *
1068      * <p>Example automatic transmission configArray:
1069      *
1070      * <ul>
1071      *  <li>configArray[0] = {@link VehicleGear#GEAR_NEUTRAL}
1072      *  <li>configArray[1] = {@link VehicleGear#GEAR_REVERSE}
1073      *  <li>configArray[2] = {@link VehicleGear#GEAR_PARK}
1074      *  <li>configArray[4] = {@link VehicleGear#GEAR_FIRST}
1075      *  <li>configArray[5] = {@link VehicleGear#GEAR_SECOND}
1076      *  <li>...
1077      * </ul>
1078      *
1079      * <p>Example manual transmission configArray:
1080      *
1081      * <ul>
1082      *  <li>configArray[0] = {@link VehicleGear#GEAR_NEUTRAL}
1083      *  <li>configArray[1] = {@link VehicleGear#GEAR_REVERSE}
1084      *  <li>configArray[4] = {@link VehicleGear#GEAR_FIRST}
1085      *  <li>configArray[5] = {@link VehicleGear#GEAR_SECOND}
1086      *  <li>...
1087      * </ul>
1088      *
1089      * <p>Property Config:
1090      * <ul>
1091      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1092      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
1093      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1094      *  <li>{@code Integer} property type
1095      * </ul>
1096      *
1097      * <p>Required Permission:
1098      * <ul>
1099      *  <li>Normal permission {@link Car#PERMISSION_POWERTRAIN} to read property.
1100      *  <li>Property is not writable.
1101      * </ul>
1102      *
1103      * @data_enum {@link VehicleGear}
1104      */
1105     @RequiresPermission(Car.PERMISSION_POWERTRAIN)
1106     public static final int CURRENT_GEAR = 289408001;
1107     /**
1108      * Parking brake state.
1109      *
1110      * <p>{@code PARKING_BRAKE_ON} is true indicates that the car's parking brake is currently
1111      * engaged. False implies that the car's parking brake is currently disengaged.
1112      *
1113      * <p>Property Config:
1114      * <ul>
1115      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1116      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
1117      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1118      *  <li>{@code Boolean} property type
1119      * </ul>
1120      *
1121      * <p>Required Permission:
1122      * <ul>
1123      *  <li>Normal permission {@link Car#PERMISSION_POWERTRAIN} to read property.
1124      *  <li>Property is not writable.
1125      * </ul>
1126      */
1127     @RequiresPermission(Car.PERMISSION_POWERTRAIN)
1128     public static final int PARKING_BRAKE_ON = 287310850;
1129     /**
1130      * Auto-apply parking brake.
1131      *
1132      * <p>{@code PARKING_BRAKE_AUTO_APPLY} is true indicates that the car's automatic parking brake
1133      * feature is currently enabled. False indicates that the car's automatic parking brake feature
1134      * is currently disabled.
1135      *
1136      * <p>This property is often confused with {@link #PARKING_BRAKE_ON}. The difference is that
1137      * {@link #PARKING_BRAKE_ON} describes whether the actual parking brake is currently on/off,
1138      * whereas {@code PARKING_BRAKE_AUTO_APPLY} describes whether the feature of automatic parking
1139      * brake is enabled/disabled, and does not describe the current state of the actual parking
1140      * brake.
1141      *
1142      * <p>Property Config:
1143      * <ul>
1144      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1145      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
1146      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1147      *  <li>{@code Boolean} property type
1148      * </ul>
1149      *
1150      * <p>Required Permission:
1151      * <ul>
1152      *  <li>Normal permission {@link Car#PERMISSION_POWERTRAIN} to read property.
1153      *  <li>Property is not writable.
1154      * </ul>
1155      */
1156     @RequiresPermission(Car.PERMISSION_POWERTRAIN)
1157     public static final int PARKING_BRAKE_AUTO_APPLY = 287310851;
1158     /**
1159      * Regenerative braking level of an electronic vehicle.
1160      *
1161      * <p>Returns the current setting for the regenerative braking level. Larger setting values mean
1162      * more energy regenerated from braking while smaller setting values mean less energy
1163      * regenerated from braking. 0 means the setting for no regenerative braking. See {@link
1164      * android.car.hardware.property.AreaIdConfig#getMaxValue()} and {@link
1165      * android.car.hardware.property.AreaIdConfig#getMinValue()} for the range of possible values.
1166      *
1167      * <p>Property Config:
1168      * <ul>
1169      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
1170      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1171      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
1172      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1173      *  <li>{@code Integer} property type
1174      * </ul>
1175      *
1176      * <p>Required Permissions:
1177      * <ul>
1178      *  <li>Normal permission {@link Car#PERMISSION_POWERTRAIN} or Signature|Privileged permission
1179      *  "android.car.permission.CONTROL_CAR_POWERTRAIN" to read property.
1180      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_POWERTRAIN" to write
1181      *  property.
1182      * </ul>
1183      */
1184     @RequiresPermission.Read(@RequiresPermission(anyOf = {Car.PERMISSION_POWERTRAIN,
1185             Car.PERMISSION_CONTROL_POWERTRAIN}))
1186     @RequiresPermission.Write(@RequiresPermission(Car.PERMISSION_CONTROL_POWERTRAIN))
1187     public static final int EV_BRAKE_REGENERATION_LEVEL = 289408012;
1188     /**
1189      * Represents property for the current stopping mode of the vehicle.
1190      *
1191      * <p>For the global area ID, the {@link
1192      * android.car.hardware.property.AreaIdConfig#getSupportedEnumValues()} obtained from {@link
1193      * android.car.hardware.CarPropertyConfig#getAreaIdConfig(int)} specifies which enum values from
1194      * {@code EvStoppingMode} are supported. {@code EvStoppingMode} may be extended to include more
1195      * states in the future.
1196      *
1197      * <p>Property Config:
1198      * <ul>
1199      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
1200      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1201      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
1202      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1203      *  <li>{@code Integer} property type
1204      * </ul>
1205      *
1206      * <p>Required Permissions:
1207      * <ul>
1208      *  <li>Normal permission {@link Car#PERMISSION_POWERTRAIN} or Signature|Privileged permission
1209      *  "android.car.permission.CONTROL_CAR_POWERTRAIN" to read property.
1210      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_POWERTRAIN" to write
1211      *  property.
1212      * </ul>
1213      *
1214      * @data_enum {@link EvStoppingMode}
1215      */
1216     @RequiresPermission.Read(@RequiresPermission(anyOf = {Car.PERMISSION_POWERTRAIN,
1217             Car.PERMISSION_CONTROL_POWERTRAIN}))
1218     @RequiresPermission.Write(@RequiresPermission(Car.PERMISSION_CONTROL_POWERTRAIN))
1219     public static final int EV_STOPPING_MODE = 289408013;
1220     /**
1221      * Warning for fuel low level.
1222      *
1223      * <p>{@code FUEL_LEVEL_LOW} corresponds to the low fuel warning on the dashboard. Once {@code
1224      * FUEL_LEVEL_LOW} is set, it should not be cleared until more fuel is added to the vehicle.
1225      * This property may take into account all fuel sources for a vehicle - for example:
1226      * <ul>
1227      *  <li>For a gas powered vehicle, this property is based solely on gas level.
1228      *  <li>For a battery powered vehicle, this property is based solely on battery level.
1229      *  <li>For a hybrid vehicle, this property may be based on the combination of gas and
1230      *  battery levels, at the OEM's discretion.
1231      * </ul>
1232      *
1233      * <p>Property Config:
1234      * <ul>
1235      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1236      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
1237      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1238      *  <li>{@code Boolean} property type
1239      * </ul>
1240      *
1241      * <p>Required Permission:
1242      * <ul>
1243      *  <li>Dangerous permission {@link Car#PERMISSION_ENERGY} to read property.
1244      *  <li>Property is not writable.
1245      * </ul>
1246      */
1247     @RequiresPermission(Car.PERMISSION_ENERGY)
1248     public static final int FUEL_LEVEL_LOW = 287310853;
1249     /**
1250      * Night mode.
1251      *
1252      * <p>True indicates that the night mode sensor has detected that the car cabin environment has
1253      * low light.
1254      *
1255      * <p>Property Config:
1256      * <ul>
1257      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1258      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
1259      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1260      *  <li>{@code Boolean} property type
1261      * </ul>
1262      *
1263      * <p>Required Permission:
1264      * <ul>
1265      *  <li>Normal permission {@link Car#PERMISSION_EXTERIOR_ENVIRONMENT} to read property.
1266      *  <li>Property is not writable.
1267      * </ul>
1268      */
1269     @RequiresPermission(Car.PERMISSION_EXTERIOR_ENVIRONMENT)
1270     public static final int NIGHT_MODE = 287310855;
1271     /**
1272      * State of the vehicles turn signals
1273      *
1274      * <p>See {@code VehicleTurnSignal} for possible values for {@code TURN_SIGNAL_STATE}.
1275      *
1276      * <p>Property Config:
1277      * <ul>
1278      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1279      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
1280      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1281      *  <li>{@code Integer} property type
1282      * </ul>
1283      *
1284      * <p>Required Permission:
1285      * <ul>
1286      *  <li>Signature|Privileged permission "android.car.permission.CAR_EXTERIOR_LIGHTS" to read
1287      *  property.
1288      *  <li>Property is not writable.
1289      * </ul>
1290      *
1291      * @data_enum {@link VehicleTurnSignal}
1292      */
1293     @RequiresPermission(Car.PERMISSION_EXTERIOR_LIGHTS)
1294     public static final int TURN_SIGNAL_STATE = 289408008;
1295     /**
1296      * Vehicle's ignition state.
1297      *
1298      * <p>See {@link VehicleIgnitionState} for possible values for {@code IGNITION_STATE}.
1299      *
1300      * <p>Property Config:
1301      * <ul>
1302      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1303      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
1304      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1305      *  <li>{@code Integer} property type
1306      * </ul>
1307      *
1308      * <p>Required Permission:
1309      * <ul>
1310      *  <li>Normal permission {@link Car#PERMISSION_POWERTRAIN} to read property.
1311      *  <li>Property is not writable.
1312      * </ul>
1313      *
1314      * @data_enum {@link VehicleIgnitionState}
1315      */
1316     @RequiresPermission(Car.PERMISSION_POWERTRAIN)
1317     public static final int IGNITION_STATE = 289408009;
1318     /**
1319      * ABS is active.
1320      *
1321      * <p>Property Config:
1322      * <ul>
1323      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1324      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
1325      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1326      *  <li>{@code Boolean} property type
1327      * </ul>
1328      *
1329      * <p>Required Permission:
1330      * <ul>
1331      *  <li>Signature|Privileged permission "android.car.permission.CAR_DYNAMICS_STATE" to read
1332      *  property.
1333      *  <li>Property is not writable.
1334      * </ul>
1335      */
1336     @RequiresPermission(Car.PERMISSION_CAR_DYNAMICS_STATE)
1337     public static final int ABS_ACTIVE = 287310858;
1338     /**
1339      * Traction Control is active.
1340      *
1341      * <p>Property Config:
1342      * <ul>
1343      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1344      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
1345      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1346      *  <li>{@code Boolean} property type
1347      * </ul>
1348      *
1349      * <p>Required Permission:
1350      * <ul>
1351      *  <li>Signature|Privileged permission "android.car.permission.CAR_DYNAMICS_STATE" to read
1352      *  property.
1353      *  <li>Property is not writable.
1354      * </ul>
1355      */
1356     @RequiresPermission(Car.PERMISSION_CAR_DYNAMICS_STATE)
1357     public static final int TRACTION_CONTROL_ACTIVE = 287310859;
1358     /**
1359      * Enable or disable Electronic Stability Control (ESC).
1360      *
1361      * <p>Returns true if ESC is enabled and false if ESC is disabled. When ESC is enabled, a system
1362      * in the vehicle should be controlling the tires during instances with high risk of skidding to
1363      * actively prevent the same from happening.
1364      *
1365      * <p>This property is defined as read_write, but OEMs have the option to implement it as read
1366      * only.
1367      *
1368      * <p>Property Config:
1369      * <ul>
1370      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
1371      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1372      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
1373      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1374      *  <li>{@code Boolean} property type
1375      * </ul>
1376      *
1377      * <p>Required Permissions:
1378      * <ul>
1379      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CAR_DYNAMICS_STATE} or
1380      *  Signature|Privileged permission {@link Car#PERMISSION_CONTROL_CAR_DYNAMICS_STATE} to read
1381      *  property.
1382      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_CAR_DYNAMICS_STATE} to
1383      *  write property.
1384      * </ul>
1385      *
1386      * @hide
1387      */
1388     @FlaggedApi(FLAG_ANDROID_VIC_VEHICLE_PROPERTIES)
1389     @SystemApi
1390     @RequiresPermission.Read(@RequiresPermission(anyOf = {Car.PERMISSION_CAR_DYNAMICS_STATE,
1391             Car.PERMISSION_CONTROL_CAR_DYNAMICS_STATE}))
1392     @RequiresPermission.Write(@RequiresPermission(Car.PERMISSION_CONTROL_CAR_DYNAMICS_STATE))
1393     public static final int ELECTRONIC_STABILITY_CONTROL_ENABLED = 287310862;
1394     /**
1395      * Electronic Stability Control (ESC) state.
1396      *
1397      * <p>Returns the current state of ESC. This property will always return a valid state defined
1398      * in {@link android.car.hardware.property.ElectronicStabilityControlState} or {@link
1399      * android.car.hardware.property.ErrorState}.
1400      *
1401      * <p>For the global area ID (0), the {@link
1402      * android.car.hardware.property.AreaIdConfig#getSupportedEnumValues()} array obtained from
1403      * {@link android.car.hardware.CarPropertyConfig#getAreaIdConfig(int)} specifies which states
1404      * from {@link android.car.hardware.property.ElectronicStabilityControlState} and {@link
1405      * android.car.hardware.property.ErrorState} are supported.
1406      *
1407      * <p>Property Config:
1408      * <ul>
1409      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1410      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
1411      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1412      *  <li>{@code Integer} property type
1413      * </ul>
1414      *
1415      * <p>Required Permission:
1416      * <ul>
1417      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CAR_DYNAMICS_STATE} to read
1418      *  property.
1419      *  <li>Property is not writable.
1420      * </ul>
1421      *
1422      * @data_enum {@link android.car.hardware.property.ElectronicStabilityControlState}
1423      * @data_enum {@link ErrorState}
1424      *
1425      * @hide
1426      */
1427     @FlaggedApi(FLAG_ANDROID_VIC_VEHICLE_PROPERTIES)
1428     @SystemApi
1429     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_CAR_DYNAMICS_STATE))
1430     public static final int ELECTRONIC_STABILITY_CONTROL_STATE = 289408015;
1431     /**
1432      * Fan speed setting.
1433      *
1434      * <p>Property Config:
1435      * <ul>
1436      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
1437      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1438      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
1439      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1440      *  <li>{@code Integer} property type
1441      * </ul>
1442      *
1443      * <p>Required Permission:
1444      * <ul>
1445      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_CLIMATE" to read
1446      *  and write property.
1447      * </ul>
1448      */
1449     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
1450     public static final int HVAC_FAN_SPEED = 356517120;
1451     /**
1452      * Fan direction setting.
1453      *
1454      * <p>Property Config:
1455      * <ul>
1456      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
1457      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1458      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
1459      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1460      *  <li>{@code Integer} property type
1461      * </ul>
1462      *
1463      * <p>Required Permission:
1464      * <ul>
1465      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_CLIMATE" to read
1466      *  and write property.
1467      * </ul>
1468      *
1469      * @data_enum {@link CarHvacFanDirection}
1470      */
1471     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
1472     public static final int HVAC_FAN_DIRECTION = 356517121;
1473     /**
1474      * HVAC current temperature in celsius.
1475      *
1476      * <p>Property Config:
1477      * <ul>
1478      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1479      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
1480      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1481      *  <li>{@code Float} property type
1482      * </ul>
1483      *
1484      * <p>Required Permission:
1485      * <ul>
1486      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_CLIMATE" to read
1487      *  property.
1488      *  <li>Property is not writable.
1489      * </ul>
1490      */
1491     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
1492     public static final int HVAC_TEMPERATURE_CURRENT = 358614274;
1493     /**
1494      * HVAC target temperature set in Celsius.
1495      *
1496      * <p>{@link android.car.hardware.property.AreaIdConfig#getMinValue()} indicates the minimum
1497      * temperature setting in Celsius.
1498      * <p>{@link android.car.hardware.property.AreaIdConfig#getMaxValue()} indicates the maximum
1499      * temperature setting in Celsius.
1500      *
1501      * <p>The vehicle may not support setting a continuous range of temperature values in between
1502      * the min and max values.
1503      *
1504      * <p>Therefore, if the vehicle supports {@link #HVAC_TEMPERATURE_VALUE_SUGGESTION}, the
1505      * application should use that property to get a supported value before setting {@code
1506      * HVAC_TEMPERATURE_SET}. The application should also use {@link
1507      * #HVAC_TEMPERATURE_VALUE_SUGGESTION} for converting the temperature from Celsius to Fahrenheit
1508      * and vice versa for this vehicle.
1509      *
1510      * <p>Else if the {@link android.car.hardware.CarPropertyConfig#getConfigArray()} is defined,
1511      * then it represents the list of valid temperature values that can be set. It also describes a
1512      * lookup table to convert the temperature from Celsius to Fahrenheit and vice versa for this
1513      * vehicle.
1514      *
1515      * <p>The {@code configArray} is set as follows:
1516      * <ul>
1517      *      <li>{@code configArray[0]} is [the lower bound of the supported temperature in Celsius]
1518      *      * 10.
1519      *      <li>{@code configArray[1]} is [the upper bound of the supported temperature in Celsius]
1520      *      * 10.
1521      *      <li>{@code configArray[2]} is [the increment in Celsius] * 10.
1522      *      <li>{@code configArray[3]} is
1523      *      [the lower bound of the supported temperature in Fahrenheit] * 10.
1524      *      <li>{@code configArray[4]} is
1525      *      [the upper bound of the supported temperature in Fahrenheit] * 10.
1526      *      <li>{@code configArray[5]} is [the increment in Fahrenheit] * 10.
1527      * </ul>
1528      *
1529      * <p>For example, if the vehicle supports temperature values as:
1530      * <pre>
1531      * [16.0, 16.5, 17.0 ,..., 28.0] in Celsius
1532      * [60.5, 61.5, 62.5 ,..., 84.5] in Fahrenheit
1533      * </pre>
1534      *
1535      * <p>The {@code configArray} should be:
1536      * <pre>
1537      * {@code configArray = {160, 280, 5, 605, 845, 10}}
1538      * </pre>
1539      *
1540      * <p>If the {@code configArray} is defined, applications should not use any other method for
1541      * converting temperature values besides {@link #HVAC_TEMPERATURE_VALUE_SUGGESTION}, such as the
1542      * standard unit conversion formula of {@code F = (9/5) * C + 32}. Any value set that is not
1543      * contained within the list of valid values is considered undefined behavior and may result in
1544      * inconsistencies in the value set by the application and the value set in the VHAL.
1545      *
1546      * <p>For converting the temperature from Celsius to Fahrenheit use the following:
1547      * <pre>
1548      * {@code
1549      * // Given tempC and configArray
1550      * float minTempC = configArray.get(0) / 10f;
1551      * float temperatureIncrementCelsius = configArray.get(2) / 10f;
1552      * float minTempF = configArray.get(3) / 10f;
1553      * float temperatureIncrementFahrenheit = configArray.get(5) / 10f;
1554      * // Round to the closest increment
1555      * int numIncrements = Math.round((tempC - minTempC) / temperatureIncrementCelsius);
1556      * float tempF = temperatureIncrementFahrenheit * numIncrements + minTempF;
1557      * }
1558      * </pre>
1559      * <p>For converting the temperature from Fahrenheit to Celsius, use the same method as above
1560      * except changing the Celsius values to the relevant Fahrenheit values.
1561      *
1562      * <p>Othwerise, if neither {@link #HVAC_TEMPERATURE_VALUE_SUGGESTION} nor the {@code
1563      * configArray} are defined, the application should use the standard unit conversion formula of
1564      * {@code F = (9/5) * C + 32}.
1565      *
1566      * <p>Property Config:
1567      * <ul>
1568      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
1569      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1570      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
1571      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1572      *  <li>{@code Float} property type
1573      * </ul>
1574      *
1575      * <p>Required Permission:
1576      * <ul>
1577      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_CLIMATE" to read
1578      *  and write property.
1579      * </ul>
1580      */
1581     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
1582     public static final int HVAC_TEMPERATURE_SET = 358614275;
1583     /**
1584      * Suggested values for setting HVAC temperature.
1585      *
1586      * <p>Implement the property to help applications understand the closest supported temperature
1587      * value in Celsius or Fahrenheit.
1588      * <ul>
1589      *      <li>{@code floatValues[0]} is the requested value that an application wants to set a
1590      *      temperature to.
1591      *      <li>{@code floatValues[1]} is the unit for {@code floatValues[0]}. It should be one of
1592      *      ({@link VehicleUnit#CELSIUS}, {@link VehicleUnit#FAHRENHEIT}).
1593      *      <li>{@code floatValues[2]} is the value OEMs suggested in CELSIUS. This value is not
1594      *      included in the request.
1595      *      <li>{@code floatValues[3]} is the value OEMs suggested in FAHRENHEIT. This value is not
1596      *      included in the request.
1597      * </ul>
1598      *
1599      * <p>An application calls
1600      * {@link android.car.hardware.property.CarPropertyManager#setProperty(Class, int, int, Object)}
1601      * with the requested value and unit for the value. OEMs need to return the suggested values
1602      * in {@code floatValues[2]} and {@code floatValues[3]} by
1603      * {@link android.car.hardware.property.CarPropertyManager.CarPropertyEventCallback}.
1604      *
1605      * <p>For example, when a user uses the voice assistant to set HVAC temperature to 66.2 in
1606      * Fahrenheit.
1607      *
1608      * <p>First, an application will set this property with the value
1609      * [66.2, {@link VehicleUnit#FAHRENHEIT}, 0, 0]. If OEMs suggest to set 19.0 in Celsius
1610      * or 66.5 in Fahrenheit for user's request, then car must generate a callback with property
1611      * value [66.2, {@link VehicleUnit#FAHRENHEIT}, 19.0, 66.5]. After the voice assistant
1612      * gets the callback, it will inform the user and set HVAC temperature to the suggested value.
1613      *
1614      * <p>Another example, an application receives 21 Celsius as the current temperature value by
1615      * querying {@link VehiclePropertyIds#HVAC_TEMPERATURE_SET}. But the application wants to know
1616      * what value is displayed on the car's UI in Fahrenheit.
1617      *
1618      * <p>For this, the application sets the property to
1619      * [21, {@link VehicleUnit#CELSIUS}, 0, 0]. If the suggested value by the OEM for 21
1620      * Celsius is 70 Fahrenheit, then car must generate a callback with property value
1621      * [21, {@link VehicleUnit#CELSIUS}, 21.0, 70.0]. In this case, the application can know
1622      * that the value is 70.0 Fahrenheit in the car’s UI.
1623      *
1624      * <p>Property Config:
1625      * <ul>
1626      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE}
1627      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
1628      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1629      *  <li>{@code Float[]} property type
1630      * </ul>
1631      *
1632      * <p>Required Permission:
1633      * <ul>
1634      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_CLIMATE" to read
1635      *  and write property.
1636      * </ul>
1637      */
1638     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
1639     public static final int HVAC_TEMPERATURE_VALUE_SUGGESTION = 291570965;
1640     /**
1641      * On/off defrost for designated window.
1642      *
1643      * <p>Property Config:
1644      * <ul>
1645      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
1646      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1647      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_WINDOW}
1648      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1649      *  <li>{@code Boolean} property type
1650      * </ul>
1651      *
1652      * <p>Required Permission:
1653      * <ul>
1654      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_CLIMATE" to read
1655      *  and write property.
1656      * </ul>
1657      */
1658     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
1659     public static final int HVAC_DEFROSTER = 320865540;
1660     /**
1661      * On/off AC for designated areaId.
1662      *
1663      * <p>Property Config:
1664      * <ul>
1665      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
1666      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1667      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
1668      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1669      *  <li>{@code Boolean} property type
1670      * </ul>
1671      *
1672      * <p>Required Permission:
1673      * <ul>
1674      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_CLIMATE" to read
1675      *  and write property.
1676      * </ul>
1677      */
1678     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
1679     public static final int HVAC_AC_ON = 354419973;
1680     /**
1681      * On/off max AC.
1682      *
1683      * <p>Property Config:
1684      * <ul>
1685      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
1686      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1687      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
1688      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1689      *  <li>{@code Boolean} property type
1690      * </ul>
1691      *
1692      * <p>Required Permission:
1693      * <ul>
1694      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_CLIMATE" to read
1695      *  and write property.
1696      * </ul>
1697      */
1698     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
1699     public static final int HVAC_MAX_AC_ON = 354419974;
1700     /**
1701      * On/off max defrost.
1702      *
1703      * <p>Property Config:
1704      * <ul>
1705      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
1706      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1707      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
1708      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1709      *  <li>{@code Boolean} property type
1710      * </ul>
1711      *
1712      * <p>Required Permission:
1713      * <ul>
1714      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_CLIMATE" to read
1715      *  and write property.
1716      * </ul>
1717      */
1718     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
1719     public static final int HVAC_MAX_DEFROST_ON = 354419975;
1720     /**
1721      * Recirculation on/off.
1722      *
1723      * <p>Property Config:
1724      * <ul>
1725      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
1726      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1727      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
1728      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1729      *  <li>{@code Boolean} property type
1730      * </ul>
1731      *
1732      * <p>Required Permission:
1733      * <ul>
1734      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_CLIMATE" to read
1735      *  and write property.
1736      * </ul>
1737      */
1738     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
1739     public static final int HVAC_RECIRC_ON = 354419976;
1740     /**
1741      * Enable temperature coupling between areas.
1742      *
1743      * <p>Property Config:
1744      * <ul>
1745      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
1746      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1747      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
1748      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1749      *  <li>{@code Boolean} property type
1750      * </ul>
1751      *
1752      * <p>Required Permission:
1753      * <ul>
1754      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_CLIMATE" to read
1755      *  and write property.
1756      * </ul>
1757      */
1758     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
1759     public static final int HVAC_DUAL_ON = 354419977;
1760     /**
1761      * On/off automatic mode.
1762      *
1763      * <p>Property Config:
1764      * <ul>
1765      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
1766      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1767      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
1768      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1769      *  <li>{@code Boolean} property type
1770      * </ul>
1771      *
1772      * <p>Required Permission:
1773      * <ul>
1774      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_CLIMATE" to read
1775      *  and write property.
1776      * </ul>
1777      */
1778     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
1779     public static final int HVAC_AUTO_ON = 354419978;
1780     /**
1781      * Seat heating/cooling.
1782      *
1783      * <p>Property Config:
1784      * <ul>
1785      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
1786      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1787      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
1788      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1789      *  <li>{@code Integer} property type
1790      * </ul>
1791      *
1792      * <p>Required Permission:
1793      * <ul>
1794      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_CLIMATE" to read
1795      *  and write property.
1796      * </ul>
1797      */
1798     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
1799     public static final int HVAC_SEAT_TEMPERATURE = 356517131;
1800     /**
1801      * Side Mirror Heat.
1802      *
1803      * <p>Property Config:
1804      * <ul>
1805      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
1806      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1807      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_MIRROR}
1808      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1809      *  <li>{@code Integer} property type
1810      * </ul>
1811      *
1812      * <p>Required Permission:
1813      * <ul>
1814      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_CLIMATE" to read
1815      *  and write property.
1816      * </ul>
1817      */
1818     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
1819     public static final int HVAC_SIDE_MIRROR_HEAT = 339739916;
1820     /**
1821      * Steering Wheel Heating/Cooling.
1822      *
1823      * <p>Property Config:
1824      * <ul>
1825      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
1826      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1827      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
1828      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1829      *  <li>{@code Integer} property type
1830      * </ul>
1831      *
1832      * <p>Required Permission:
1833      * <ul>
1834      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_CLIMATE" to read
1835      *  and write property.
1836      * </ul>
1837      */
1838     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
1839     public static final int HVAC_STEERING_WHEEL_HEAT = 289408269;
1840     /**
1841      * Temperature units for display.
1842      *
1843      * <p>Property Config:
1844      * <ul>
1845      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
1846      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1847      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
1848      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1849      *  <li>{@code Integer} property type
1850      * </ul>
1851      *
1852      * <p>Required Permissions:
1853      * <ul>
1854      *  <li>Normal permission {@link Car#PERMISSION_READ_DISPLAY_UNITS} or Signature|Privileged
1855      *  permission "android.car.permission.CONTROL_CAR_CLIMATE" to read property.
1856      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_CLIMATE" to write
1857      *  property.
1858      * </ul>
1859      *
1860      * @data_enum {@link VehicleUnit}
1861      */
1862     @RequiresPermission.Read(@RequiresPermission(anyOf = {Car.PERMISSION_READ_DISPLAY_UNITS,
1863             Car.PERMISSION_CONTROL_CAR_CLIMATE}))
1864     @RequiresPermission.Write(@RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE))
1865     public static final int HVAC_TEMPERATURE_DISPLAY_UNITS = 289408270;
1866     /**
1867      * Actual fan speed.
1868      *
1869      * <p>Property Config:
1870      * <ul>
1871      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1872      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
1873      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1874      *  <li>{@code Integer} property type
1875      * </ul>
1876      *
1877      * <p>Required Permission:
1878      * <ul>
1879      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_CLIMATE" to read
1880      *  property.
1881      *  <li>Property is not writable.
1882      * </ul>
1883      */
1884     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
1885     public static final int HVAC_ACTUAL_FAN_SPEED_RPM = 356517135;
1886     /**
1887      * Represents global power state for HVAC.
1888      *
1889      * <p>Setting this property to false MAY mark some properties that control individual HVAC
1890      * features/subsystems to UNAVAILABLE state. Setting this property to true MAY mark some
1891      * properties that control individual HVAC features/subsystems to AVAILABLE state (unless
1892      * any/all of them are UNAVAILABLE on their own individual merits).
1893      *
1894      * <p>Property Config:
1895      * <ul>
1896      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
1897      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1898      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
1899      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1900      *  <li>{@code Boolean} property type
1901      * </ul>
1902      *
1903      * <p>Required Permission:
1904      * <ul>
1905      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_CLIMATE" to read
1906      *  and write property.
1907      * </ul>
1908      */
1909     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
1910     public static final int HVAC_POWER_ON = 354419984;
1911     /**
1912      * Fan Positions Available.
1913      *
1914      * <p>Property Config:
1915      * <ul>
1916      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1917      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
1918      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
1919      *  <li>{@code Integer[]} property type
1920      * </ul>
1921      *
1922      * <p>Required Permission:
1923      * <ul>
1924      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_CLIMATE" to read
1925      *  property.
1926      *  <li>Property is not writable.
1927      * </ul>
1928      *
1929      * @data_enum {@link CarHvacFanDirection}
1930      */
1931     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
1932     public static final int HVAC_FAN_DIRECTION_AVAILABLE = 356582673;
1933     /**
1934      * Automatic recirculation on/off.
1935      *
1936      * <p>Property Config:
1937      * <ul>
1938      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
1939      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1940      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
1941      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1942      *  <li>{@code Boolean} property type
1943      * </ul>
1944      *
1945      * <p>Required Permission:
1946      * <ul>
1947      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_CLIMATE" to read
1948      *  and write property.
1949      * </ul>
1950      */
1951     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
1952     public static final int HVAC_AUTO_RECIRC_ON = 354419986;
1953     /**
1954      * Seat ventilation.
1955      *
1956      * <p>Property Config:
1957      * <ul>
1958      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
1959      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1960      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
1961      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1962      *  <li>{@code Integer} property type
1963      * </ul>
1964      *
1965      * <p>Required Permission:
1966      * <ul>
1967      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_CLIMATE" to read
1968      *  and write property.
1969      * </ul>
1970      */
1971     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
1972     public static final int HVAC_SEAT_VENTILATION = 356517139;
1973     /**
1974      * ELECTRIC DEFROSTER.
1975      *
1976      * <p>Property Config:
1977      * <ul>
1978      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
1979      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1980      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_WINDOW}
1981      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1982      *  <li>{@code Boolean} property type
1983      * </ul>
1984      *
1985      * <p>Required Permission:
1986      * <ul>
1987      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_CAR_CLIMATE} to read
1988      *  and write property.
1989      * </ul>
1990      *
1991      * @hide
1992      */
1993     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
1994     @SystemApi
1995     public static final int HVAC_ELECTRIC_DEFROSTER_ON = 320865556;
1996     /**
1997      * Distance units for display.
1998      *
1999      * <p>Indicates which units the car is using to display distances to the user.
2000      *
2001      * <p>configArray represents the list of supported units for {@code
2002      * DISTANCE_DISPLAY_UNITS}. Here is an example configArray:
2003      * <ul>
2004      *  <li>configArray[0] = {@link VehicleUnit#METER}
2005      *  <li>configArray[1] = {@link VehicleUnit#KILOMETER}
2006      *  <li>configArray[2] = {@link VehicleUnit#MILE}
2007      * </ul>
2008      *
2009      * <p>Property Config:
2010      * <ul>
2011      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
2012      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
2013      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
2014      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2015      *  <li>{@code Integer} property type
2016      * </ul>
2017      *
2018      * <p>Required Permissions:
2019      * <ul>
2020      *  <li>Normal permission {@link Car#PERMISSION_READ_DISPLAY_UNITS} to read property.
2021      *  <li>Normal permission {@link Car#PERMISSION_CONTROL_DISPLAY_UNITS} and Signature|Privileged
2022      *  permission "android.car.permission.CAR_VENDOR_EXTENSION" to write property.
2023      * </ul>
2024      *
2025      * @data_enum {@link VehicleUnit}
2026      */
2027     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_DISPLAY_UNITS))
2028     @RequiresPermission.Write(@RequiresPermission(allOf = {Car.PERMISSION_CONTROL_DISPLAY_UNITS,
2029             Car.PERMISSION_VENDOR_EXTENSION}))
2030     public static final int DISTANCE_DISPLAY_UNITS = 289408512;
2031     /**
2032      * Fuel volume units for display.
2033      *
2034      * <p>Indicates which units the car is using to display fuel volume to the user.
2035      *
2036      * <p>configArray represents the list of supported units for {@code
2037      * FUEL_VOLUME_DISPLAY_UNITS}. Here is an example configArray:
2038      * <ul>
2039      *  <li>configArray[0] = {@link VehicleUnit#LITER}
2040      *  <li>configArray[1] = {@link VehicleUnit#US_GALLON}
2041      * </ul>
2042      *
2043      * <p>Property Config:
2044      * <ul>
2045      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
2046      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
2047      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
2048      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2049      *  <li>{@code Integer} property type
2050      * </ul>
2051      *
2052      * <p>Required Permissions:
2053      * <ul>
2054      *  <li>Normal permission {@link Car#PERMISSION_READ_DISPLAY_UNITS} to read property.
2055      *  <li>Normal permission {@link Car#PERMISSION_CONTROL_DISPLAY_UNITS} and Signature|Privileged
2056      *  permission "android.car.permission.CAR_VENDOR_EXTENSION" to write property.
2057      * </ul>
2058      *
2059      * @data_enum {@link VehicleUnit}
2060      */
2061     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_DISPLAY_UNITS))
2062     @RequiresPermission.Write(@RequiresPermission(allOf = {Car.PERMISSION_CONTROL_DISPLAY_UNITS,
2063             Car.PERMISSION_VENDOR_EXTENSION}))
2064     public static final int FUEL_VOLUME_DISPLAY_UNITS = 289408513;
2065     /**
2066      * Tire pressure units for display.
2067      *
2068      * <p>Indicates which units the car is using to display tire pressure to the user.
2069      *
2070      * <p>configArray represents the list of supported units for {@code
2071      * TIRE_PRESSURE_DISPLAY_UNITS}. Here is an example configArray:
2072      * <ul>
2073      *  <li>configArray[0] = {@link VehicleUnit#KILOPASCAL}
2074      *  <li>configArray[1] = {@link VehicleUnit#PSI}
2075      *  <li>configArray[2] = {@link VehicleUnit#BAR}
2076      * </ul>
2077      *
2078      * <p>Property Config:
2079      * <ul>
2080      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
2081      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
2082      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
2083      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2084      *  <li>{@code Integer} property type
2085      * </ul>
2086      *
2087      * <p>Required Permissions:
2088      * <ul>
2089      *  <li>Normal permission {@link Car#PERMISSION_READ_DISPLAY_UNITS} to read property.
2090      *  <li>Normal permission {@link Car#PERMISSION_CONTROL_DISPLAY_UNITS} and Signature|Privileged
2091      *  permission "android.car.permission.CAR_VENDOR_EXTENSION" to write property.
2092      * </ul>
2093      *
2094      * @data_enum {@link VehicleUnit}
2095      */
2096     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_DISPLAY_UNITS))
2097     @RequiresPermission.Write(@RequiresPermission(allOf = {Car.PERMISSION_CONTROL_DISPLAY_UNITS,
2098             Car.PERMISSION_VENDOR_EXTENSION}))
2099     public static final int TIRE_PRESSURE_DISPLAY_UNITS = 289408514;
2100     /**
2101      * EV battery units for display.
2102      *
2103      * <p>Indicates which units the vehicle is using to display EV battery information to the user.
2104      *
2105      * <p>configArray represents the list of supported units for {@code
2106      * EV_BATTERY_DISPLAY_UNITS}. Here is an example configArray:
2107      * <ul>
2108      *  <li>configArray[0] = {@link VehicleUnit#WATT_HOUR}
2109      *  <li>configArray[1] = {@link VehicleUnit#AMPERE_HOURS}
2110      *  <li>configArray[2] = {@link VehicleUnit#KILOWATT_HOUR}
2111      * </ul>
2112      *
2113      * <p>Property Config:
2114      * <ul>
2115      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
2116      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
2117      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
2118      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2119      *  <li>{@code Integer} property type
2120      * </ul>
2121      *
2122      * <p>Required Permissions:
2123      * <ul>
2124      *  <li>Normal permission {@link Car#PERMISSION_READ_DISPLAY_UNITS} to read property.
2125      *  <li>Normal permission {@link Car#PERMISSION_CONTROL_DISPLAY_UNITS} and Signature|Privileged
2126      *  permission "android.car.permission.CAR_VENDOR_EXTENSION" to write property.
2127      * </ul>
2128      *
2129      * @data_enum {@link VehicleUnit}
2130      */
2131     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_DISPLAY_UNITS))
2132     @RequiresPermission.Write(@RequiresPermission(allOf = {Car.PERMISSION_CONTROL_DISPLAY_UNITS,
2133             Car.PERMISSION_VENDOR_EXTENSION}))
2134     public static final int EV_BATTERY_DISPLAY_UNITS = 289408515;
2135     /**
2136      * Speed units for display.
2137      *
2138      * <p>Indicates type of units the vehicle is using to display speed to user.
2139      *
2140      * <p>configArray represents the list of supported units for {@code
2141      * VEHICLE_SPEED_DISPLAY_UNITS}. Here is an example configArray:
2142      * <ul>
2143      *  <li>configArray[0] = {@link VehicleUnit#METER_PER_SEC}
2144      *  <li>configArray[1] = {@link VehicleUnit#MILES_PER_HOUR}
2145      *  <li>configArray[2] = {@link VehicleUnit#KILOMETERS_PER_HOUR}
2146      * </ul>
2147      *
2148      * <p>Property Config:
2149      * <ul>
2150      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
2151      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
2152      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
2153      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2154      *  <li>{@code Integer} property type
2155      * </ul>
2156      *
2157      * <p>Required Permissions:
2158      * <ul>
2159      *  <li>Normal permission {@link Car#PERMISSION_READ_DISPLAY_UNITS} to read property.
2160      *  <li>Normal permission {@link Car#PERMISSION_CONTROL_DISPLAY_UNITS} and Signature|Privileged
2161      *  permission "android.car.permission.CAR_VENDOR_EXTENSION" to write property.
2162      * </ul>
2163      *
2164      * @data_enum {@link VehicleUnit}
2165      */
2166     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_DISPLAY_UNITS))
2167     @RequiresPermission.Write(@RequiresPermission(allOf = {Car.PERMISSION_CONTROL_DISPLAY_UNITS,
2168             Car.PERMISSION_VENDOR_EXTENSION}))
2169     public static final int VEHICLE_SPEED_DISPLAY_UNITS = 289408516;
2170     /**
2171      * Fuel consumption units for display.
2172      *
2173      * <p>Indicates type of units the car is using to display fuel consumption information to user.
2174      *
2175      * <p>{@code true} indicates units are distance over volume such as MPG.
2176      *
2177      * <p>{@code false} indicates units are volume over distance such as L/100KM.
2178      *
2179      * <p>Property Config:
2180      * <ul>
2181      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
2182      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
2183      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
2184      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2185      *  <li>{@code Boolean} property type
2186      * </ul>
2187      *
2188      * <p>Required Permissions:
2189      * <ul>
2190      *  <li>Normal permission {@link Car#PERMISSION_READ_DISPLAY_UNITS} to read property.
2191      *  <li>Normal permission {@link Car#PERMISSION_CONTROL_DISPLAY_UNITS} and Signature|Privileged
2192      *  permission "android.car.permission.CAR_VENDOR_EXTENSION" to write property.
2193      * </ul>
2194      */
2195     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_DISPLAY_UNITS))
2196     @RequiresPermission.Write(@RequiresPermission(allOf = {Car.PERMISSION_CONTROL_DISPLAY_UNITS,
2197             Car.PERMISSION_VENDOR_EXTENSION}))
2198     public static final int FUEL_CONSUMPTION_UNITS_DISTANCE_OVER_VOLUME = 287311364;
2199     /**
2200      * Outside temperature in celsius.
2201      *
2202      * <p>Property Config:
2203      * <ul>
2204      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
2205      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
2206      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_CONTINUOUS}
2207      *  <li>{@code Float} property type
2208      * </ul>
2209      *
2210      * <p>Required Permission:
2211      * <ul>
2212      *  <li>Normal permission {@link Car#PERMISSION_EXTERIOR_ENVIRONMENT} to read property.
2213      *  <li>Property is not writable.
2214      * </ul>
2215      */
2216     @RequiresPermission(Car.PERMISSION_EXTERIOR_ENVIRONMENT)
2217     public static final int ENV_OUTSIDE_TEMPERATURE = 291505923;
2218     /**
2219      * Property to control power state of application processor.
2220      *
2221      * <p>Not exposed through {@link android.car.hardware.property.CarPropertyManager}.
2222      *
2223      * <p>This property is not supported.
2224      *
2225      * @deprecated use {@link android.car.hardware.power.CarPowerManager} instead.
2226      */
2227     @Deprecated
2228     @RequiresPermission(Car.PERMISSION_CAR_POWER)
2229     public static final int AP_POWER_STATE_REQ = 289475072;
2230     /**
2231      * Property to report power state of application processor.
2232      *
2233      * <p>Not exposed through {@link android.car.hardware.property.CarPropertyManager}.
2234      *
2235      * <p>This property is not supported.
2236      *
2237      * @deprecated use {@link android.car.hardware.power.CarPowerManager} instead.
2238      */
2239     @Deprecated
2240     @RequiresPermission(Car.PERMISSION_CAR_POWER)
2241     public static final int AP_POWER_STATE_REPORT = 289475073;
2242     /**
2243      * Property to report bootup reason for the current power on.
2244      *
2245      * <p>Not exposed through {@link android.car.hardware.property.CarPropertyManager}.
2246      *
2247      * <p>This property is not supported.
2248      *
2249      * @deprecated use {@link android.car.hardware.power.CarPowerManager} instead.
2250      */
2251     @Deprecated
2252     @RequiresPermission(Car.PERMISSION_CAR_POWER)
2253     public static final int AP_POWER_BOOTUP_REASON = 289409538;
2254     /**
2255      * Property to represent brightness of the display.
2256      *
2257      * <p>Not exposed through {@link android.car.hardware.property.CarPropertyManager}.
2258      *
2259      * <p>This property is not supported.
2260      *
2261      * @deprecated use {@link android.car.hardware.power.CarPowerManager} instead.
2262      */
2263     @Deprecated
2264     @RequiresPermission(Car.PERMISSION_CAR_POWER)
2265     public static final int DISPLAY_BRIGHTNESS = 289409539;
2266     /**
2267      * Property to represent brightness of the displays which are controlled separately.
2268      *
2269      * <p>Not exposed through {@link android.car.hardware.property.CarPropertyManager}.
2270      *
2271      * <p>This property is not supported.
2272      *
2273      * @deprecated use {@link android.car.hardware.power.CarPowerManager} instead.
2274      */
2275     @Deprecated
2276     @RequiresPermission(Car.PERMISSION_CAR_POWER)
2277     public static final int PER_DISPLAY_BRIGHTNESS = 289475076;
2278     /**
2279      * Valet mode enabled
2280      *
2281      * <p>This property allows the user to enable/disable valet mode in their vehicle. Valet mode is
2282      * a privacy and security setting that prevents an untrusted driver to access more private areas
2283      * in the vehicle, such as the glove box or the trunk(s).
2284      *
2285      * <p>This property is defined as read_write, but OEMs have the option to implement it as read
2286      * only.
2287      *
2288      * <p>Property Config:
2289      * <ul>
2290      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
2291      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
2292      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
2293      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2294      *  <li>{@code Boolean} property type
2295      * </ul>
2296      *
2297      * <p>Required Permissions:
2298      * <ul>
2299      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_VALET_MODE} or
2300      *  Signature|Privileged permission {@link Car#PERMISSION_CONTROL_VALET_MODE} to read property.
2301      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_VALET_MODE} to write
2302      *  property.
2303      * </ul>
2304      *
2305      * @hide
2306      */
2307     @FlaggedApi(FLAG_ANDROID_VIC_VEHICLE_PROPERTIES)
2308     @SystemApi
2309     @RequiresPermission.Read(@RequiresPermission(
2310             anyOf = {Car.PERMISSION_READ_VALET_MODE, Car.PERMISSION_CONTROL_VALET_MODE}))
2311     @RequiresPermission.Write(@RequiresPermission(Car.PERMISSION_CONTROL_VALET_MODE))
2312     public static final int VALET_MODE_ENABLED = 287312389;
2313     /**
2314      * Head up display (HUD) enabled
2315      *
2316      * <p>This property allows the user to turn on/off the HUD for their seat.
2317      *
2318      * <p>Each HUD in the vehicle will be assigned to the seat that is intended to use it. For
2319      * example, if there is a single HUD in the vehicle that is used by the driver so that they no
2320      * longer need to continuously look at the instrument cluster, then this property will be
2321      * defined with a single area ID that is equal to the driver's seat area ID.
2322      *
2323      * <p>Property Config:
2324      * <ul>
2325      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
2326      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
2327      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
2328      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2329      *  <li>{@code Boolean} property type
2330      * </ul>
2331      *
2332      * <p>Required Permissions:
2333      * <ul>
2334      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_HEAD_UP_DISPLAY_STATUS} or
2335      *  Signature|Privileged permission {@link Car#PERMISSION_CONTROL_HEAD_UP_DISPLAY} to read
2336      *  property.
2337      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_HEAD_UP_DISPLAY} to write
2338      *  property.
2339      * </ul>
2340      *
2341      * @hide
2342      */
2343     @FlaggedApi(FLAG_ANDROID_VIC_VEHICLE_PROPERTIES)
2344     @SystemApi
2345     @RequiresPermission.Read(@RequiresPermission(
2346             anyOf = {Car.PERMISSION_READ_HEAD_UP_DISPLAY_STATUS,
2347                     Car.PERMISSION_CONTROL_HEAD_UP_DISPLAY}))
2348     @RequiresPermission.Write(@RequiresPermission(Car.PERMISSION_CONTROL_HEAD_UP_DISPLAY))
2349     public static final int HEAD_UP_DISPLAY_ENABLED = 354421254;
2350     /**
2351      * Property to feed H/W input events to android.
2352      *
2353      * <p>Not exposed through {@link android.car.hardware.property.CarPropertyManager}.
2354      *
2355      * <p>This property is not supported.
2356      *
2357      * @deprecated car service internal use only.
2358      */
2359     @Deprecated
2360     public static final int HW_KEY_INPUT = 289475088;
2361     /**
2362      * Door position.
2363      *
2364      * <p>This property is not in any particular unit but in a specified range of relative
2365      * positions.
2366      *
2367      * <p>{@link android.car.hardware.property.AreaIdConfig#getMinValue()} indicates the door's
2368      * position when closed. This value will be 0
2369      * <p>{@link android.car.hardware.property.AreaIdConfig#getMaxValue()} indicates the door's
2370      * position when fully open.
2371      *
2372      * <p>All integers between the min and max values are supported and indicate a transition state
2373      * between the closed and fully open positions.
2374      *
2375      * <p>Property Config:
2376      * <ul>
2377      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
2378      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
2379      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_DOOR}
2380      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2381      *  <li>{@code Integer} property type
2382      * </ul>
2383      *
2384      * <p>Required Permission:
2385      * <ul>
2386      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_DOORS" to read and
2387      *  write property.
2388      * </ul>
2389      */
2390     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_DOORS)
2391     public static final int DOOR_POS = 373295872;
2392     /**
2393      * Door move.
2394      *
2395      * <p>This property is not in any particular unit but in a specified range of relative movement
2396      * speeds.
2397      *
2398      * <p>Positive values mean the door is opening and negative values mean the door is closing.
2399      * Larger integers, either positive or negative, indicate a faster speed. Once the door reaches
2400      * the positional limit, the value resets to 0. When this property's value is 0, that means
2401      * there is no movement currently occurring.
2402      *
2403      * <p>See {@link android.car.hardware.property.AreaIdConfig#getMaxValue()} and {@link
2404      * android.car.hardware.property.AreaIdConfig#getMinValue()} for the range of possible speeds.
2405      * All integers between min and max value are supported.
2406      *
2407      * <p>Property Config:
2408      * <ul>
2409      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
2410      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
2411      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_DOOR}
2412      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2413      *  <li>{@code Integer} property type
2414      * </ul>
2415      *
2416      * <p>Required Permission:
2417      * <ul>
2418      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_DOORS" to read and
2419      *  write property.
2420      * </ul>
2421      */
2422     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_DOORS)
2423     public static final int DOOR_MOVE = 373295873;
2424     /**
2425      * Door lock.
2426      *
2427      * <p>True indicates that the door is locked.
2428      *
2429      * <p>Property Config:
2430      * <ul>
2431      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
2432      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
2433      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_DOOR}
2434      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2435      *  <li>{@code Boolean} property type
2436      * </ul>
2437      *
2438      * <p>Required Permission:
2439      * <ul>
2440      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_DOORS" to read and
2441      *  write property.
2442      * </ul>
2443      */
2444     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_DOORS)
2445     public static final int DOOR_LOCK = 371198722;
2446     /**
2447      * Door child lock feature enabled.
2448      *
2449      * <p>Returns true if the door child lock feature is enabled and false if it is disabled.
2450      * If enabled, the door is unable to be opened from the inside.
2451      *
2452      * <p>Property Config:
2453      * <ul>
2454      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
2455      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
2456      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_DOOR}
2457      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2458      *  <li>{@code Boolean} property type
2459      * </ul>
2460      *
2461      * <p>Required Permission:
2462      * <ul>
2463      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_CAR_DOORS} to read
2464      *  and write property.
2465      * </ul>
2466      *
2467      * @hide
2468      */
2469     @SystemApi
2470     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_DOORS)
2471     public static final int DOOR_CHILD_LOCK_ENABLED = 371198723;
2472     /**
2473      * Mirror Z Position.
2474      *
2475      * <p>This property is not in any particular unit but in a specified range of relative
2476      * positions.
2477      *
2478      * <p>{@link android.car.hardware.property.AreaIdConfig#getMinValue()} indicates the mirror's
2479      * position when tilted completely downwards.
2480      * <p>{@link android.car.hardware.property.AreaIdConfig#getMaxValue()} indicates the mirror's
2481      * position when tilted completely upwards.
2482      * <p>0 indicates the mirror is not tilted in either direction.
2483      *
2484      * <p>All integers between the min and max values are supported and indicate a transition state
2485      * between the completely downwards and completely upwards positions.
2486      *
2487      * <p>Property Config:
2488      * <ul>
2489      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
2490      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
2491      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_MIRROR}
2492      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2493      *  <li>{@code Integer} property type
2494      * </ul>
2495      *
2496      * <p>Required Permission:
2497      * <ul>
2498      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_MIRRORS" to read and
2499      *  write property.
2500      * </ul>
2501      */
2502     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_MIRRORS)
2503     public static final int MIRROR_Z_POS = 339741504;
2504     /**
2505      * Mirror Z Move.
2506      *
2507      * <p>This property is not in any particular unit but in a specified range of relative movement
2508      * speeds.
2509      *
2510      * <p>Positive values mean the mirror is tilting up and negative values mean the mirror is
2511      * tilting down. Larger integers, either positive or negative, indicate a faster speed. Once the
2512      * mirror reaches the positional limit, the value resets to 0. When this property's value is 0,
2513      * that means there is no movement currently occurring.
2514      *
2515      * <p>See {@link android.car.hardware.property.AreaIdConfig#getMaxValue()} and {@link
2516      * android.car.hardware.property.AreaIdConfig#getMinValue()} for the range of possible speeds.
2517      * All integers between min and max value are supported.
2518      *
2519      * <p>Property Config:
2520      * <ul>
2521      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
2522      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
2523      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_MIRROR}
2524      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2525      *  <li>{@code Integer} property type
2526      * </ul>
2527      *
2528      * <p>Required Permission:
2529      * <ul>
2530      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_MIRRORS" to read and
2531      *  write property.
2532      * </ul>
2533      */
2534     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_MIRRORS)
2535     public static final int MIRROR_Z_MOVE = 339741505;
2536     /**
2537      * Mirror Y Position.
2538      *
2539      * <p>This property is not in any particular unit but in a specified range of relative
2540      * positions.
2541      *
2542      * <p>{@link android.car.hardware.property.AreaIdConfig#getMinValue()} indicates the mirror's
2543      * position when tilted completely to the left.
2544      * <p>{@link android.car.hardware.property.AreaIdConfig#getMaxValue()} indicates the mirror's
2545      * position when tilted completely to the right.
2546      * <p>0 indicates the mirror is not tilted in either direction.
2547      *
2548      * <p>All integers between the min and max values are supported and indicate a transition state
2549      * between the extreme left and extreme right positions.
2550      *
2551      * <p>Property Config:
2552      * <ul>
2553      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
2554      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
2555      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_MIRROR}
2556      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2557      *  <li>{@code Integer} property type
2558      * </ul>
2559      *
2560      * <p>Required Permission:
2561      * <ul>
2562      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_MIRRORS" to read and
2563      *  write property.
2564      * </ul>
2565      */
2566     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_MIRRORS)
2567     public static final int MIRROR_Y_POS = 339741506;
2568     /**
2569      * Mirror Y Move.
2570      *
2571      * <p>This property is not in any particular unit but in a specified range of relative movement
2572      * speeds.
2573      *
2574      * <p>Positive values mean the mirror is tilting to the right and negative values mean the
2575      * support is tilting to the left. Larger integers, either positive or negative, indicate a
2576      * faster speed. Once the mirror reaches the positional limit, the value resets to 0. When this
2577      * property's value is 0, that means there is no movement currently occurring.
2578      *
2579      * <p>See {@link android.car.hardware.property.AreaIdConfig#getMaxValue()} and {@link
2580      * android.car.hardware.property.AreaIdConfig#getMinValue()} for the range of possible speeds.
2581      * All integers between min and max value are supported.
2582      *
2583      * <p>Property Config:
2584      * <ul>
2585      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
2586      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
2587      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_MIRROR}
2588      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2589      *  <li>{@code Integer} property type
2590      * </ul>
2591      *
2592      * <p>Required Permission:
2593      * <ul>
2594      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_MIRRORS" to read and
2595      *  write property.
2596      * </ul>
2597      */
2598     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_MIRRORS)
2599     public static final int MIRROR_Y_MOVE = 339741507;
2600     /**
2601      * Mirror Lock.
2602      *
2603      * <p>True indicates all mirror positions are locked and not changeable.
2604      *
2605      * <p>Property Config:
2606      * <ul>
2607      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
2608      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
2609      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
2610      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2611      *  <li>{@code Boolean} property type
2612      * </ul>
2613      *
2614      * <p>Required Permission:
2615      * <ul>
2616      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_MIRRORS" to read and
2617      *  write property.
2618      * </ul>
2619      */
2620     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_MIRRORS)
2621     public static final int MIRROR_LOCK = 287312708;
2622     /**
2623      * Mirror Fold.
2624      *
2625      * <p>Property Config:
2626      * <ul>
2627      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
2628      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
2629      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
2630      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2631      *  <li>{@code Boolean} property type
2632      * </ul>
2633      *
2634      * <p>Required Permission:
2635      * <ul>
2636      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_MIRRORS" to read and
2637      *  write property.
2638      * </ul>
2639      */
2640     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_MIRRORS)
2641     public static final int MIRROR_FOLD = 287312709;
2642     /**
2643      * Represents property for the Mirror Auto Fold feature.
2644      *
2645      * <p>This property is true when the feature for automatically folding the vehicle's mirrors
2646      * (for example, when the mirrors fold inward automatically when one exits and locks the
2647      * vehicle) is enabled.
2648      *
2649      * <p>Property Config:
2650      * <ul>
2651      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
2652      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
2653      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_MIRROR}
2654      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2655      *  <li>{@code Boolean} property type
2656      * </ul>
2657      *
2658      * <p>Required Permission:
2659      * <ul>
2660      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_CAR_MIRRORS} to read and
2661      *  write property.
2662      *
2663      * @hide
2664      */
2665     @SystemApi
2666     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_MIRRORS)
2667     public static final int MIRROR_AUTO_FOLD_ENABLED = 337644358;
2668     /**
2669      * Represents property for the Mirror Auto Tilt feature.
2670      *
2671      * <p>This property is true when the feature for automatically tilting the vehicle's mirrors
2672      * (for example, when the mirrors tilt downward automatically when one reverses the vehicle) is
2673      * enabled.
2674      *
2675      * <p>Property Config:
2676      * <ul>
2677      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
2678      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
2679      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_MIRROR}
2680      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2681      *  <li>{@code Boolean} property type
2682      * </ul>
2683      *
2684      * <p>Required Permission:
2685      * <ul>
2686      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_CAR_MIRRORS} to read and
2687      *  write property.
2688      * </ul>
2689      *
2690      * @hide
2691      */
2692     @SystemApi
2693     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_MIRRORS)
2694     public static final int MIRROR_AUTO_TILT_ENABLED = 337644359;
2695     /**
2696      * Property that represents the current position of the glove box door.
2697      *
2698      * <p>This property is not in any particular unit but in a specified range of relative
2699      * positions.
2700      *
2701      * <p>{@link android.car.hardware.property.AreaIdConfig#getMinValue()} indicates the glove box's
2702      * position when closed. This value will be 0.
2703      * <p>{@link android.car.hardware.property.AreaIdConfig#getMaxValue()} indicates the glove box's
2704      * position when fully open.
2705      *
2706      * <p>All integers between the min and max values are supported and indicate a transition state
2707      * between the closed and fully open positions.
2708      *
2709      * <p>The supported area IDs match the seat(s) by which the glove box is intended to be used
2710      * (e.g.) if the front right dashboard has a glove box embedded in it, then the area ID should
2711      * be {@link VehicleAreaSeat#SEAT_ROW_1_RIGHT}).
2712      *
2713      * <p>Property Config:
2714      * <ul>
2715      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
2716      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
2717      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
2718      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2719      *  <li>{@code Integer} property type
2720      * </ul>
2721      *
2722      * <p>Required Permission:
2723      * <ul>
2724      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_GLOVE_BOX} to read and
2725      *  write property.
2726      * </ul>
2727      *
2728      * @hide
2729      */
2730     @SystemApi
2731     @RequiresPermission(Car.PERMISSION_CONTROL_GLOVE_BOX)
2732     public static final int GLOVE_BOX_DOOR_POS = 356518896;
2733 
2734     /**
2735      * Lock or unlock the glove box.
2736      *
2737      * <p>If {@code true}, the glove box is locked. If {@code false}, the glove box is unlocked.
2738      *
2739      * <p>The supported area IDs match the seat(s) by which the glove box is intended to be used
2740      * (e.g. if the front right dashboard has a glove box embedded in it, then the area ID will be
2741      * {@link android.car.VehicleAreaSeat#SEAT_ROW_1_RIGHT}).
2742      *
2743      * <p>Property Config:
2744      * <ul>
2745      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
2746      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
2747      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
2748      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2749      *  <li>{@code Boolean} property type
2750      * </ul>
2751      *
2752      * <p>Required Permission:
2753      * <ul>
2754      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_GLOVE_BOX} to read and
2755      *  write property.
2756      * </ul>
2757      *
2758      * @hide
2759      */
2760     @SystemApi
2761     @RequiresPermission(Car.PERMISSION_CONTROL_GLOVE_BOX)
2762     public static final int GLOVE_BOX_LOCKED = 354421745;
2763 
2764     /**
2765      * Seat memory select.
2766      *
2767      * <p>This parameter selects the memory preset to use to select the seat position. The {@link
2768      * android.car.hardware.property.AreaIdConfig#getMinValue()} is always 0, and the {@link
2769      * android.car.hardware.property.AreaIdConfig#getMaxValue()} determines the number of seat
2770      * positions available (i.e. numSeatPresets - 1).
2771      *
2772      * <p>Property Config:
2773      * <ul>
2774      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_WRITE}
2775      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
2776      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2777      *  <li>{@code Integer} property type
2778      * </ul>
2779      *
2780      * <p>Required Permission:
2781      * <ul>
2782      *  <li>Property is not readable.
2783      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_SEATS" to write
2784      *  property.
2785      * </ul>
2786      */
2787     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
2788     public static final int SEAT_MEMORY_SELECT = 356518784;
2789     /**
2790      * Seat memory set.
2791      *
2792      * <p>This setting allows the user to save the current seat position settings into the selected
2793      * preset slot. The {@link android.car.hardware.property.AreaIdConfig#getMaxValue()} for each
2794      * seat position must match the {@link android.car.hardware.property.AreaIdConfig#getMaxValue()}
2795      * for {@link #SEAT_MEMORY_SELECT}.
2796      *
2797      * <p>Property Config:
2798      * <ul>
2799      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_WRITE}
2800      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
2801      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2802      *  <li>{@code Integer} property type
2803      * </ul>
2804      *
2805      * <p>Required Permission:
2806      * <ul>
2807      *  <li>Property is not readable.
2808      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_SEATS" to write
2809      *  property.
2810      * </ul>
2811      */
2812     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
2813     public static final int SEAT_MEMORY_SET = 356518785;
2814     /**
2815      * Seatbelt buckled.
2816      *
2817      * <p>True indicates belt is buckled.
2818      *
2819      * <p>Property Config:
2820      * <ul>
2821      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
2822      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
2823      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
2824      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2825      *  <li>{@code Boolean} property type
2826      * </ul>
2827      *
2828      * <p>Required Permission:
2829      * <ul>
2830      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_SEATS" to read and
2831      *  write property.
2832      * </ul>
2833      */
2834     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
2835     public static final int SEAT_BELT_BUCKLED = 354421634;
2836     /**
2837      * Seatbelt height position.
2838      *
2839      * <p>This property is not in any particular unit but in a specified range of relative
2840      * positions.
2841      *
2842      * <p>{@link android.car.hardware.property.AreaIdConfig#getMinValue()} indicates the seat belt
2843      * shoulder anchor's lowest position.
2844      * <p>{@link android.car.hardware.property.AreaIdConfig#getMaxValue()} indicates the seat belt
2845      * shoulder anchor's highest position.
2846      *
2847      * <p>All integers between the min and max values are supported and indicate a transition state
2848      * between the lowest and highest positions.
2849      *
2850      * <p>Property Config:
2851      * <ul>
2852      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
2853      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
2854      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
2855      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2856      *  <li>{@code Integer} property type
2857      * </ul>
2858      *
2859      * <p>Required Permission:
2860      * <ul>
2861      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_SEATS" to read and
2862      *  write property.
2863      * </ul>
2864      */
2865     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
2866     public static final int SEAT_BELT_HEIGHT_POS = 356518787;
2867     /**
2868      * Seatbelt height move.
2869      *
2870      * <p>This property is not in any particular unit but in a specified range of relative movement
2871      * speeds.
2872      *
2873      * <p>Positive values mean the seat belt's shoulder anchor is moving up and negative values mean
2874      * the seat belt's shoulder anchor is moving down. Larger integers, either positive or negative,
2875      * indicate a faster speed. Once the seat belt's shoulder anchor reaches the positional limit,
2876      * the value resets to 0. When this property's value is 0, that means there is no movement
2877      * currently occurring.
2878      *
2879      * <p>See {@link android.car.hardware.property.AreaIdConfig#getMaxValue()} and {@link
2880      * android.car.hardware.property.AreaIdConfig#getMinValue()} for the range of possible speeds.
2881      * All integers between min and max value are supported.
2882      *
2883      * <p>Property Config:
2884      * <ul>
2885      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
2886      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
2887      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
2888      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2889      *  <li>{@code Integer} property type
2890      * </ul>
2891      *
2892      * <p>Required Permission:
2893      * <ul>
2894      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_SEATS" to read and
2895      *  write property.
2896      * </ul>
2897      */
2898     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
2899     public static final int SEAT_BELT_HEIGHT_MOVE = 356518788;
2900     /**
2901      * Seat fore/aft position.
2902      *
2903      * <p>This property is not in any particular unit but in a specified range of relative
2904      * positions.
2905      *
2906      * <p>{@link android.car.hardware.property.AreaIdConfig#getMinValue()} indicates the seat's
2907      * rearward-most linear position.
2908      * <p>{@link android.car.hardware.property.AreaIdConfig#getMaxValue()} indicates the seat's
2909      * forward-most linear position.
2910      *
2911      * <p>All integers between the min and max values are supported and indicate a transition state
2912      * between the forward most and rearward most positions.
2913      *
2914      * <p>Property Config:
2915      * <ul>
2916      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
2917      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
2918      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
2919      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2920      *  <li>{@code Integer} property type
2921      * </ul>
2922      *
2923      * <p>Required Permission:
2924      * <ul>
2925      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_SEATS" to read and
2926      *  write property.
2927      * </ul>
2928      */
2929     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
2930     public static final int SEAT_FORE_AFT_POS = 356518789;
2931     /**
2932      * Seat fore/aft move.
2933      *
2934      * <p>This property moves the entire seat forward/backward in the direction it's facing.
2935      *
2936      * <p>This property is not in any particular unit but in a specified range of relative movement
2937      * speeds.
2938      *
2939      * <p>Positive values mean the seat is moving forward and negative values mean the seat is
2940      * moving backward. Larger integers, either positive or negative, indicate a faster speed. Once
2941      * the seat reaches the positional limit, the value resets to 0. When this property's value is
2942      * 0, that means there is no movement currently occurring.
2943      *
2944      * <p>See {@link android.car.hardware.property.AreaIdConfig#getMaxValue()} and {@link
2945      * android.car.hardware.property.AreaIdConfig#getMinValue()} for the range of possible speeds.
2946      * All integers between min and max value are supported.
2947      *
2948      * <p>Property Config:
2949      * <ul>
2950      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
2951      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
2952      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
2953      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2954      *  <li>{@code Integer} property type
2955      * </ul>
2956      *
2957      * <p>Required Permission:
2958      * <ul>
2959      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_SEATS" to read and
2960      *  write property.
2961      * </ul>
2962      */
2963     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
2964     public static final int SEAT_FORE_AFT_MOVE = 356518790;
2965     /**
2966      * Seat backrest angle 1 position.
2967      *
2968      * <p>This property is not in any particular unit but in a specified range of relative
2969      * positions.
2970      *
2971      * <p>{@link android.car.hardware.property.AreaIdConfig#getMinValue()} indicates the seat
2972      * backrest's full recline position w.r.t the actuator at the bottom of the seat (see {@link
2973      * #SEAT_BACKREST_ANGLE_1_MOVE} for additional details).
2974      * <p>{@link android.car.hardware.property.AreaIdConfig#getMaxValue()} indicates the seat
2975      * backrest's most upright/forward position w.r.t the actuator at the bottom of the seat (see
2976      * {@link #SEAT_BACKREST_ANGLE_1_MOVE} for additional details).
2977      *
2978      * <p>All integers between the min and max values are supported and indicate a transition state
2979      * between the forward most and rearward most positions.
2980      *
2981      * <p>Property Config:
2982      * <ul>
2983      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
2984      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
2985      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
2986      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2987      *  <li>{@code Integer} property type
2988      * </ul>
2989      *
2990      * <p>Required Permission:
2991      * <ul>
2992      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_SEATS" to read and
2993      *  write property.
2994      * </ul>
2995      */
2996     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
2997     public static final int SEAT_BACKREST_ANGLE_1_POS = 356518791;
2998     /**
2999      * Seat backrest angle 1 move.
3000      *
3001      * <p>This property moves the seat backrest along the axis of rotation defined by the actuator
3002      * closest to the bottom of the seat. This is the actuator that moves the seat upright/forward
3003      * or into recline as seen in most conventional vehicles.
3004      *
3005      * <p>This property is not in any particular unit but in a specified range of relative movement
3006      * speeds.
3007      *
3008      * <p>Positive values mean the seat is angling forward and negative values mean the seat is
3009      * reclining backward. Larger integers, either positive or negative, indicate a faster speed.
3010      * Once the seat reaches the positional limit, the value resets to 0. When this property's value
3011      * is 0, that means there is no movement currently occurring.
3012      *
3013      * <p>See {@link android.car.hardware.property.AreaIdConfig#getMaxValue()} and {@link
3014      * android.car.hardware.property.AreaIdConfig#getMinValue()} for the range of possible speeds.
3015      * All integers between min and max value are supported.
3016      *
3017      * <p>Property Config:
3018      * <ul>
3019      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
3020      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
3021      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
3022      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
3023      *  <li>{@code Integer} property type
3024      * </ul>
3025      *
3026      * <p>Required Permission:
3027      * <ul>
3028      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_SEATS" to read and
3029      *  write property.
3030      * </ul>
3031      */
3032     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
3033     public static final int SEAT_BACKREST_ANGLE_1_MOVE = 356518792;
3034     /**
3035      * Seat backrest angle 2 position.
3036      *
3037      * <p>This property is not in any particular unit but in a specified range of relative
3038      * positions.
3039      *
3040      * <p>{@link android.car.hardware.property.AreaIdConfig#getMinValue()} indicates the seat
3041      * backrest's full recline position w.r.t the next actuator in the backrest from the one at the
3042      * bottom of the seat (see {@link #SEAT_BACKREST_ANGLE_2_MOVE} for more details).
3043      * <p>{@link android.car.hardware.property.AreaIdConfig#getMaxValue()} indicates the seat
3044      * backrest's most upright/forward position w.r.t the next actuator in the backrest from the one
3045      * at the bottom of the seat (see {@link #SEAT_BACKREST_ANGLE_2_MOVE} for more details).
3046      *
3047      * <p>All integers between the min and max values are supported and indicate a transition state
3048      * between the forward most and rearward most positions.
3049      *
3050      * <p>Property Config:
3051      * <ul>
3052      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
3053      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
3054      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
3055      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
3056      *  <li>{@code Integer} property type
3057      * </ul>
3058      *
3059      * <p>Required Permission:
3060      * <ul>
3061      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_SEATS" to read and
3062      *  write property.
3063      * </ul>
3064      */
3065     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
3066     public static final int SEAT_BACKREST_ANGLE_2_POS = 356518793;
3067     /**
3068      * Seat backrest angle 2 move.
3069      *
3070      * <p>This property will be implemented if there exists an additional actuator in the seat
3071      * backrest besides the one at the very bottom of the backrest, which is covered by {@link
3072      * #SEAT_BACKREST_ANGLE_1_MOVE}. This property will move the backrest along the axis of rotation
3073      * defined by this additional actuator. It can be assumed that this actuator is closer to the
3074      * headrest than the one defined by {@link #SEAT_BACKREST_ANGLE_1_MOVE}.
3075      *
3076      * <p>This property is not in any particular unit but in a specified range of relative movement
3077      * speeds.
3078      *
3079      * <p>Positive values mean the seat is angling forward and negative values mean the seat is
3080      * reclining backward. Larger integers, either positive or negative, indicate a faster speed.
3081      * Once the seat reaches the positional limit, the value resets to 0. When this property's value
3082      * is 0, that means there is no movement currently occurring.
3083      *
3084      * <p>See {@link android.car.hardware.property.AreaIdConfig#getMaxValue()} and {@link
3085      * android.car.hardware.property.AreaIdConfig#getMinValue()} for the range of possible speeds.
3086      * All integers between min and max value are supported.
3087      *
3088      * <p>Property Config:
3089      * <ul>
3090      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
3091      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
3092      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
3093      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
3094      *  <li>{@code Integer} property type
3095      * </ul>
3096      *
3097      * <p>Required Permission:
3098      * <ul>
3099      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_SEATS" to read and
3100      *  write property.
3101      * </ul>
3102      */
3103     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
3104     public static final int SEAT_BACKREST_ANGLE_2_MOVE = 356518794;
3105     /**
3106      * Seat height position.
3107      *
3108      * <p>This property is not in any particular unit but in a specified range of relative
3109      * positions.
3110      *
3111      * <p>{@link android.car.hardware.property.AreaIdConfig#getMinValue()} indicates the seat's
3112      * lowest position.
3113      * <p>{@link android.car.hardware.property.AreaIdConfig#getMaxValue()} indicates the seat's
3114      * highest position.
3115      *
3116      * <p>All integers between the min and max values are supported and indicate a transition state
3117      * between the lowest and highest positions.
3118      *
3119      * <p>Property Config:
3120      * <ul>
3121      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
3122      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
3123      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
3124      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
3125      *  <li>{@code Integer} property type
3126      * </ul>
3127      *
3128      * <p>Required Permission:
3129      * <ul>
3130      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_SEATS" to read and
3131      *  write property.
3132      * </ul>
3133      */
3134     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
3135     public static final int SEAT_HEIGHT_POS = 356518795;
3136     /**
3137      * Seat height move.
3138      *
3139      * <p>This property is not in any particular unit but in a specified range of relative movement
3140      * speeds.
3141      *
3142      * <p>Positive values mean the seat is moving up and negative values mean the seat is moving
3143      * down. Larger integers, either positive or negative, indicate a faster speed. Once the seat
3144      * reaches the positional limit, the value resets to 0. When this property's value is 0, that
3145      * means there is no movement currently occurring.
3146      *
3147      * <p>See {@link android.car.hardware.property.AreaIdConfig#getMaxValue()} and {@link
3148      * android.car.hardware.property.AreaIdConfig#getMinValue()} for the range of possible speeds.
3149      * All integers between min and max value are supported.
3150      *
3151      * <p>Property Config:
3152      * <ul>
3153      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
3154      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
3155      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
3156      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
3157      *  <li>{@code Integer} property type
3158      * </ul>
3159      *
3160      * <p>Required Permission:
3161      * <ul>
3162      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_SEATS" to read and
3163      *  write property.
3164      * </ul>
3165      */
3166     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
3167     public static final int SEAT_HEIGHT_MOVE = 356518796;
3168     /**
3169      * Seat depth position.
3170      *
3171      * <p>This property is not in any particular unit but in a specified range of relative
3172      * positions.
3173      *
3174      * <p>{@link android.car.hardware.property.AreaIdConfig#getMinValue()} indicates the seat's
3175      * shallowest position. This corresponds to the smallest distance between the front edge of the
3176      * seat and the seat backrest.
3177      * <p>{@link android.car.hardware.property.AreaIdConfig#getMaxValue()} indicates the seat's
3178      * deepest position. This corresponds to the largest distance between the front edge of the seat
3179      * and the seat backrest.
3180      *
3181      * <p>All integers between the min and max values are supported and indicate a transition state
3182      * between the shallowest and deepest positions.
3183      *
3184      * <p>Property Config:
3185      * <ul>
3186      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
3187      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
3188      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
3189      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
3190      *  <li>{@code Integer} property type
3191      * </ul>
3192      *
3193      * <p>Required Permission:
3194      * <ul>
3195      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_SEATS" to read and
3196      *  write property.
3197      * </ul>
3198      */
3199     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
3200     public static final int SEAT_DEPTH_POS = 356518797;
3201     /**
3202      * Seat depth move.
3203      *
3204      * <p>This property is not in any particular unit but in a specified range of relative movement
3205      * speeds.
3206      *
3207      * <p>Positive values mean the distance between the seat's front edge and the back of the seat
3208      * is increasing, thus making the seat deeper. Negative values mean the distance between the
3209      * seat's front edge and the back of the seat is decreasing, thus making the seat shallower.
3210      * Larger integers, either positive or negative, indicate a faster speed. Once the seat depth
3211      * reaches its limit, the value resets to 0. When this property's value is 0, that means there
3212      * is no movement currently occurring.
3213      *
3214      * <p>See {@link android.car.hardware.property.AreaIdConfig#getMaxValue()} and {@link
3215      * android.car.hardware.property.AreaIdConfig#getMinValue()} for the range of possible speeds.
3216      * All integers between min and max value are supported.
3217      *
3218      * <p>Property Config:
3219      * <ul>
3220      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
3221      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
3222      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
3223      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
3224      *  <li>{@code Integer} property type
3225      * </ul>
3226      *
3227      * <p>Required Permission:
3228      * <ul>
3229      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_SEATS" to read and
3230      *  write property.
3231      * </ul>
3232      */
3233     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
3234     public static final int SEAT_DEPTH_MOVE = 356518798;
3235     /**
3236      * Seat tilt position.
3237      *
3238      * <p>This property is not in any particular unit but in a specified range of relative
3239      * positions.
3240      *
3241      * <p>{@link android.car.hardware.property.AreaIdConfig#getMinValue()} indicates the seat
3242      * bottom's lowest angular position. This corresponds to the seat's front edge at its lowest
3243      * possible position relative to the rear end of the seat.
3244      * <p>{@link android.car.hardware.property.AreaIdConfig#getMaxValue()} indicates the seat
3245      * bottom's highest angular position. This corresponds to the seat's front edge at its highest
3246      * possible position relative to the rear end of the seat.
3247      *
3248      * <p>All integers between the min and max values are supported and indicate a transition state
3249      * between the lowest and highest positions.
3250      *
3251      * <p>Property Config:
3252      * <ul>
3253      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
3254      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
3255      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
3256      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
3257      *  <li>{@code Integer} property type
3258      * </ul>
3259      *
3260      * <p>Required Permission:
3261      * <ul>
3262      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_SEATS" to read and
3263      *  write property.
3264      * </ul>
3265      */
3266     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
3267     public static final int SEAT_TILT_POS = 356518799;
3268     /**
3269      * Seat tilt move.
3270      *
3271      * <p>This property is not in any particular unit but in a specified range of relative movement
3272      * speeds.
3273      *
3274      * <p>Positive values mean the seat cushion is tilting upward such that the seat cushion's front
3275      * edge is higher than the rear end of the seat cushion. Negative values mean the seat cushion
3276      * is tilting downward such that the seat cushion's front edge is lower than the rear end of the
3277      * seat cushion. Larger integers, either positive or negative, indicate a faster speed. Once the
3278      * seat cushion reaches the positional limit, the value resets to 0. When this property's value
3279      * is 0, that means there is no movement currently occurring.
3280      *
3281      * <p>See {@link android.car.hardware.property.AreaIdConfig#getMaxValue()} and {@link
3282      * android.car.hardware.property.AreaIdConfig#getMinValue()} for the range of possible speeds.
3283      * All integers between min and max value are supported.
3284      *
3285      * <p>Property Config:
3286      * <ul>
3287      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
3288      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
3289      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
3290      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
3291      *  <li>{@code Integer} property type
3292      * </ul>
3293      *
3294      * <p>Required Permission:
3295      * <ul>
3296      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_SEATS" to read and
3297      *  write property.
3298      * </ul>
3299      */
3300     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
3301     public static final int SEAT_TILT_MOVE = 356518800;
3302     /**
3303      * Lumber fore/aft position.
3304      *
3305      * <p>This property is not in any particular unit but in a specified range of relative
3306      * positions.
3307      *
3308      * <p>{@link android.car.hardware.property.AreaIdConfig#getMinValue()} indicates the seat lumbar
3309      * support's rearward most position (i.e. least supportive position).
3310      * <p>{@link android.car.hardware.property.AreaIdConfig#getMaxValue()} indicates the seat lumbar
3311      * support's forward most position (i.e. most supportive position).
3312      *
3313      * <p>All integers between the min and max values are supported and indicate a transition state
3314      * between the forward most and rearward most positions.
3315      *
3316      * <p>Property Config:
3317      * <ul>
3318      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
3319      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
3320      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
3321      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
3322      *  <li>{@code Integer} property type
3323      * </ul>
3324      *
3325      * <p>Required Permission:
3326      * <ul>
3327      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_SEATS" to read and
3328      *  write property.
3329      * </ul>
3330      */
3331     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
3332     public static final int SEAT_LUMBAR_FORE_AFT_POS = 356518801;
3333     /**
3334      * Lumbar fore/aft move.
3335      *
3336      * <p>This property is not in any particular unit but in a specified range of relative movement
3337      * speeds.
3338      *
3339      * <p>Positive values mean the lumbar support is moving forward towards the front of the seat
3340      * and negative values mean the lumbar support is moving backward away from the front of the
3341      * seat. Larger integers, either positive or negative, indicate a faster speed. Once the lumbar
3342      * support reaches the positional limit, the value resets to 0. When this property's value is 0,
3343      * that means there is no movement currently occurring.
3344      *
3345      * <p>See {@link android.car.hardware.property.AreaIdConfig#getMaxValue()} and {@link
3346      * android.car.hardware.property.AreaIdConfig#getMinValue()} for the range of possible speeds.
3347      * All integers between min and max value are supported.
3348      *
3349      * <p>Property Config:
3350      * <ul>
3351      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
3352      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
3353      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
3354      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
3355      *  <li>{@code Integer} property type
3356      * </ul>
3357      *
3358      * <p>Required Permission:
3359      * <ul>
3360      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_SEATS" to read and
3361      *  write property.
3362      * </ul>
3363      */
3364     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
3365     public static final int SEAT_LUMBAR_FORE_AFT_MOVE = 356518802;
3366     /**
3367      * Lumbar side support position.
3368      *
3369      * <p>This property is not in any particular unit but in a specified range of relative
3370      * positions.
3371      *
3372      * <p>{@link android.car.hardware.property.AreaIdConfig#getMinValue()} indicates the seat lumbar
3373      * side support's thinnest position (i.e most support).
3374      * <p>{@link android.car.hardware.property.AreaIdConfig#getMaxValue()} indicates the seat lumbar
3375      * side support's widest position (i.e least support).
3376      *
3377      * <p>All integers between the min and max values are supported and indicate a transition state
3378      * between the thinnest and widest positions.
3379      *
3380      * <p>Property Config:
3381      * <ul>
3382      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
3383      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
3384      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
3385      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
3386      *  <li>{@code Integer} property type
3387      * </ul>
3388      *
3389      * <p>Required Permission:
3390      * <ul>
3391      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_SEATS" to read and
3392      *  write property.
3393      * </ul>
3394      */
3395     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
3396     public static final int SEAT_LUMBAR_SIDE_SUPPORT_POS = 356518803;
3397     /**
3398      * Lumbar side support move.
3399      *
3400      * <p>This property is not in any particular unit but in a specified range of relative movement
3401      * speeds.
3402      *
3403      * <p>Positive values mean the lumbar side support is getting wider (i.e. less support) and
3404      * negative values mean the lumbar side support is getting thinner (i.e. more support). Larger
3405      * integers, either positive or negative, indicate a faster speed. Once the lumbar side support
3406      * reaches the positional limit, the value resets to 0. When this property's value is 0, that
3407      * means there is no movement currently occurring.
3408      *
3409      * <p>See {@link android.car.hardware.property.AreaIdConfig#getMaxValue()} and {@link
3410      * android.car.hardware.property.AreaIdConfig#getMinValue()} for the range of possible speeds.
3411      * All integers between min and max value are supported.
3412      *
3413      * <p>Property Config:
3414      * <ul>
3415      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
3416      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
3417      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
3418      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
3419      *  <li>{@code Integer} property type
3420      * </ul>
3421      *
3422      * <p>Required Permission:
3423      * <ul>
3424      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_SEATS" to read and
3425      *  write property.
3426      * </ul>
3427      */
3428     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
3429     public static final int SEAT_LUMBAR_SIDE_SUPPORT_MOVE = 356518804;
3430 
3431     /**
3432      * Headrest height position.
3433      *
3434      * <p>Not exposed through {@link android.car.hardware.property.CarPropertyManager}.
3435      *
3436      * <p>This property is not supported.
3437      *
3438      * @deprecated because it is defined as type {@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL},
3439      * which means all seats use the same value. Use {@link #SEAT_HEADREST_HEIGHT_POS_V2} instead
3440      * which fixes this issue by being defined as type
3441      * {@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}.
3442      */
3443     @Deprecated
3444     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
3445     public static final int SEAT_HEADREST_HEIGHT_POS = 289409941;
3446 
3447     /**
3448      * Headrest height position.
3449      *
3450      * <p>This property is not in any particular unit but in a specified range of relative
3451      * positions.
3452      *
3453      * <p>The {@link android.car.hardware.property.AreaIdConfig#getMinValue()} indicates the seat
3454      * headrest's shortest position.
3455      * <p>The {@link android.car.hardware.property.AreaIdConfig#getMaxValue()} indicates the seat
3456      * headrest's tallest position.
3457      *
3458      * <p>All integers between the min and max values are supported and indicate a transition state
3459      * between the shortest and tallest positions.
3460      *
3461      * <p>{@link android.car.hardware.CarPropertyConfig#getAreaIds()} specifies which seats are
3462      * supported.
3463      *
3464      * <p>Property Config:
3465      * <ul>
3466      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
3467      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
3468      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
3469      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
3470      *  <li>{@code Integer} property type
3471      * </ul>
3472      *
3473      * <p>Required Permission:
3474      * <ul>
3475      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_SEATS" to read
3476      *  and write property.
3477      * </ul>
3478      */
3479     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
3480     public static final int SEAT_HEADREST_HEIGHT_POS_V2 = 356518820;
3481 
3482     /**
3483      * Headrest height move.
3484      *
3485      * <p>This property is not in any particular unit but in a specified range of relative movement
3486      * speeds.
3487      *
3488      * <p>Positive values mean the headrest is moving up and negative values mean the headrest is
3489      * moving down. Larger integers, either positive or negative, indicate a faster speed. Once the
3490      * headrest reaches the positional limit, the value resets to 0. When this property's value is
3491      * 0, that means there is no movement currently occurring.
3492      *
3493      * <p>See {@link android.car.hardware.property.AreaIdConfig#getMaxValue()} and {@link
3494      * android.car.hardware.property.AreaIdConfig#getMinValue()} for the range of possible speeds.
3495      * All integers between min and max value are supported.
3496      *
3497      * <p>Property Config:
3498      * <ul>
3499      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
3500      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
3501      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
3502      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
3503      *  <li>{@code Integer} property type
3504      * </ul>
3505      *
3506      * <p>Required Permission:
3507      * <ul>
3508      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_SEATS" to read
3509      *  and write property.
3510      * </ul>
3511      */
3512     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
3513     public static final int SEAT_HEADREST_HEIGHT_MOVE = 356518806;
3514     /**
3515      * Headrest angle position.
3516      *
3517      * <p>This property is not in any particular unit but in a specified range of relative
3518      * positions.
3519      *
3520      * <p>The {@link android.car.hardware.property.AreaIdConfig#getMinValue()} indicates the seat
3521      * headrest's full recline position.
3522      * <p>The {@link android.car.hardware.property.AreaIdConfig#getMaxValue()} indicates the seat
3523      * headrest's most upright/forward position.
3524      *
3525      * <p>All integers between the min and max values are supported and indicate a transition state
3526      * between the forward most and rearward most positions.
3527      *
3528      * <p>Property Config:
3529      * <ul>
3530      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
3531      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
3532      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
3533      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
3534      *  <li>{@code Integer} property type
3535      * </ul>
3536      *
3537      * <p>Required Permission:
3538      * <ul>
3539      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_SEATS" to read
3540      *  and write property.
3541      * </ul>
3542      */
3543     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
3544     public static final int SEAT_HEADREST_ANGLE_POS = 356518807;
3545     /**
3546      * Headrest angle move.
3547      *
3548      * <p>This property is not in any particular unit but in a specified range of relative movement
3549      * speeds.
3550      *
3551      * <p>Positive values mean the headrest is moving upright/forward and negative values mean the
3552      * headrest is reclining. Larger integers, either positive or negative, indicate a faster speed.
3553      * Once the headrest reaches the positional limit, the value resets to 0. When this property's
3554      * value is 0, that means there is no movement currently occurring.
3555      *
3556      * <p>See {@link android.car.hardware.property.AreaIdConfig#getMaxValue()} and {@link
3557      * android.car.hardware.property.AreaIdConfig#getMinValue()} for the range of possible speeds.
3558      * All integers between min and max value are supported.
3559      *
3560      * <p>Property Config:
3561      * <ul>
3562      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
3563      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
3564      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
3565      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
3566      *  <li>{@code Integer} property type
3567      * </ul>
3568      *
3569      * <p>Required Permission:
3570      * <ul>
3571      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_SEATS" to read
3572      *  and write property.
3573      * </ul>
3574      */
3575     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
3576     public static final int SEAT_HEADREST_ANGLE_MOVE = 356518808;
3577     /**
3578      * Headrest fore/aft position.
3579      *
3580      * <p>This property is not in any particular unit but in a specified range of relative
3581      * positions.
3582      *
3583      * <p>The {@link android.car.hardware.property.AreaIdConfig#getMinValue()} indicates the seat
3584      * headrest's rearward-most linear position.
3585      * <p>The {@link android.car.hardware.property.AreaIdConfig#getMaxValue()} indicates the seat
3586      * headrest's forward-most linear position.
3587      *
3588      * <p>All integers between the min and max values are supported and indicate a transition state
3589      * between the forward most and rearward most positions.
3590      *
3591      * <p>Property Config:
3592      * <ul>
3593      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
3594      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
3595      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
3596      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
3597      *  <li>{@code Integer} property type
3598      * </ul>
3599      *
3600      * <p>Required Permission:
3601      * <ul>
3602      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_SEATS" to read
3603      *  and write property.
3604      * </ul>
3605      */
3606     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
3607     public static final int SEAT_HEADREST_FORE_AFT_POS = 356518809;
3608     /**
3609      * Headrest fore/aft move.
3610      *
3611      * <p>This property is not in any particular unit but in a specified range of relative movement
3612      * speeds.
3613      *
3614      * <p>Positive values mean the headrest is moving forward towards the front of the seat and
3615      * negative values mean the headrest is moving backward away from the front of the seat. Larger
3616      * integers, either positive or negative, indicate a faster speed. Once the headrest reaches the
3617      * positional limit, the value resets to 0. When this property's value is 0, that means there is
3618      * no movement currently occurring.
3619      *
3620      * <p>See {@link android.car.hardware.property.AreaIdConfig#getMaxValue()} and {@link
3621      * android.car.hardware.property.AreaIdConfig#getMinValue()} for the range of possible speeds.
3622      * All integers between min and max value are supported.
3623      *
3624      * <p>Property Config:
3625      * <ul>
3626      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
3627      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
3628      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
3629      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
3630      *  <li>{@code Integer} property type
3631      * </ul>
3632      *
3633      * <p>Required Permission:
3634      * <ul>
3635      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_SEATS" to read
3636      *  and write property.
3637      * </ul>
3638      */
3639     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
3640     public static final int SEAT_HEADREST_FORE_AFT_MOVE = 356518810;
3641     /**
3642      * Represents property for state of the footwell lights.
3643      *
3644      * <p>{@code SEAT_FOOTWELL_LIGHTS_STATE} reflects the current state of the lights at any point
3645      * in time. This is different from the function of {@link #SEAT_FOOTWELL_LIGHTS_SWITCH} which
3646      * represents the position of the switch controlling the lights. Therefore, {@code
3647      * SEAT_FOOTWELL_LIGHTS_STATE} may not match the value of {@link #SEAT_FOOTWELL_LIGHTS_SWITCH}
3648      * (e.g. {@link #SEAT_FOOTWELL_LIGHTS_SWITCH}={@code VehicleLightSwitch#STATE_AUTOMATIC} and
3649      * {@code SEAT_FOOTWELL_LIGHTS_STATE}={@code VehicleLightState#STATE_ON}).
3650      *
3651      * <p>This property will only be implemented if {@code SEAT_FOOTWELL_LIGHTS_STATE}'s value may
3652      * be different from that of {@link #CABIN_LIGHTS_STATE}.
3653      *
3654      * <p>For each supported area ID, the {@link
3655      * android.car.hardware.property.AreaIdConfig#getSupportedEnumValues()} obtained from {@link
3656      * android.car.hardware.CarPropertyConfig#getAreaIdConfig(int)} specifies which enum values from
3657      * {@code VehicleLightState} are supported.
3658      *
3659      * <p>Property Config:
3660      * <ul>
3661      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
3662      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
3663      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
3664      *  <li>{@code Integer} property type
3665      * </ul>
3666      *
3667      * <p>Required Permission:
3668      * <ul>
3669      *  <li>Signature|Privileged permission "android.car.permission.READ_CAR_INTERIOR_LIGHTS" to
3670      *  read property.
3671      *  <li>Property is not writable.
3672      * </ul>
3673      *
3674      * @data_enum {@link VehicleLightState}
3675      */
3676     @RequiresPermission(Car.PERMISSION_READ_INTERIOR_LIGHTS)
3677     public static final int SEAT_FOOTWELL_LIGHTS_STATE = 356518811;
3678     /**
3679      * Represents property for switch of the footwell lights.
3680      *
3681      * <p>{@code SEAT_FOOTWELL_LIGHTS_SWITCH} represents the position of the switch controlling the
3682      * lights. This is different from the function of {@link #SEAT_FOOTWELL_LIGHTS_STATE} which
3683      * reflects the current state of the lights at any point in time. Therefore, {@code
3684      * SEAT_FOOTWELL_LIGHTS_SWITCH} may not match the value of {@link #SEAT_FOOTWELL_LIGHTS_STATE}
3685      * (e.g. {@code SEAT_FOOTWELL_LIGHTS_SWITCH}={@code VehicleLightSwitch#STATE_AUTOMATIC} and
3686      * {@link #SEAT_FOOTWELL_LIGHTS_STATE}={@code VehicleLightState#STATE_ON}).
3687      *
3688      * <p>This property will only be implemented if {@code SEAT_FOOTWELL_LIGHTS_SWITCH}'s value may
3689      * be different from that of {@link #CABIN_LIGHTS_SWITCH}.
3690      *
3691      * <p>For each supported area ID, the {@link
3692      * android.car.hardware.property.AreaIdConfig#getSupportedEnumValues()} obtained from {@link
3693      * android.car.hardware.CarPropertyConfig#getAreaIdConfig(int)} specifies which enum values from
3694      * {@code VehicleLightSwitch} are supported.
3695      *
3696      * <p>Property Config:
3697      * <ul>
3698      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
3699      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
3700      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
3701      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
3702      *  <li>{@code Integer} property type
3703      * </ul>
3704      *
3705      * <p>Required Permission:
3706      * <ul>
3707      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_INTERIOR_LIGHTS" to
3708      *  read and write property.
3709      * </ul>
3710      *
3711      * @data_enum {@link VehicleLightSwitch}
3712      */
3713     @RequiresPermission(Car.PERMISSION_CONTROL_INTERIOR_LIGHTS)
3714     public static final int SEAT_FOOTWELL_LIGHTS_SWITCH = 356518812;
3715     /**
3716      * Represents property for Seat easy access feature.
3717      *
3718      * <p>If true, the seat will automatically adjust to make it easier for the occupant to enter
3719      * and exit the vehicle. Each area ID maps to the seat that the user is trying to enter/exit
3720      * with the help of the easy access feature.
3721      *
3722      * <p>Property Config:
3723      * <ul>
3724      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
3725      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
3726      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
3727      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
3728      *  <li>{@code Boolean} property type
3729      * </ul>
3730      *
3731      * <p>Required Permission:
3732      * <ul>
3733      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_CAR_SEATS} to read and
3734      *  write property.
3735      * </ul>
3736      *
3737      * @hide
3738      */
3739     @SystemApi
3740     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
3741     public static final int SEAT_EASY_ACCESS_ENABLED = 354421661;
3742     /**
3743      * Represents feature to enable/disable a seat's ability to deploy airbag(s) when triggered
3744      * (e.g. by a crash).
3745      *
3746      * <p>If true, it means the seat's airbags are enabled, and if triggered (e.g. by a crash), they
3747      * will deploy. If false, it means the seat's airbags are disabled, and they will not deploy
3748      * under any circumstance. This property does not indicate if the airbags are deployed or not.
3749      *
3750      * <p>Property Config:
3751      * <ul>
3752      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
3753      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
3754      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
3755      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
3756      *  <li>{@code Boolean} property type
3757      * </ul>
3758      *
3759      * <p>Required Permission:
3760      * <ul>
3761      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_CAR_AIRBAGS} to read and
3762      *  write property.
3763      * </ul>
3764      *
3765      * @hide
3766      */
3767     @SystemApi
3768     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_AIRBAGS)
3769     public static final int SEAT_AIRBAG_ENABLED = 354421662;
3770     /**
3771      * State of deployment for seat airbags.
3772      *
3773      * <p>Bit flag property to relay information on which airbags have been deployed in the vehicle
3774      * at each seat, vs which ones are currently still armed. When SEAT_AIRBAG_ENABLED is set to
3775      * false at a particular areaId, this property will be UNAVAILABLE at that areaId.
3776      *
3777      * <p>Enums apply to each seat, not the global vehicle. For example,
3778      * {@link android.car.hardware.property.VehicleAirbagLocation#CURTAIN} at the driver seat areaId
3779      * represents whether the driver side curtain airbag has been deployed. Multiple bit flags can
3780      * be set to indicate that multiple different airbags have been deployed for the seat.
3781      *
3782      * <p>For each seat area ID, the {@link
3783      * android.car.hardware.property.AreaIdConfig#getSupportedEnumValues()} array obtained from
3784      * {@link android.car.hardware.CarPropertyConfig#getAreaIdConfig(int)} specifies which states
3785      * from {@link android.car.hardware.property.VehicleAirbagLocation} are supported.
3786      *
3787      * <p>Property Config:
3788      * <ul>
3789      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
3790      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
3791      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
3792      *  <li>{@code Integer} property type
3793      * </ul>
3794      *
3795      * <p>Required Permission:
3796      * <ul>
3797      *  <li>Signature|Privileged permission "android.car.permission.READ_CAR_AIRBAGS" to read
3798      *  property.
3799      *  <li>Property is not writable.
3800      * </ul>
3801      *
3802      * @data_enum {@link android.car.hardware.property.VehicleAirbagLocation}
3803      *
3804      * @hide
3805      */
3806     @FlaggedApi(FLAG_ANDROID_VIC_VEHICLE_PROPERTIES)
3807     @SystemApi
3808     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_CAR_AIRBAGS))
3809     public static final int SEAT_AIRBAGS_DEPLOYED = 356518821;
3810     /**
3811      * Represents property for seat’s hipside (bottom cushion’s side) support position.
3812      *
3813      * <p>This property is not in any particular unit but in a specified range of relative
3814      * positions.
3815      *
3816      * <p>The {@link android.car.hardware.property.AreaIdConfig#getMinValue()} indicates the seat
3817      * hipside support's thinnest position (i.e. most support).
3818      * <p>The {@link android.car.hardware.property.AreaIdConfig#getMaxValue()} indicates the seat
3819      * hipside support's widest position (i.e. least support).
3820      *
3821      * <p>All integers between the min and max values are supported and indicate a transition state
3822      * between the thinnest and widest positions.
3823      *
3824      * <p>Property Config:
3825      * <ul>
3826      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
3827      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
3828      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
3829      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
3830      *  <li>{@code Integer} property type
3831      * </ul>
3832      *
3833      * <p>Required Permission:
3834      * <ul>
3835      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_CAR_SEATS} to read and
3836      *  write property.
3837      * </ul>
3838      *
3839      * @hide
3840      */
3841     @SystemApi
3842     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
3843     public static final int SEAT_CUSHION_SIDE_SUPPORT_POS = 356518815;
3844     /**
3845      * Represents property for movement direction and speed of seat cushion side support.
3846      *
3847      * <p>This property is not in any particular unit but in a specified range of relative movement
3848      * speeds.
3849      *
3850      * <p>Positive values means the seat cushion side support is growing wider (i.e. less support)
3851      * and negative values means the seat cushion side support is growing thinner (i.e. more
3852      * support). Larger integers, either positive or negative, indicate a faster speed. Once the
3853      * seat cushion side support reaches the positional limit, the value resets to 0. When this
3854      * property's value is 0, that means there is no movement currently occurring.
3855      *
3856      * <p>See {@link android.car.hardware.property.AreaIdConfig#getMaxValue()} and {@link
3857      * android.car.hardware.property.AreaIdConfig#getMinValue()} for the range of possible speeds.
3858      * All integers between min and max value are supported.
3859      *
3860      * <p>Property Config:
3861      * <ul>
3862      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
3863      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
3864      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
3865      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
3866      *  <li>{@code Integer} property type
3867      * </ul>
3868      *
3869      * <p>Required Permission:
3870      * <ul>
3871      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_CAR_SEATS} to read and
3872      *  write property.
3873      * </ul>
3874      *
3875      * @hide
3876      */
3877     @SystemApi
3878     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
3879     public static final int SEAT_CUSHION_SIDE_SUPPORT_MOVE = 356518816;
3880     /**
3881      * Represents property for seat’s lumbar support vertical position.
3882      *
3883      * <p>This property is not in any particular unit but in a specified range of relative
3884      * positions.
3885      *
3886      * <p>The {@link android.car.hardware.property.AreaIdConfig#getMinValue()} indicates the seat
3887      * lumbar support's lowest position.
3888      * <p>The {@link android.car.hardware.property.AreaIdConfig#getMaxValue()} indicates the seat
3889      * lumbar support's highest position.
3890      *
3891      * <p>All integers between the min and max values are supported and indicate a transition state
3892      * between the lowest and highest positions.
3893      *
3894      * <p>Property Config:
3895      * <ul>
3896      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
3897      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
3898      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
3899      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
3900      *  <li>{@code Integer} property type
3901      * </ul>
3902      *
3903      * <p>Required Permission:
3904      * <ul>
3905      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_CAR_SEATS} to read and
3906      *  write property.
3907      * </ul>
3908      *
3909      * @hide
3910      */
3911     @SystemApi
3912     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
3913     public static final int SEAT_LUMBAR_VERTICAL_POS = 356518817;
3914     /**
3915      * Represents property for vertical movement direction and speed of seat lumbar support.
3916      *
3917      * <p>This property is not in any particular unit but in a specified range of relative movement
3918      * speeds.
3919      *
3920      * <p>Positive values mean the lumbar support is moving up and negative values mean the lumbar
3921      * support is moving down. Larger integers, either positive or negative, indicate a faster
3922      * speed. Once the lumbar support reaches the positional limit, the value resets to 0. When this
3923      * property's value is 0, that means there is no movement currently occurring.
3924      *
3925      * <p>See {@link android.car.hardware.property.AreaIdConfig#getMaxValue()} and {@link
3926      * android.car.hardware.property.AreaIdConfig#getMinValue()} for the range of possible speeds.
3927      * All integers between min and max value are supported.
3928      *
3929      * <p>Property Config:
3930      * <ul>
3931      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
3932      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
3933      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
3934      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
3935      *  <li>{@code Integer} property type
3936      * </ul>
3937      *
3938      * <p>Required Permission:
3939      * <ul>
3940      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_CAR_SEATS} to read and
3941      *  write property.
3942      * </ul>
3943      *
3944      * @hide
3945      */
3946     @SystemApi
3947     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
3948     public static final int SEAT_LUMBAR_VERTICAL_MOVE = 356518818;
3949     /**
3950      * Represents property that indicates the current walk-in position of the seat.
3951      *
3952      * <p>This property is not in any particular unit but in a specified range of relative
3953      * positions.
3954      *
3955      * <p>{@link android.car.hardware.property.AreaIdConfig#getMinValue()} indicates the normal seat
3956      * position.
3957      * <p>{@link android.car.hardware.property.AreaIdConfig#getMaxValue()} indicates the seat's
3958      * position in full walk-in mode.
3959      *
3960      * <p>All integers in between the min and max values are supported and indicate a transition
3961      * state between the normal and walk-in positions. The area IDs match the seats that actually
3962      * move when the walk-in feature activates.
3963      *
3964      * <p>Property Config:
3965      * <ul>
3966      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
3967      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
3968      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
3969      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
3970      *  <li>{@code Integer} property type
3971      * </ul>
3972      *
3973      * <p>Required Permission:
3974      * <ul>
3975      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_CAR_SEATS} to read and
3976      *  write property.
3977      * </ul>
3978      *
3979      * @hide
3980      */
3981     @SystemApi
3982     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
3983     public static final int SEAT_WALK_IN_POS = 356518819;
3984     /**
3985      * Seat belt pretensioner deployed.
3986      *
3987      * <p>Property to relay information on whether the seat belt pretensioner has been deployed for
3988      * a particular seat due to a collision. This is different from the regular seat belt tightening
3989      * system that continuously adds tension to the seat belts so that they fit snugly around the
3990      * person sitting in the seat, nor is it the seat belt retractor system that locks the seat belt
3991      * in place during sudden brakes or when the user jerks the seat belt.
3992      *
3993      * <p>If this property is dependant on the state of other properties, and if those properties
3994      * are currently in the state that doesn't support this property, reading this property will
3995      * throw {@link android.car.hardware.property.PropertyNotAvailableException}.
3996      *
3997      * <p>Property Config:
3998      * <ul>
3999      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
4000      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
4001      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
4002      *  <li>{@code Boolean} property type
4003      * </ul>
4004      *
4005      * <p>Required Permission:
4006      * <ul>
4007      *  <li>Signature|Privileged permission "android.car.permission.READ_CAR_SEAT_BELTS" to read
4008      *  property.
4009      *  <li>Property is not writable.
4010      * </ul>
4011      *
4012      * @hide
4013      */
4014     @FlaggedApi(FLAG_ANDROID_VIC_VEHICLE_PROPERTIES)
4015     @SystemApi
4016     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_CAR_SEAT_BELTS))
4017     public static final int SEAT_BELT_PRETENSIONER_DEPLOYED = 354421670;
4018     /**
4019      * Seat Occupancy.
4020      *
4021      * <p>Property Config:
4022      * <ul>
4023      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
4024      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
4025      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
4026      *  <li>{@code Integer} property type
4027      * </ul>
4028      *
4029      * <p>Required Permission:
4030      * <ul>
4031      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_SEATS" to read
4032      *  property.
4033      *  <li>Property is not writable.
4034      * </ul>
4035      *
4036      * @data_enum {@link VehicleSeatOccupancyState}
4037      */
4038     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
4039     public static final int SEAT_OCCUPANCY = 356518832;
4040     /**
4041      * Window Position.
4042      *
4043      * <p>This property is not in any particular unit but in a specified range of relative
4044      * positions.
4045      *
4046      * <p>{@link android.car.hardware.property.AreaIdConfig#getMinValue()} indicates the window's
4047      * position when closed/fully open out of plane. If the window cannot open out of plane, then
4048      * {@link android.car.hardware.property.AreaIdConfig#getMinValue()} is the position of the
4049      * window when fully closed and must be 0. If the window can open out of plane, {@link
4050      * android.car.hardware.property.AreaIdConfig#getMinValue()} indicates the window is fully open
4051      * in its position out of plane and will be a negative value.
4052      * <p>{@link android.car.hardware.property.AreaIdConfig#getMaxValue()} indicates the window's
4053      * position when fully open.
4054      *
4055      * <p>All integers in between the min and max values are supported and indicate a transition
4056      * state between the closed and fully open positions.
4057      *
4058      * <p>Property Config:
4059      * <ul>
4060      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
4061      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
4062      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_WINDOW}
4063      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
4064      *  <li>{@code Integer} property type
4065      * </ul>
4066      *
4067      * <p>Required Permission:
4068      * <ul>
4069      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_WINDOWS" to read and
4070      *  write property.
4071      * </ul>
4072      */
4073     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_WINDOWS)
4074     public static final int WINDOW_POS = 322964416;
4075     /**
4076      * Window Move.
4077      *
4078      * <p>This property is not in any particular unit but in a specified range of relative movement
4079      * speeds.
4080      *
4081      * <p>Positive values mean the window is either closing from its out of plane position (if such
4082      * a position is supported by the window), or is opening in plane. Negative values mean the
4083      * window is closing in plane, or opening in its out of plane position (if the position is
4084      * supported). Larger integers, either positive or negative, indicate a faster speed. Once the
4085      * window reaches the positional limit, the value resets to 0. When this property's value is 0,
4086      * that means there is no movement currently occurring.
4087      *
4088      * <p>See {@link android.car.hardware.property.AreaIdConfig#getMaxValue()} and {@link
4089      * android.car.hardware.property.AreaIdConfig#getMinValue()} for the range of possible speeds.
4090      * All integers between min and max value are supported.
4091      *
4092      * <p>Property Config:
4093      * <ul>
4094      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
4095      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
4096      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_WINDOW}
4097      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
4098      *  <li>{@code Integer} property type
4099      * </ul>
4100      *
4101      * <p>Required Permission:
4102      * <ul>
4103      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_WINDOWS" to read and
4104      *  write property.
4105      * </ul>
4106      */
4107     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_WINDOWS)
4108     public static final int WINDOW_MOVE = 322964417;
4109     /**
4110      * Window Child Lock.
4111      *
4112      * <p>True indicates that the window is child-locked.
4113      *
4114      * <p>Property Config:
4115      * <ul>
4116      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
4117      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
4118      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_WINDOW}
4119      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
4120      *  <li>{@code Boolean} property type
4121      * </ul>
4122      *
4123      * <p>Required Permission:
4124      * <ul>
4125      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_WINDOWS" to read and
4126      *  write property.
4127      * </ul>
4128      */
4129     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_WINDOWS)
4130     public static final int WINDOW_LOCK = 320867268;
4131 
4132     /**
4133      * Windshield wipers period (milliseconds).
4134      *
4135      * <p>Returns the instantaneous time period for 1 full cycle of the windshield wipers in {@link
4136      * android.car.VehicleUnit#MILLI_SECS}. A full cycle is defined as a wiper moving from and
4137      * returning to its rest position. The {@link
4138      * android.car.hardware.property.AreaIdConfig#getMaxValue()} specifies the longest wiper period.
4139      * The {@link android.car.hardware.property.AreaIdConfig#getMinValue()} is always 0. When an
4140      * intermittent wiper setting is selected, this property value will be set to 0 during the
4141      * "pause" phase of the intermittent wiping.
4142      *
4143      * <p>Property Config:
4144      * <ul>
4145      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
4146      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_WINDOW}
4147      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
4148      *  <li>{@code Integer} property type
4149      * </ul>
4150      *
4151      * <p>Required Permission:
4152      * <ul>
4153      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_WINDSHIELD_WIPERS} to read
4154      *  property.
4155      *  <li>Property is not writable.
4156      * </ul>
4157      *
4158      * @hide
4159      */
4160     @SystemApi
4161     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_WINDSHIELD_WIPERS))
4162     public static final int WINDSHIELD_WIPERS_PERIOD = 322964421;
4163 
4164     /**
4165      * Windshield wipers state.
4166      *
4167      * <p>Returns the current state of the windshield wipers. The value of {@code
4168      * WINDSHIELD_WIPERS_STATE} may not match the value of {@link #WINDSHIELD_WIPERS_SWITCH}. (e.g.
4169      * {@code #WINDSHIELD_WIPERS_STATE} = {@link
4170      * android.car.hardware.property.WindshieldWipersState#ON} and {@link
4171      * #WINDSHIELD_WIPERS_SWITCH} = {@link
4172      * android.car.hardware.property.WindshieldWipersSwitch#AUTO}).
4173      *
4174      * <p>If {@code #WINDSHIELD_WIPERS_STATE} = {@link
4175      * android.car.hardware.property.WindshieldWipersState#ON} and {@link #WINDSHIELD_WIPERS_PERIOD}
4176      * is implemented, then {@link #WINDSHIELD_WIPERS_PERIOD} will reflect the time period of 1
4177      * full cycle of the wipers.
4178      *
4179      * <p>For each supported area ID, the {@link
4180      * android.car.hardware.property.AreaIdConfig#getSupportedEnumValues()} array obtained from
4181      * {@link android.car.hardware.CarPropertyConfig#getAreaIdConfig(int)} specifies which states
4182      * from {@link android.car.hardware.property.WindshieldWipersState} are supported.
4183      *
4184      * <p>Property Config:
4185      * <ul>
4186      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
4187      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_WINDOW}
4188      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
4189      *  <li>{@code Integer} property type
4190      * </ul>
4191      *
4192      * <p>Required Permission:
4193      * <ul>
4194      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_WINDSHIELD_WIPERS} to read
4195      *  property.
4196      *  <li>Property is not writable.
4197      * </ul>
4198      *
4199      * @data_enum {@link WindshieldWipersState}
4200      *
4201      * @hide
4202      */
4203     @SystemApi
4204     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_WINDSHIELD_WIPERS))
4205     public static final int WINDSHIELD_WIPERS_STATE = 322964422;
4206 
4207     /**
4208      * Windshield wipers switch.
4209      *
4210      * <p>Represents the position of the switch controlling the windshield wipers. The value of
4211      * {@code WINDSHIELD_WIPERS_SWITCH} may not match the value of {@link #WINDSHIELD_WIPERS_STATE}
4212      * (e.g. {@code WINDSHIELD_WIPERS_SWITCH} = {@link
4213      * android.car.hardware.property.WindshieldWipersSwitch#AUTO} and {@link
4214      * #WINDSHIELD_WIPERS_STATE} = WindshieldWipersState#ON).
4215      *
4216      * <p>For each supported area ID, the {@link
4217      * android.car.hardware.property.AreaIdConfig#getSupportedEnumValues()} array obtained from
4218      * {@link android.car.hardware.CarPropertyConfig#getAreaIdConfig(int)} specifies which values
4219      * from {@link android.car.hardware.property.WindshieldWipersSwitch} are supported.
4220      *
4221      * <p>This property is defined as read_write, but OEMs have the option to implement it as read
4222      * only.
4223      *
4224      * <p>Property Config:
4225      * <ul>
4226      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
4227      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
4228      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_WINDOW}
4229      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
4230      *  <li>{@code Integer} property type
4231      * </ul>
4232      *
4233      * <p>Required Permissions:
4234      * <ul>
4235      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_WINDSHIELD_WIPERS} or
4236      *  Signature|Privileged permission {@link Car#PERMISSION_CONTROL_WINDSHIELD_WIPERS} to read
4237      *  property.
4238      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_WINDSHIELD_WIPERS} to
4239      *  write property.
4240      * </ul>
4241      *
4242      * @data_enum {@link WindshieldWipersSwitch}
4243      *
4244      * @hide
4245      */
4246     @SystemApi
4247     @RequiresPermission.Read(@RequiresPermission(anyOf = {Car.PERMISSION_READ_WINDSHIELD_WIPERS,
4248             Car.PERMISSION_CONTROL_WINDSHIELD_WIPERS}))
4249     @RequiresPermission.Write(@RequiresPermission(Car.PERMISSION_CONTROL_WINDSHIELD_WIPERS))
4250     public static final int WINDSHIELD_WIPERS_SWITCH = 322964423;
4251 
4252     /**
4253      * Steering wheel depth position.
4254      *
4255      * <p>This property is not in any particular unit but in a specified range of relative
4256      * positions.
4257      *
4258      * <p>{@link android.car.hardware.property.AreaIdConfig#getMinValue()} indicates the steering
4259      * wheel's position when closest to the driver.
4260      * <p>{@link android.car.hardware.property.AreaIdConfig#getMaxValue()} indicates the steering
4261      * wheel's position when farthest from the driver.
4262      *
4263      * <p>All integers in between the min and max values are supported and indicate a transition
4264      * state between the closest and farthest positions.
4265      *
4266      * <p>Property Config:
4267      * <ul>
4268      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
4269      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
4270      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
4271      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
4272      *  <li>{@code Integer} property type
4273      * </ul>
4274      *
4275      * <p>Required Permission:
4276      * <ul>
4277      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_STEERING_WHEEL} to read
4278      *  and write property.
4279      * </ul>
4280      *
4281      * @hide
4282      */
4283     @SystemApi
4284     @RequiresPermission(Car.PERMISSION_CONTROL_STEERING_WHEEL)
4285     public static final int STEERING_WHEEL_DEPTH_POS = 289410016;
4286     /**
4287      * Steering wheel depth movement.
4288      *
4289      * <p>Returns the speed and direction, either towards or away from the driver, that the
4290      * steering wheel is moving in. This property is not in any particular unit but in a specified
4291      * range of relative movement speeds.
4292      *
4293      * <p>Positive values mean the steering wheel is moving away from the driver and negative values
4294      * mean the steering wheel is moving towards the driver. Larger integers, either positive or
4295      * negative, indicate a faster speed. Once the steering wheel reaches the positional limit, the
4296      * value resets to 0. When this property's value is 0, that means there is no movement currently
4297      * occurring.
4298      *
4299      * <p>See {@link android.car.hardware.property.AreaIdConfig#getMaxValue()} and {@link
4300      * android.car.hardware.property.AreaIdConfig#getMinValue()} for the range of possible speeds.
4301      * All integers between min and max value are supported.
4302      *
4303      * <p>Property Config:
4304      * <ul>
4305      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
4306      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
4307      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
4308      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
4309      *  <li>{@code Integer} property type
4310      * </ul>
4311      *
4312      * <p>Required Permission:
4313      * <ul>
4314      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_STEERING_WHEEL} to read
4315      *  and write property.
4316      * </ul>
4317      *
4318      * @hide
4319      */
4320     @SystemApi
4321     @RequiresPermission(Car.PERMISSION_CONTROL_STEERING_WHEEL)
4322     public static final int STEERING_WHEEL_DEPTH_MOVE = 289410017;
4323     /**
4324      * Steering wheel height position.
4325      *
4326      * <p>This property is not in any particular unit but in a specified range of relative
4327      * positions.
4328      *
4329      * <p>{@link android.car.hardware.property.AreaIdConfig#getMinValue()} indicates the steering
4330      * wheel's lowest position.
4331      * <p>{@link android.car.hardware.property.AreaIdConfig#getMaxValue()} indicates the steering
4332      * wheel's highest position.
4333      *
4334      * <p>All integers in between the min and max values are supported and indicate a transition
4335      * state between the lowest and highest positions.
4336      *
4337      * <p>Property Config:
4338      * <ul>
4339      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
4340      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
4341      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
4342      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
4343      *  <li>{@code Integer} property type
4344      * </ul>
4345      *
4346      * <p>Required Permission:
4347      * <ul>
4348      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_STEERING_WHEEL} to read
4349      *  and write property.
4350      * </ul>
4351      *
4352      * @hide
4353      */
4354     @SystemApi
4355     @RequiresPermission(Car.PERMISSION_CONTROL_STEERING_WHEEL)
4356     public static final int STEERING_WHEEL_HEIGHT_POS = 289410018;
4357     /**
4358      * Steering wheel height movement.
4359      *
4360      * <p>Returns the speed and direction, either upwards or downwards, that the steering wheel is
4361      * moving in. This property is not in any particular unit but in a specified range of relative
4362      * movement speeds.
4363      *
4364      * <p>Positive values mean moving upwards and negative values mean moving downwards. Larger
4365      * integers, either positive or negative, indicate a faster speed. Once the steering wheel
4366      * reaches the positional limit, the value resets to 0. When this property's value is 0, that
4367      * means there is no movement currently occurring.
4368      *
4369      * <p>See {@link android.car.hardware.property.AreaIdConfig#getMaxValue()} and {@link
4370      * android.car.hardware.property.AreaIdConfig#getMinValue()} for the range of possible speeds.
4371      * All integers between min and max value are supported.
4372      *
4373      * <p>Property Config:
4374      * <ul>
4375      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
4376      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
4377      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
4378      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
4379      *  <li>{@code Integer} property type
4380      * </ul>
4381      *
4382      * <p>Required Permission:
4383      * <ul>
4384      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_STEERING_WHEEL} to read
4385      *  and write property.
4386      * </ul>
4387      *
4388      * @hide
4389      */
4390     @SystemApi
4391     @RequiresPermission(Car.PERMISSION_CONTROL_STEERING_WHEEL)
4392     public static final int STEERING_WHEEL_HEIGHT_MOVE = 289410019;
4393     /**
4394      * Steering wheel theft lock feature enabled.
4395      *
4396      * <p>Returns true if the steering wheel theft lock feature is enabled and false if it is
4397      * disabled. If enabled, the steering wheel will lock automatically to prevent theft in
4398      * certain situations.
4399      *
4400      * <p>Property Config:
4401      * <ul>
4402      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
4403      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
4404      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
4405      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
4406      *  <li>{@code Boolean} property type
4407      * </ul>
4408      *
4409      * <p>Required Permission:
4410      * <ul>
4411      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_STEERING_WHEEL} to read
4412      *  and write property.
4413      * </ul>
4414      *
4415      * @hide
4416      */
4417     @SystemApi
4418     @RequiresPermission(Car.PERMISSION_CONTROL_STEERING_WHEEL)
4419     public static final int STEERING_WHEEL_THEFT_LOCK_ENABLED = 287312868;
4420     /**
4421      * Steering wheel locked.
4422      *
4423      * <p>Returns true if the steering wheel is locked. If locked, the steering wheel’s position is
4424      * not changeable.
4425      *
4426      * <p>Property Config:
4427      * <ul>
4428      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
4429      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
4430      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
4431      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
4432      *  <li>{@code Boolean} property type
4433      * </ul>
4434      *
4435      * <p>Required Permission:
4436      * <ul>
4437      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_STEERING_WHEEL} to read
4438      *  and write property.
4439      * </ul>
4440      *
4441      * @hide
4442      */
4443     @SystemApi
4444     @RequiresPermission(Car.PERMISSION_CONTROL_STEERING_WHEEL)
4445     public static final int STEERING_WHEEL_LOCKED = 287312869;
4446     /**
4447      * Steering wheel easy access feature enabled.
4448      *
4449      * <p>Returns true if the steering wheel easy access feature is enabled and false if it is
4450      * disabled. If enabled, the driver’s steering wheel will automatically adjust to make it easier
4451      * for the driver to enter and exit the vehicle.
4452      *
4453      * <p>Property Config:
4454      * <ul>
4455      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
4456      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
4457      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
4458      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
4459      *  <li>{@code Boolean} property type
4460      * </ul>
4461      *
4462      * <p>Required Permission:
4463      * <ul>
4464      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_STEERING_WHEEL} to read
4465      *  and write property.
4466      * </ul>
4467      *
4468      * @hide
4469      */
4470     @SystemApi
4471     @RequiresPermission(Car.PERMISSION_CONTROL_STEERING_WHEEL)
4472     public static final int STEERING_WHEEL_EASY_ACCESS_ENABLED = 287312870;
4473     /**
4474      * Vehicle Maps Service (VMS) message.
4475      *
4476      * <p>Not exposed through {@link android.car.hardware.property.CarPropertyManager}.
4477      *
4478      * <p>This property is not supported.
4479      *
4480      * @deprecated use {@link android.car.vms.VmsClientManager} instead.
4481      */
4482     @Deprecated
4483     @RequiresPermission(anyOf = {Car.PERMISSION_VMS_PUBLISHER, Car.PERMISSION_VMS_SUBSCRIBER})
4484     public static final int VEHICLE_MAP_SERVICE = 299895808;
4485     /**
4486      * Characterization of inputs used for computing location.
4487      *
4488      * <p>This property indicates what (if any) data and sensor inputs are considered by the system
4489      * when computing the vehicle's location that is shared with Android through {@link
4490      * android.location.LocationManager#GPS_PROVIDER}.
4491      *
4492      * <p>The value returned is a collection of bit flags. The bit flags are defined in {@link
4493      * LocationCharacterization}. The value will also include exactly
4494      * one of {@link LocationCharacterization#DEAD_RECKONED} or {@link
4495      * LocationCharacterization#RAW_GNSS_ONLY} among its collection of
4496      * bit flags.
4497      *
4498      * <p>When this property is not supported, it is assumed that no additional sensor inputs are
4499      * fused into the GNSS updates provided through {@link
4500      * android.location.LocationManager#GPS_PROVIDER}. That is unless otherwise specified through
4501      * other {@link android.location.LocationManager} APIs.
4502      *
4503      * <p>Property Config:
4504      * <ul>
4505      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
4506      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
4507      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
4508      *  <li>{@code Integer} property type
4509      * </ul>
4510      *
4511      * <p>Required Permission:
4512      * <ul>
4513      *  <li>Dangerous permission {@link android.Manifest.permission#ACCESS_FINE_LOCATION} to read
4514      *  property.
4515      *  <li>Property is not writable.
4516      * </ul>
4517      *
4518      * @data_flag {@link LocationCharacterization}
4519      */
4520     @RequiresPermission(ACCESS_FINE_LOCATION)
4521     public static final int LOCATION_CHARACTERIZATION = 289410064;
4522 
4523     /**
4524      * Static data for the position of each ultrasonic sensor installed on the vehicle.
4525      *
4526      * <p>Each individual sensor is identified by its unique {@link AreaIdConfig#getAreaId()} and
4527      * returns the sensor's position formatated as [x, y, z] where:
4528      *
4529      * <ul>
4530      *  <li>x is the position of the sensor along the x-axis relative to the origin of the Android
4531      *  Automotive sensor coordinate frame in millimeters.
4532      *  <li>y is the position of the sensor along the y-axis relative to the origin of the Android
4533      *  Automotive sensor coordinate frame in millimeters.
4534      *  <li>z is the position of the sensor along the z-axis relative to the origin of the Android
4535      *  Automotive sensor coordinate frame in millimeters.
4536      * </ul>
4537      *
4538      * <p>Property Config:
4539      * <ul>
4540      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
4541      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_VENDOR}
4542      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
4543      *  <li>{@code Integer[]} property type
4544      * </ul>
4545      *
4546      * <p>Required Permission:
4547      * <ul>
4548      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_ULTRASONICS_SENSOR_DATA} to
4549      *  read property.
4550      *  <li>Property is not writable.
4551      * </ul>
4552      *
4553      * @hide
4554      */
4555     @FlaggedApi(FLAG_ANDROID_VIC_VEHICLE_PROPERTIES)
4556     @SystemApi
4557     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_ULTRASONICS_SENSOR_DATA))
4558     public static final int ULTRASONICS_SENSOR_POSITION = 406916128;
4559 
4560     /**
4561      * Static data for the orientation of each ultrasonic sensor installed on the vehicle.
4562      *
4563      * <p>Each individual sensor is identified by its {@link AreaIdConfig#getAreaId()} and returns
4564      * the sensor's orientation formatted as [qw, qx, qy, qz] where:
4565      *
4566      * <ul>
4567      *  <li>qw is the quaternion coefficient w within the quaterinion (w + xi + yj + zk) describing
4568      *  the rotation of the sensor relative to the Android Automotive sensor coordinate frame.
4569      *  <li>qx is the quaternion coefficient x within the quaterinion (w + xi + yj + zk) describing
4570      *  the rotation of the sensor relative to the Android Automotive sensor coordinate frame.
4571      *  <li>qy is the quaternion coefficient y within the quaterinion (w + xi + yj + zk) describing
4572      *  the rotation of the sensor relative to the Android Automotive sensor coordinate frame.
4573      *  <li>qz is the quaternion coefficient z within the quaterinion (w + xi + yj + zk) describing
4574      *  the rotation of the sensor relative to the Android Automotive sensor coordinate frame.
4575      * </ul>
4576      *
4577      * <p>This assumes each sensor uses the same axes conventions as Android Automotive.
4578      *
4579      * <p>Property Config:
4580      * <ul>
4581      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
4582      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_VENDOR}
4583      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
4584      *  <li>{@code Float[]} property type
4585      * </ul>
4586      *
4587      * <p>Required Permission:
4588      * <ul>
4589      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_ULTRASONICS_SENSOR_DATA} to
4590      *  read property.
4591      *  <li>Property is not writable.
4592      * </ul>
4593      *
4594      * @hide
4595      */
4596     @FlaggedApi(FLAG_ANDROID_VIC_VEHICLE_PROPERTIES)
4597     @SystemApi
4598     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_ULTRASONICS_SENSOR_DATA))
4599     public static final int ULTRASONICS_SENSOR_ORIENTATION = 409013281;
4600 
4601     /**
4602      * Static data for the field of view of each ultrasonic sensor in degrees.
4603      *
4604      * <p>Each individual sensor is identified by its {@link AreaIdConfig#getAreaId()} and returns
4605      * the sensor's field of view formatted as [horizontal, vertical] where:
4606      *
4607      * <ul>
4608      *  <li>horizontal is the horizontal field of view for the specified ultrasonic sensor in
4609      *  degrees.
4610      *  <li>vertical is the vertical field of view for the associated specified ultrasonic sensor in
4611      *  degrees.
4612      * </ul>
4613      *
4614      * <p>This assumes each sensor uses the same axes conventions as Android Automotive.
4615      *
4616      * <p>Property Config:
4617      * <ul>
4618      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
4619      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_VENDOR}
4620      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
4621      *  <li>{@code Integer[]} property type
4622      * </ul>
4623      *
4624      * <p>Required Permission:
4625      * <ul>
4626      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_ULTRASONICS_SENSOR_DATA} to
4627      *  read property.
4628      *  <li>Property is not writable.
4629      * </ul>
4630      *
4631      * @hide
4632      */
4633     @FlaggedApi(FLAG_ANDROID_VIC_VEHICLE_PROPERTIES)
4634     @SystemApi
4635     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_ULTRASONICS_SENSOR_DATA))
4636     public static final int ULTRASONICS_SENSOR_FIELD_OF_VIEW = 406916130;
4637 
4638     /**
4639      * Static data for the detection range of each ultrasonic sensor in millimeters.
4640      *
4641      * <p>Each individual sensor is identified by its {@link AreaIdConfig#getAreaId()} and returns
4642      * the sensor's detection range formatted as [minimum, maximum] where:
4643      *
4644      * <ul>
4645      *  <li>minimum is the minimum range detectable by the ultrasonic sensor in millimeters.
4646      *  <li>maximum is the maximum range detectable by the ultrasonic sensor in millimeters.
4647      * </ul>
4648      *
4649      * <p>Property Config:
4650      * <ul>
4651      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
4652      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_VENDOR}
4653      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
4654      *  <li>{@code Integer[]} property type
4655      * </ul>
4656      *
4657      * <p>Required Permission:
4658      * <ul>
4659      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_ULTRASONICS_SENSOR_DATA} to
4660      *  read property.
4661      *  <li>Property is not writable.
4662      * </ul>
4663      *
4664      * @hide
4665      */
4666     @FlaggedApi(FLAG_ANDROID_VIC_VEHICLE_PROPERTIES)
4667     @SystemApi
4668     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_ULTRASONICS_SENSOR_DATA))
4669     public static final int ULTRASONICS_SENSOR_DETECTION_RANGE = 406916131;
4670 
4671     /**
4672      * Static data for the supported ranges of each ultrasonic sensor in millimeters.
4673      *
4674      * <p>For ultrasonic sensors that only support readings within a specific range. For example, if
4675      * an ultrasonic sensor detects an object at 700mm, but can only report that an object has been
4676      * detected between 500mm and 1000mm.
4677      *
4678      * <p>Each individual sensor is identified by its {@link AreaIdConfig#getAreaId()} and returns
4679      * the sensor's supported ranges formatted as [range_min_1, range_max_1, range_min_2,
4680      * range_max_2, ...] where:
4681      *
4682      * <ul>
4683      *  <li>range_min_1 is the minimum of one supported range by the specified sensor in
4684      *  millimeters, inclusive.
4685      *  <li>range_max_1 is the maximum of one supported range by the specified sensor in
4686      *  millimeters, inclusive.
4687      *  <li> range_min_2 is the minimum of another supported range by the specified sensor in
4688      *  millimeters, inclusive.
4689      *  <li> range_max_2 is the maximum of another supported range by the specified sensor in
4690      *  millimeters, inclusive.
4691      * </ul>
4692      *
4693      * <p>For example, if an ultrasonic sensor supports the ranges 150mm to  499mm, 500mm to 999mm,
4694      * and 1000mm to 1500mm, then the property should be set to:
4695      * <ul>
4696      *  <li>value[0] = 150
4697      *  <li>value[1] = 499
4698      *  <li>value[2] = 500
4699      *  <li>value[3] = 999
4700      *  <li>value[4] = 1000
4701      *  <li>value[5] = 1500
4702      * </ul>
4703      *
4704      * <p>If this property is not defined, all the values within the
4705      * {@link #ULTRASONICS_SENSOR_DETECTION_RANGE} for the specified sensor are assumed to be
4706      * supported.
4707      *
4708      * <p>Property Config:
4709      * <ul>
4710      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
4711      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_VENDOR}
4712      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
4713      *  <li>{@code Integer[]} property type
4714      * </ul>
4715      *
4716      * <p>Required Permission:
4717      * <ul>
4718      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_ULTRASONICS_SENSOR_DATA} to
4719      *  read property.
4720      *  <li>Property is not writable.
4721      * </ul>
4722      *
4723      * @hide
4724      */
4725     @FlaggedApi(FLAG_ANDROID_VIC_VEHICLE_PROPERTIES)
4726     @SystemApi
4727     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_ULTRASONICS_SENSOR_DATA))
4728     public static final int ULTRASONICS_SENSOR_SUPPORTED_RANGES = 406916132;
4729 
4730     /**
4731      * The distance reading of the nearest detected object per sensor in millimeters.
4732      *
4733      * <p>Each individual sensor is identified by its {@link AreaIdConfig#getAreaId()} and returns
4734      * the sensor's measured distance formatted as [distance, distance_error] where:
4735      *
4736      * <ul>
4737      *  <li>distance is the measured distance of the nearest object in millimeters. If only a range
4738      *  is supported, this value must be set to the minimum supported distance in the detected range
4739      *  as specified in {@link #ULTRASONICS_SENSOR_SUPPORTED_RANGES}.
4740      *  <li>distance_error is the error of the measured distance value in millimeters.
4741      * </ul>
4742      *
4743      * <p>If no object is detected, an empty vector will be returned. If distance_error is not
4744      * available then an array of only the measured distance will be returned.
4745      *
4746      * <p>Property Config:
4747      * <ul>
4748      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
4749      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_VENDOR}
4750      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_CONTINUOUS}
4751      *  <li>{@code Integer[]} property type
4752      * </ul>
4753      *
4754      * <p>Required Permission:
4755      * <ul>
4756      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_ULTRASONICS_SENSOR_DATA} to
4757      *  read property.
4758      *  <li>Property is not writable.
4759      * </ul>
4760      *
4761      * @hide
4762      */
4763     @FlaggedApi(FLAG_ANDROID_VIC_VEHICLE_PROPERTIES)
4764     @SystemApi
4765     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_ULTRASONICS_SENSOR_DATA))
4766     public static final int ULTRASONICS_SENSOR_MEASURED_DISTANCE = 406916133;
4767 
4768     /**
4769      * OBD2 Live Sensor Data.
4770      *
4771      * <p>Not exposed through {@link android.car.hardware.property.CarPropertyManager}.
4772      *
4773      * <p>This property is not supported.
4774      *
4775      * @deprecated use {@link android.car.diagnostic.CarDiagnosticManager} instead.
4776      */
4777     @Deprecated
4778     @RequiresPermission(Car.PERMISSION_CAR_DIAGNOSTIC_READ_ALL)
4779     public static final int OBD2_LIVE_FRAME = 299896064;
4780     /**
4781      * OBD2 Freeze Frame Sensor Data.
4782      *
4783      * <p>Not exposed through {@link android.car.hardware.property.CarPropertyManager}.
4784      *
4785      * <p>This property is not supported.
4786      *
4787      * @deprecated use {@link android.car.diagnostic.CarDiagnosticManager} instead.
4788      */
4789     @Deprecated
4790     @RequiresPermission(Car.PERMISSION_CAR_DIAGNOSTIC_READ_ALL)
4791     public static final int OBD2_FREEZE_FRAME = 299896065;
4792     /**
4793      * OBD2 Freeze Frame Information.
4794      *
4795      * <p>Not exposed through {@link android.car.hardware.property.CarPropertyManager}.
4796      *
4797      * <p>This property is not supported.
4798      *
4799      * @deprecated use {@link android.car.diagnostic.CarDiagnosticManager} instead.
4800      */
4801     @Deprecated
4802     @RequiresPermission(Car.PERMISSION_CAR_DIAGNOSTIC_READ_ALL)
4803     public static final int OBD2_FREEZE_FRAME_INFO = 299896066;
4804     /**
4805      * OBD2 Freeze Frame Clear.
4806      *
4807      * <p>Not exposed through {@link android.car.hardware.property.CarPropertyManager}.
4808      *
4809      * <p>This property is not supported.
4810      *
4811      * @deprecated use {@link android.car.diagnostic.CarDiagnosticManager} instead.
4812      */
4813     @Deprecated
4814     @RequiresPermission(Car.PERMISSION_CAR_DIAGNOSTIC_CLEAR)
4815     public static final int OBD2_FREEZE_FRAME_CLEAR = 299896067;
4816     /**
4817      * Headlights State.
4818      *
4819      * <p>Property Config:
4820      * <ul>
4821      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
4822      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
4823      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
4824      *  <li>{@code Integer} property type
4825      * </ul>
4826      *
4827      * <p>Required Permission:
4828      * <ul>
4829      *  <li>Signature|Privileged permission "android.car.permission.CAR_EXTERIOR_LIGHTS" to read
4830      *  property.
4831      *  <li>Property is not writable.
4832      * </ul>
4833      *
4834      * @data_enum {@link VehicleLightState}
4835      */
4836     @RequiresPermission(Car.PERMISSION_EXTERIOR_LIGHTS)
4837     public static final int HEADLIGHTS_STATE = 289410560;
4838     /**
4839      * High beam lights state.
4840      *
4841      * <p>Property Config:
4842      * <ul>
4843      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
4844      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
4845      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
4846      *  <li>{@code Integer} property type
4847      * </ul>
4848      *
4849      * <p>Required Permission:
4850      * <ul>
4851      *  <li>Signature|Privileged permission "android.car.permission.CAR_EXTERIOR_LIGHTS" to read
4852      *  property.
4853      *  <li>Property is not writable.
4854      * </ul>
4855      *
4856      * @data_enum {@link VehicleLightState}
4857      */
4858     @RequiresPermission(Car.PERMISSION_EXTERIOR_LIGHTS)
4859     public static final int HIGH_BEAM_LIGHTS_STATE = 289410561;
4860     /**
4861      * Fog light state.
4862      *
4863      * <p>If the car has both front and rear fog lights:
4864      * <ul>
4865      *  <li>If front and rear fog lights can only be controlled together: {@code FOG_LIGHTS_STATE}
4866      *  provides the state of fog lights.
4867      *  <li>If front and rear fog lights can only be controlled independently: {@link
4868      *  #FRONT_FOG_LIGHTS_STATE} and {@link #REAR_FOG_LIGHTS_STATE} provide the state of front, rear
4869      *  fog lights respectively.
4870      * </ul>
4871      *
4872      * <p>If the car has only front fog lights:
4873      * <ul>
4874      *  <li>Only one of {@code FOG_LIGHTS_STATE} or {@link #FRONT_FOG_LIGHTS_STATE} will be
4875      *  implemented in the car. The implemented property provides the state of the front fog lights.
4876      * </ul>
4877      *
4878      * <p>If the car has only rear fog lights:
4879      * <ul>
4880      *  <li>Only one of {@code FOG_LIGHTS_STATE} or {@link #REAR_FOG_LIGHTS_STATE} will be
4881      *  implemented in the car. The implemented property provides the state of the rear fog lights.
4882      * </ul>
4883      *
4884      * <p>Property Config:
4885      * <ul>
4886      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
4887      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
4888      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
4889      *  <li>{@code Integer} property type
4890      * </ul>
4891      *
4892      * <p>Required Permission:
4893      * <ul>
4894      *  <li>Signature|Privileged permission "android.car.permission.CAR_EXTERIOR_LIGHTS" to read
4895      *  property.
4896      *  <li>Property is not writable.
4897      * </ul>
4898      *
4899      * @data_enum {@link VehicleLightState}
4900      */
4901     @RequiresPermission(Car.PERMISSION_EXTERIOR_LIGHTS)
4902     public static final int FOG_LIGHTS_STATE = 289410562;
4903     /**
4904      * Hazard light status.
4905      *
4906      * <p>Property Config:
4907      * <ul>
4908      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
4909      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
4910      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
4911      *  <li>{@code Integer} property type
4912      * </ul>
4913      *
4914      * <p>Required Permission:
4915      * <ul>
4916      *  <li>Signature|Privileged permission "android.car.permission.CAR_EXTERIOR_LIGHTS" to read
4917      *  property.
4918      *  <li>Property is not writable.
4919      * </ul>
4920      *
4921      * @data_enum {@link VehicleLightState}
4922      */
4923     @RequiresPermission(Car.PERMISSION_EXTERIOR_LIGHTS)
4924     public static final int HAZARD_LIGHTS_STATE = 289410563;
4925     /**
4926      * Headlight switch.
4927      *
4928      * <p>Property Config:
4929      * <ul>
4930      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
4931      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
4932      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
4933      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
4934      *  <li>{@code Integer} property type
4935      * </ul>
4936      *
4937      * <p>Required Permission:
4938      * <ul>
4939      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_EXTERIOR_LIGHTS" to
4940      *  read and write property.
4941      * </ul>
4942      *
4943      * @data_enum {@link VehicleLightSwitch}
4944      */
4945     @RequiresPermission(Car.PERMISSION_CONTROL_EXTERIOR_LIGHTS)
4946     public static final int HEADLIGHTS_SWITCH = 289410576;
4947     /**
4948      * High beam light switch.
4949      *
4950      * <p>Property Config:
4951      * <ul>
4952      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
4953      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
4954      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
4955      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
4956      *  <li>{@code Integer} property type
4957      * </ul>
4958      *
4959      * <p>Required Permission:
4960      * <ul>
4961      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_EXTERIOR_LIGHTS" to
4962      *  read and write property.
4963      * </ul>
4964      *
4965      * @data_enum {@link VehicleLightSwitch}
4966      */
4967     @RequiresPermission(Car.PERMISSION_CONTROL_EXTERIOR_LIGHTS)
4968     public static final int HIGH_BEAM_LIGHTS_SWITCH = 289410577;
4969     /**
4970      * Fog light switch.
4971      *
4972      * <p>If the car has both front and rear fog lights:
4973      * <ul>
4974      *  <li>If front and rear fog lights can only be controlled together: {@code FOG_LIGHTS_SWITCH}
4975      *  should be used to change the fog lights state.
4976      *  <li>If front and rear fog lights can only be controlled independently: {@link
4977      *  #FRONT_FOG_LIGHTS_SWITCH} and {@link #REAR_FOG_LIGHTS_SWITCH} should be used to change the
4978      *  front and rear fog lights state respectively.
4979      * </ul>
4980      *
4981      * <p>If the car has only front fog lights:
4982      * <ul>
4983      *  <li>Only one of {@code FOG_LIGHTS_SWITCH} or {@link #FRONT_FOG_LIGHTS_SWITCH} will be
4984      *  implemented in the car. The implemented property should be used to change the front fog
4985      *  lights state.
4986      * </ul>
4987      *
4988      * <p>If the car has only rear fog lights:
4989      * <ul>
4990      *  <li>Only one of {@code FOG_LIGHTS_SWITCH} or {@link #REAR_FOG_LIGHTS_SWITCH} will be
4991      *  implemented in the car. The implemented property should be used to change the rear fog
4992      *  lights state.
4993      * </ul>
4994      *
4995      * <p>Property Config:
4996      * <ul>
4997      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
4998      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
4999      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5000      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5001      *  <li>{@code Integer} property type
5002      * </ul>
5003      *
5004      * <p>Required Permission:
5005      * <ul>
5006      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_EXTERIOR_LIGHTS" to
5007      *  read and write property.
5008      * </ul>
5009      *
5010      * @data_enum {@link VehicleLightSwitch}
5011      */
5012     @RequiresPermission(Car.PERMISSION_CONTROL_EXTERIOR_LIGHTS)
5013     public static final int FOG_LIGHTS_SWITCH = 289410578;
5014     /**
5015      * Hazard light switch.
5016      *
5017      * <p>Property Config:
5018      * <ul>
5019      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
5020      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
5021      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5022      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5023      *  <li>{@code Integer} property type
5024      * </ul>
5025      *
5026      * <p>Required Permission:
5027      * <ul>
5028      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_EXTERIOR_LIGHTS" to
5029      *  read and write property.
5030      * </ul>
5031      *
5032      * @data_enum {@link VehicleLightSwitch}
5033      */
5034     @RequiresPermission(Car.PERMISSION_CONTROL_EXTERIOR_LIGHTS)
5035     public static final int HAZARD_LIGHTS_SWITCH = 289410579;
5036     /**
5037      * Cabin lights.
5038      *
5039      * <p>Property Config:
5040      * <ul>
5041      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
5042      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5043      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5044      *  <li>{@code Integer} property type
5045      * </ul>
5046      *
5047      * <p>Required Permission:
5048      * <ul>
5049      *  <li>Signature|Privileged permission "android.car.permission.READ_CAR_INTERIOR_LIGHTS" to
5050      *  read property.
5051      *  <li>Property is not writable.
5052      * </ul>
5053      *
5054      * @data_enum {@link VehicleLightState}
5055      */
5056     @RequiresPermission(Car.PERMISSION_READ_INTERIOR_LIGHTS)
5057     public static final int CABIN_LIGHTS_STATE = 289410817;
5058     /**
5059      * Cabin lights switch.
5060      *
5061      * <p>Property Config:
5062      * <ul>
5063      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
5064      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
5065      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5066      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5067      *  <li>{@code Integer} property type
5068      * </ul>
5069      *
5070      * <p>Required Permission:
5071      * <ul>
5072      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_INTERIOR_LIGHTS" to
5073      *  read and write property.
5074      * </ul>
5075      *
5076      * @data_enum {@link VehicleLightSwitch}
5077      */
5078     @RequiresPermission(Car.PERMISSION_CONTROL_INTERIOR_LIGHTS)
5079     public static final int CABIN_LIGHTS_SWITCH = 289410818;
5080     /**
5081      * Reading lights.
5082      *
5083      * <p>Property Config:
5084      * <ul>
5085      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
5086      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
5087      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5088      *  <li>{@code Integer} property type
5089      * </ul>
5090      *
5091      * <p>Required Permission:
5092      * <ul>
5093      *  <li>Signature|Privileged permission "android.car.permission.READ_CAR_INTERIOR_LIGHTS" to
5094      *  read property.
5095      *  <li>Property is not writable.
5096      * </ul>
5097      *
5098      * @data_enum {@link VehicleLightState}
5099      */
5100     @RequiresPermission(Car.PERMISSION_READ_INTERIOR_LIGHTS)
5101     public static final int READING_LIGHTS_STATE = 356519683;
5102     /**
5103      * Reading lights switch.
5104      *
5105      * <p>Property Config:
5106      * <ul>
5107      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
5108      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
5109      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_SEAT}
5110      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5111      *  <li>{@code Integer} property type
5112      * </ul>
5113      *
5114      * <p>Required Permission:
5115      * <ul>
5116      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_INTERIOR_LIGHTS" to
5117      *  read and write property.
5118      * </ul>
5119      *
5120      * @data_enum {@link VehicleLightSwitch}
5121      */
5122     @RequiresPermission(Car.PERMISSION_CONTROL_INTERIOR_LIGHTS)
5123     public static final int READING_LIGHTS_SWITCH = 356519684;
5124 
5125     /**
5126      * Steering wheel lights state.
5127      *
5128      * <p>Returns the current state of the steering wheel lights. This is different from {@link
5129      * #STEERING_WHEEL_LIGHTS_SWITCH} which represents the position of the switch controlling
5130      * the lights. Therefore, {@code STEERING_WHEEL_LIGHTS_STATE} may not match the value of
5131      * {@link #STEERING_WHEEL_LIGHTS_SWITCH} (e.g. {@link #STEERING_WHEEL_LIGHTS_SWITCH}={@code
5132      * VehicleLightSwitch#STATE_AUTOMATIC} and {@code STEERING_WHEEL_LIGHTS_STATE}={@code
5133      * VehicleLightState#STATE_ON}).
5134      *
5135      * <p>This property will only be implemented if {@code STEERING_WHEEL_LIGHTS_STATE}'s value may
5136      * be different from that of {@link #CABIN_LIGHTS_STATE}.
5137      *
5138      * <p>For the global area ID (0), the {@link
5139      * android.car.hardware.property.AreaIdConfig#getSupportedEnumValues()} obtained from {@link
5140      * android.car.hardware.CarPropertyConfig#getAreaIdConfig(int)} specifies which enum values from
5141      * {@code VehicleLightState} are supported.
5142      *
5143      * <p>Property Config:
5144      * <ul>
5145      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
5146      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5147      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5148      *  <li>{@code Integer} property type
5149      * </ul>
5150      *
5151      * <p>Required Permission:
5152      * <ul>
5153      *  <li>Signature|Privileged permission "android.car.permission.READ_CAR_INTERIOR_LIGHTS" to
5154      *  read property.
5155      *  <li>Property is not writable.
5156      * </ul>
5157      *
5158      * @data_enum {@link VehicleLightState}
5159      */
5160     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_INTERIOR_LIGHTS))
5161     public static final int STEERING_WHEEL_LIGHTS_STATE = 289410828;
5162 
5163     /**
5164      * Steering wheel lights switch.
5165      *
5166      * <p>Returns the position of the switch controlling the steering wheel lights. This is
5167      * different from {@link #STEERING_WHEEL_LIGHTS_STATE} which represents the current state of the
5168      * steering wheel lights. Therefore, {@code STEERING_WHEEL_LIGHTS_SWITCH} may not match the
5169      * value of {@link #STEERING_WHEEL_LIGHTS_STATE} (e.g. {@code STEERING_WHEEL_LIGHTS_SWITCH}=
5170      * {@code VehicleLightSwitch#STATE_AUTOMATIC} and {@link #STEERING_WHEEL_LIGHTS_STATE}={@code
5171      * VehicleLightState#STATE_ON}).
5172      *
5173      * <p>This property will only be implemented if {@code STEERING_WHEEL_LIGHTS_SWITCH}'s value may
5174      * be different from that of {@link #CABIN_LIGHTS_SWITCH}.
5175      *
5176      * <p>For the global area ID (0), the {@link
5177      * android.car.hardware.property.AreaIdConfig#getSupportedEnumValues()} obtained from {@link
5178      * android.car.hardware.CarPropertyConfig#getAreaIdConfig(int)} specifies which enum values from
5179      * {@code VehicleLightSwitch} are supported.
5180      *
5181      * <p>Property Config:
5182      * <ul>
5183      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
5184      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
5185      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5186      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5187      *  <li>{@code Integer} property type
5188      * </ul>
5189      *
5190      * <p>Required Permission:
5191      * <ul>
5192      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_INTERIOR_LIGHTS" to
5193      *  read and write property.
5194      * </ul>
5195      *
5196      * @data_enum {@link VehicleLightSwitch}
5197      */
5198     @RequiresPermission(Car.PERMISSION_CONTROL_INTERIOR_LIGHTS)
5199     public static final int STEERING_WHEEL_LIGHTS_SWITCH = 289410829;
5200 
5201     /**
5202      * Property to get the initial settings for multi-user management (such as initial user).
5203      *
5204      * <p>Doesn't require permission because it's not exposed through
5205      * {@link android.car.hardware.property.CarPropertyManager}.
5206      *
5207      * <p>Property Config:
5208      * <ul>
5209      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE}
5210      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5211      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5212      *  <li>{@code Object[]} property type
5213      * </ul>
5214      *
5215      * @hide
5216      */
5217     public static final int INITIAL_USER_INFO = 299896583;
5218 
5219     /**
5220      * Property to switch user for multi-user management.
5221      *
5222      * <p>Doesn't require permission because it's not exposed through
5223      * {@link android.car.hardware.property.CarPropertyManager}.
5224      *
5225      * <p>Property Config:
5226      * <ul>
5227      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE}
5228      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5229      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5230      *  <li>{@code Object[]} property type
5231      * </ul>
5232      *
5233      * @hide
5234      */
5235     public static final int SWITCH_USER = 299896584;
5236 
5237     /**
5238      * Property to create a new user for multi-user management.
5239      *
5240      * <p>Doesn't require permission because it's not exposed through
5241      * {@link android.car.hardware.property.CarPropertyManager}.
5242      *
5243      * <p>Property Config:
5244      * <ul>
5245      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE}
5246      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5247      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5248      *  <li>{@code Object[]} property type
5249      * </ul>
5250      *
5251      * @hide
5252      */
5253     public static final int CREATE_USER = 299896585;
5254 
5255     /**
5256      * Property to remove a new user for multi-user management.
5257      *
5258      * <p>Doesn't require permission because it's not exposed through
5259      * {@link android.car.hardware.property.CarPropertyManager}.
5260      *
5261      * <p>Property Config:
5262      * <ul>
5263      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_WRITE}
5264      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5265      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
5266      *  <li>{@code Object[]} property type
5267      * </ul>
5268      *
5269      * @hide
5270      */
5271     public static final int REMOVE_USER = 299896586;
5272 
5273     /**
5274      * Property to get / set the user authentication types associated with an Android user.
5275      *
5276      * <p>Doesn't require permission because it's not exposed through
5277      * {@link android.car.hardware.property.CarPropertyManager}.
5278      *
5279      * <p>Property Config:
5280      * <ul>
5281      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE}
5282      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5283      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5284      *  <li>{@code Object[]} property type
5285      * </ul>
5286      *
5287      * @hide
5288      */
5289     public static final int USER_IDENTIFICATION_ASSOCIATION = 299896587;
5290 
5291     /**
5292      * Property for VHAL to apply power policy.
5293      *
5294      * <p>Doesn't require permission because it's not exposed through
5295      * {@link android.car.hardware.property.CarPropertyManager}.
5296      *
5297      * <p>Property Config:
5298      * <ul>
5299      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
5300      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5301      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5302      *  <li>{@code String} property type
5303      * </ul>
5304      *
5305      * @hide
5306      */
5307     public static final int POWER_POLICY_REQ = 286265121;
5308 
5309     /**
5310      * Property for VHAL to set the default power policies per power status transition.
5311      *
5312      * <p>Doesn't require permission because it's not exposed through
5313      * {@link android.car.hardware.property.CarPropertyManager}.
5314      *
5315      * <p>Property Config:
5316      * <ul>
5317      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
5318      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5319      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5320      *  <li>{@code String} property type
5321      * </ul>
5322      *
5323      * @hide
5324      */
5325     public static final int POWER_POLICY_GROUP_REQ = 286265122;
5326 
5327     /**
5328      * Property to report a new current power policy to VHAL.
5329      *
5330      * <p>Doesn't require permission because it's not exposed through
5331      * {@link android.car.hardware.property.CarPropertyManager}.
5332      *
5333      * <p>Property Config:
5334      * <ul>
5335      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE}
5336      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5337      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5338      *  <li>{@code String} property type
5339      * </ul>
5340      *
5341      * @hide
5342      */
5343     public static final int CURRENT_POWER_POLICY = 286265123;
5344 
5345     /**
5346      * Property to report that car watchdog is alive.
5347      *
5348      * <p>Doesn't require permission because it's not exposed through
5349      * {@link android.car.hardware.property.CarPropertyManager}.
5350      *
5351      * <p>Property Config:
5352      * <ul>
5353      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_WRITE}
5354      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5355      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5356      *  <li>{@code Long} property type
5357      * </ul>
5358      *
5359      * @hide
5360      */
5361     public static final int WATCHDOG_ALIVE = 290459441;
5362 
5363     /**
5364      * Property to report a process terminated by car watchdog.
5365      *
5366      * <p>Doesn't require permission because it's not exposed through
5367      * {@link android.car.hardware.property.CarPropertyManager}.
5368      *
5369      * <p>Property Config:
5370      * <ul>
5371      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_WRITE}
5372      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5373      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5374      *  <li>{@code Object[]} property type
5375      * </ul>
5376      *
5377      * @hide
5378      */
5379     public static final int WATCHDOG_TERMINATED_PROCESS = 299896626;
5380 
5381     /**
5382      * Property to signal a heartbeat from VHAL.
5383      *
5384      * <p>Doesn't require permission because it's not exposed through
5385      * {@link android.car.hardware.property.CarPropertyManager}.
5386      *
5387      * <p>Property Config:
5388      * <ul>
5389      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
5390      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5391      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5392      *  <li>{@code Long} property type
5393      * </ul>
5394      *
5395      * @hide
5396      */
5397     public static final int VHAL_HEARTBEAT = 290459443;
5398 
5399     /**
5400      * Property to start the ClusterUI in cluster display.
5401      *
5402      * <p>Doesn't require permission because it's not exposed through
5403      * {@link android.car.hardware.property.CarPropertyManager}.
5404      *
5405      * <p>Property Config:
5406      * <ul>
5407      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
5408      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5409      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5410      *  <li>{@code Integer} property type
5411      * </ul>
5412      *
5413      * @hide
5414      */
5415     public static final int CLUSTER_SWITCH_UI = 289410868;
5416 
5417     /**
5418      * Property to change the state of the cluster display.
5419      *
5420      * <p>Doesn't require permission because it's not exposed through
5421      * {@link android.car.hardware.property.CarPropertyManager}.
5422      *
5423      * <p>Property Config:
5424      * <ul>
5425      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
5426      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5427      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5428      *  <li>{@code Integer[]} property type
5429      * </ul>
5430      *
5431      * @hide
5432      */
5433     public static final int CLUSTER_DISPLAY_STATE = 289476405;
5434 
5435     /**
5436      * Property to reports the current display and ClusterUI statue.
5437      *
5438      * <p>Doesn't require permission because it's not exposed through
5439      * {@link android.car.hardware.property.CarPropertyManager}.
5440      *
5441      * <p>Property Config:
5442      * <ul>
5443      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_WRITE}
5444      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5445      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5446      *  <li>{@code Object[]} property type
5447      * </ul>
5448      *
5449      * @hide
5450      */
5451     public static final int CLUSTER_REPORT_STATE = 299896630;
5452 
5453     /**
5454      * Property to request to change the cluster display state to show some ClusterUI.
5455      *
5456      * <p>Doesn't require permission because it's not exposed through
5457      * {@link android.car.hardware.property.CarPropertyManager}.
5458      *
5459      * <p>Property Config:
5460      * <ul>
5461      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_WRITE}
5462      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5463      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5464      *  <li>{@code Integer} property type
5465      * </ul>
5466      *
5467      * @hide
5468      */
5469     public static final int CLUSTER_REQUEST_DISPLAY = 289410871;
5470 
5471     /**
5472      * Property to inform the current navigation state.
5473      *
5474      * <p>Doesn't require permission because it's not exposed through
5475      * {@link android.car.hardware.property.CarPropertyManager}.
5476      *
5477      * <p>Property Config:
5478      * <ul>
5479      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_WRITE}
5480      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5481      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5482      *  <li>{@code bytes[]} property type
5483      * </ul>
5484      *
5485      * @hide
5486      */
5487     public static final int CLUSTER_NAVIGATION_STATE = 292556600;
5488 
5489     /**
5490      * Property to send the heartbeat signal to ClusterOS.
5491      *
5492      * <p>Doesn't require permission because it's not exposed through
5493      * {@link android.car.hardware.property.CarPropertyManager}.
5494      *
5495      * <p>Property Config:
5496      * <ul>
5497      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_WRITE}
5498      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5499      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5500      *  <li>{@code Object[]} property type
5501      * </ul>
5502      *
5503      * @hide
5504      */
5505     public static final int CLUSTER_HEARTBEAT = 299896651;
5506 
5507     /**
5508      * Current date and time, encoded as Unix time.
5509      *
5510      * <p>This value denotes the number of milliseconds that have elapsed since 1/1/1970 UTC.
5511      *
5512      * <p>Property Config:
5513      * <ul>
5514      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_WRITE}
5515      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5516      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5517      *  <li>{@code Long} property type
5518      * </ul>
5519      *
5520      * <p>Required Permission:
5521      * <ul>
5522      *  <li>Property is not readable.
5523      *  <li>Signature|Privileged permission "android.car.permission.CAR_EPOCH_TIME" to write
5524      *  property.
5525      * </ul>
5526      */
5527     @RequiresPermission(Car.PERMISSION_CAR_EPOCH_TIME)
5528     public static final int EPOCH_TIME = 290457094;
5529 
5530     /**
5531      * Electronic Toll Collection card type.
5532      *
5533      * <p>This property indicates the type of ETC(Electronic Toll Collection) card in the vehicle.
5534      * If the head unit is aware of an ETC card attached to the vehicle, this property should return
5535      * the type of card attached; otherwise, this property should be UNAVAILABLE. The property value
5536      * should be one of {@link VehicleElectronicTollCollectionCardType}.
5537      *
5538      * <p>Property Config:
5539      * <ul>
5540      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
5541      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5542      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5543      *  <li>{@code Integer} property type
5544      * </ul>
5545      *
5546      * <p>Required Permission:
5547      * <ul>
5548      *  <li>Normal permission {@link Car#PERMISSION_CAR_INFO} to read property.
5549      *  <li>Property is not writable.
5550      * </ul>
5551      *
5552      * @data_enum {@link VehicleElectronicTollCollectionCardType}
5553      */
5554     @RequiresPermission(Car.PERMISSION_CAR_INFO)
5555     public static final int ELECTRONIC_TOLL_COLLECTION_CARD_TYPE = 289410873;
5556 
5557     /**
5558      * Electronic Toll Collection card status.
5559      *
5560      * <p>This property indicates the status of ETC(Electronic Toll Collection) card in the vehicle.
5561      * If the head unit is aware of an ETC card attached to the vehicle, ETC_CARD_STATUS gives that
5562      * status of the card; otherwise, this property should be UNAVAILABLE. The property value should
5563      * be one of {@link VehicleElectronicTollCollectionCardStatus}.
5564      *
5565      * <p>Property Config:
5566      * <ul>
5567      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
5568      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5569      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5570      *  <li>{@code Integer} property type
5571      * </ul>
5572      *
5573      * <p>Required Permission:
5574      * <ul>
5575      *  <li>Normal permission {@link Car#PERMISSION_CAR_INFO} to read property.
5576      *  <li>Property is not writable.
5577      * </ul>
5578      *
5579      * @data_enum {@link VehicleElectronicTollCollectionCardStatus}
5580      */
5581     @RequiresPermission(Car.PERMISSION_CAR_INFO)
5582     public static final int ELECTRONIC_TOLL_COLLECTION_CARD_STATUS = 289410874;
5583 
5584     /**
5585      * Front fog lights state.
5586      *
5587      * <p>Please refer to the documentation on {@link #FOG_LIGHTS_STATE} for more information.
5588      *
5589      * <p>Property Config:
5590      * <ul>
5591      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
5592      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5593      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5594      *  <li>{@code Integer} property type
5595      * </ul>
5596      *
5597      * <p>Required Permission:
5598      * <ul>
5599      *  <li>Signature|Privileged permission "android.car.permission.CAR_EXTERIOR_LIGHTS" to read
5600      *  property.
5601      *  <li>Property is not writable.
5602      * </ul>
5603      *
5604      * @data_enum {@link VehicleLightState}
5605      */
5606     @RequiresPermission(Car.PERMISSION_EXTERIOR_LIGHTS)
5607     public static final int FRONT_FOG_LIGHTS_STATE = 289410875;
5608 
5609     /**
5610      * Front fog lights switch.
5611      *
5612      * <p>Please refer to the documentation on {@link #FOG_LIGHTS_SWITCH} for more information.
5613      *
5614      * <p>Property Config:
5615      * <ul>
5616      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
5617      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
5618      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5619      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5620      *  <li>{@code Integer} property type
5621      * </ul>
5622      *
5623      * <p>Required Permission:
5624      * <ul>
5625      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_EXTERIOR_LIGHTS" to
5626      *  read and write property.
5627      * </ul>
5628      *
5629      * @data_enum {@link VehicleLightSwitch}
5630      */
5631     @RequiresPermission(Car.PERMISSION_CONTROL_EXTERIOR_LIGHTS)
5632     public static final int FRONT_FOG_LIGHTS_SWITCH = 289410876;
5633 
5634     /**
5635      * Rear fog lights state.
5636      *
5637      * <p>Please refer to the documentation on {@link #FOG_LIGHTS_STATE} for more information.
5638      *
5639      * <p>Property Config:
5640      * <ul>
5641      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
5642      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5643      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5644      *  <li>{@code Integer} property type
5645      * </ul>
5646      *
5647      * <p>Required Permission:
5648      * <ul>
5649      *  <li>Signature|Privileged permission "android.car.permission.CAR_EXTERIOR_LIGHTS" to read
5650      *  property.
5651      *  <li>Property is not writable.
5652      * </ul>
5653      *
5654      * @data_enum {@link VehicleLightState}
5655      */
5656     @RequiresPermission(Car.PERMISSION_EXTERIOR_LIGHTS)
5657     public static final int REAR_FOG_LIGHTS_STATE = 289410877;
5658 
5659     /**
5660      * Rear fog lights switch.
5661      *
5662      * <p>Please refer to the documentation on {@link #FOG_LIGHTS_SWITCH} for more information.
5663      *
5664      * <p>Property Config:
5665      * <ul>
5666      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
5667      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
5668      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5669      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5670      *  <li>{@code Integer} property type
5671      * </ul>
5672      *
5673      * <p>Required Permission:
5674      * <ul>
5675      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_EXTERIOR_LIGHTS" to
5676      *  read and write property.
5677      * </ul>
5678      *
5679      * @data_enum {@link VehicleLightSwitch}
5680      */
5681     @RequiresPermission(Car.PERMISSION_CONTROL_EXTERIOR_LIGHTS)
5682     public static final int REAR_FOG_LIGHTS_SWITCH = 289410878;
5683 
5684     /**
5685      * EV charge current draw limit.
5686      *
5687      * <p>Indicates the maximum current draw threshold for charging set by the user. {@code
5688      * configArray[0]} contains the max current draw allowed by the vehicle in Amperes.
5689      *
5690      * <p>Property Config:
5691      * <ul>
5692      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
5693      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
5694      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5695      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5696      *  <li>{@code Float} property type
5697      * </ul>
5698      *
5699      * <p>Required Permissions:
5700      * <ul>
5701      *  <li>Dangerous permission {@link Car#PERMISSION_ENERGY} or Signature|Privileged permission
5702      *  "android.car.permission.CONTROL_CAR_ENERGY" to read property.
5703      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_ENERGY" to write
5704      *  property.
5705      * </ul>
5706      */
5707     @RequiresPermission.Read(@RequiresPermission(anyOf = {Car.PERMISSION_ENERGY,
5708             Car.PERMISSION_CONTROL_CAR_ENERGY}))
5709     @RequiresPermission.Write(@RequiresPermission(Car.PERMISSION_CONTROL_CAR_ENERGY))
5710     public static final int EV_CHARGE_CURRENT_DRAW_LIMIT = 291508031;
5711 
5712     /**
5713      * EV charge percent limit.
5714      *
5715      * <p>Indicates the maximum charge percent threshold set by the user. Returns a float value
5716      * from 0 to 100.
5717      *
5718      * <p>configArray is optional. If it is populated, it represents the valid charge percent limit
5719      * values for the vehicle. Here is an example configArray:
5720      * <ul>
5721      *  <li>configArray[0] = 20
5722      *  <li>configArray[1] = 40
5723      *  <li>configArray[2] = 60
5724      *  <li>configArray[3] = 80
5725      * </ul>
5726      *
5727      * <p>Property Config:
5728      * <ul>
5729      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
5730      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
5731      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5732      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5733      *  <li>{@code Float} property type
5734      * </ul>
5735      *
5736      * <p>Required Permissions:
5737      * <ul>
5738      *  <li>Dangerous permission {@link Car#PERMISSION_ENERGY} or Signature|Privileged permission
5739      *  "android.car.permission.CONTROL_CAR_ENERGY" to read property.
5740      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_ENERGY" to write
5741      *  property.
5742      * </ul>
5743      */
5744     @RequiresPermission.Read(@RequiresPermission(anyOf = {Car.PERMISSION_ENERGY,
5745             Car.PERMISSION_CONTROL_CAR_ENERGY}))
5746     @RequiresPermission.Write(@RequiresPermission(Car.PERMISSION_CONTROL_CAR_ENERGY))
5747     public static final int EV_CHARGE_PERCENT_LIMIT = 291508032;
5748 
5749     /**
5750      * Charging state of the car.
5751      *
5752      * <p>Returns the current charging state of the car. See {@link
5753      * android.car.hardware.property.EvChargeState} for possible values for {@code EV_CHARGE_STATE}.
5754      *
5755      * <p>If the vehicle has a target charge percentage other than 100, this property will return
5756      * {@link EvChargeState#STATE_FULLY_CHARGED} when the battery charge level has reached the
5757      * target level. See {@link #EV_CHARGE_PERCENT_LIMIT} for more context.
5758      *
5759      * <p>Property Config:
5760      * <ul>
5761      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
5762      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5763      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5764      *  <li>{@code Integer} property type
5765      * </ul>
5766      *
5767      * <p>Required Permission:
5768      * <ul>
5769      *  <li>Dangerous permission {@link Car#PERMISSION_ENERGY} to read property.
5770      *  <li>Property is not writable.
5771      * </ul>
5772      *
5773      * @data_enum {@link EvChargeState}
5774      */
5775     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_ENERGY))
5776     public static final int EV_CHARGE_STATE = 289410881;
5777 
5778     /**
5779      * Start or stop charging the EV battery.
5780      *
5781      * <p>The setting that the user wants. Setting this property to true starts the battery charging
5782      * and setting to false stops charging.
5783      *
5784      * <p>Property Config:
5785      * <ul>
5786      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
5787      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
5788      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5789      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5790      *  <li>{@code Boolean} property type
5791      * </ul>
5792      *
5793      * <p>Required Permission:
5794      * <ul>
5795      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_ENERGY" or
5796      *  dangerous permission {@link Car#PERMISSION_ENERGY} to read.
5797      *  <li>Signature|Privileged permission "android.car.permission.CONTROL_CAR_ENERGY" to write
5798      *  property.
5799      * </ul>
5800      */
5801     @RequiresPermission.Read(@RequiresPermission(anyOf = {Car.PERMISSION_ENERGY,
5802             Car.PERMISSION_CONTROL_CAR_ENERGY}))
5803     @RequiresPermission.Write(@RequiresPermission(Car.PERMISSION_CONTROL_CAR_ENERGY))
5804     public static final int EV_CHARGE_SWITCH = 287313730;
5805 
5806     /**
5807      * Estimated charge time remaining in seconds.
5808      *
5809      * <p>Returns 0 if the vehicle is not charging.
5810      *
5811      * <p>Property Config:
5812      * <ul>
5813      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
5814      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5815      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_CONTINUOUS}
5816      *  <li>{@code Integer} property type
5817      * </ul>
5818      *
5819      * <p>Required Permission:
5820      * <ul>
5821      *  <li>Dangerous permission {@link Car#PERMISSION_ENERGY} to read property.
5822      *  <li>Property is not writable.
5823      * </ul>
5824      */
5825     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_ENERGY))
5826     public static final int EV_CHARGE_TIME_REMAINING = 289410883;
5827 
5828     /**
5829      * Regenerative braking or one-pedal drive setting on the car.
5830      *
5831      * <p>Returns the current state associated with the regenerative braking
5832      * setting in the car. See {@link android.car.hardware.property.EvRegenerativeBrakingState} for
5833      * possible values for {@code EV_REGENERATIVE_BRAKING_STATE}.
5834      *
5835      * <p>If the {@link #EV_BRAKE_REGENERATION_LEVEL} property has been implemented, it is likely
5836      * that the OEM supports a more granular set of regeneration levels than those provided by this
5837      * property through {@link EvRegenerativeBrakingState}.
5838      *
5839      * <p>Property Config:
5840      * <ul>
5841      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
5842      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5843      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5844      *  <li>{@code Integer} property type
5845      * </ul>
5846      *
5847      * <p>Required Permission:
5848      * <ul>
5849      *  <li>Dangerous permission {@link Car#PERMISSION_ENERGY} to read property.
5850      *  <li>Property is not writable.
5851      * </ul>
5852      *
5853      * @data_enum {@link EvRegenerativeBrakingState}
5854      */
5855     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_ENERGY))
5856     public static final int EV_REGENERATIVE_BRAKING_STATE = 289410884;
5857 
5858     /**
5859      * Vehicle’s curb weight in kilograms.
5860      *
5861      * <p>Returns the vehicle's curb weight in kilograms. This is the total weight of a vehicle,
5862      * inclusive of standard equipment and necessary operating fluids such as motor oil,
5863      * transmission oil and brake fluid, but without passengers or cargo. configArray[0] specifies
5864      * the vehicle’s gross weight in kilograms. This is the vehicle curb weight plus the maximum
5865      * payload (passengers + cargo) the vehicle can support.
5866      *
5867      * <p>Property Config:
5868      * <ul>
5869      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
5870      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5871      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
5872      *  <li>{@code Integer} property type
5873      * </ul>
5874      *
5875      * <p>Required Permission:
5876      * <ul>
5877      *  <li>Signature|Privileged permission "android.car.permission.PRIVILEGED_CAR_INFO" to read
5878      *  property.
5879      *  <li>Property is not writable.
5880      * </ul>
5881      */
5882     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_PRIVILEGED_CAR_INFO))
5883     public static final int VEHICLE_CURB_WEIGHT = 289410886;
5884 
5885      /**
5886      * Indicates if there is a trailer present or not.
5887      *
5888      * <p>Returns the trailer state of the car. See {@code TrailerState} for possible values for
5889      * {@code TRAILER_PRESENT}.
5890      *
5891      * <p>Property Config:
5892      * <ul>
5893      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
5894      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5895      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5896      *  <li>{@code Integer} property type
5897      * </ul>
5898      *
5899      * <p>Required Permission:
5900      * <ul>
5901      *  <li>Signature|Privileged permission "android.car.permission.PRIVILEGED_CAR_INFO" to read
5902      *  property.
5903      *  <li>Property is not writable.
5904      * </ul>
5905      *
5906      * @data_enum {@link TrailerState}
5907      */
5908     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_PRIVILEGED_CAR_INFO))
5909     public static final int TRAILER_PRESENT = 289410885;
5910 
5911     /**
5912      * EU's General security regulation compliance requirement.
5913      *
5914      * <p>Returns whether general security regulation compliance is required, if
5915      * so, what type of requirement. See {@link GsrComplianceType} for possible enums.
5916      *
5917      * <p>Property Config:
5918      * <ul>
5919      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
5920      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5921      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
5922      *  <li>{@code Integer} property type
5923      * </ul>
5924      *
5925      * <p>Required Permission:
5926      * <ul>
5927      *  <li>Normal permission {@link Car#PERMISSION_CAR_INFO} to read property.
5928      *  <li>Property is not writable.
5929      * </ul>
5930      *
5931      * @data_enum {@link GsrComplianceType}
5932      */
5933     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_CAR_INFO))
5934     public static final int GENERAL_SAFETY_REGULATION_COMPLIANCE = 289410887;
5935 
5936     /**
5937      * Current state of vehicle autonomy.
5938      *
5939      * <p>Defines the level of autonomy currently engaged in the vehicle from the SAE standard
5940      * levels 0-5, with 0 representing no autonomy and 5 representing full driving automation. These
5941      * levels are defined in accordance with the standards set in the
5942      * <a href="https://www.sae.org/standards/content/j3016_202104/">J3016_202104 revision</a> of
5943      * the SAE automation level taxonomy and its clarification for international audiences
5944      * <a href="https://www.sae.org/blog/sae-j3016-update">here</a>.
5945      *
5946      * <p>For the global area ID (0), the {@link
5947      * android.car.hardware.property.AreaIdConfig#getSupportedEnumValues()} array obtained from
5948      * {@link android.car.hardware.CarPropertyConfig#getAreaIdConfig(int)} specifies which states
5949      * from {@link android.car.hardware.property.VehicleAutonomousState} are supported.
5950      *
5951      * <p>Property Config:
5952      * <ul>
5953      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
5954      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5955      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5956      *  <li>{@code Integer} property type
5957      * </ul>
5958      *
5959      * <p>Required Permission:
5960      * <ul>
5961      *  <li>Signature|Privileged permission "android.car.permission.CAR_DRIVING_STATE" to
5962      *  read property.
5963      *  <li>Property is not writable.
5964      * </ul>
5965      *
5966      * @data_enum {@link android.car.hardware.property.VehicleAutonomousState}
5967      *
5968      * @hide
5969      */
5970     @FlaggedApi(FLAG_ANDROID_VIC_VEHICLE_PROPERTIES)
5971     @SystemApi
5972     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_CAR_DRIVING_STATE))
5973     public static final int VEHICLE_DRIVING_AUTOMATION_CURRENT_LEVEL = 289410892;
5974 
5975     /**
5976      * Enable or disable Automatic Emergency Braking (AEB).
5977      *
5978      * <p>Returns true if AEB is enabled and false if AEB is disabled. When AEB is enabled, the ADAS
5979      * system in the vehicle should be turned on and monitoring to avoid potential collisions. This
5980      * property applies for higher speed applications only. For enabling low speed automatic
5981      * emergency braking, {@link LOW_SPEED_AUTOMATIC_EMERGENCY_BRAKING_ENABLED} will be used.
5982      *
5983      * <p>This property is defined as read_write, but OEMs have the option to implement it as read
5984      * only.
5985      *
5986      * <p>Property Config:
5987      * <ul>
5988      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
5989      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
5990      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
5991      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
5992      *  <li>{@code Boolean} property type
5993      * </ul>
5994      *
5995      * <p>Required Permissions:
5996      * <ul>
5997      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_ADAS_SETTINGS} or
5998      *  Signature|Privileged permission {@link Car#PERMISSION_CONTROL_ADAS_SETTINGS} to read
5999      *  property.
6000      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_ADAS_SETTINGS} to write
6001      *  property.
6002      * </ul>
6003      *
6004      * @hide
6005      */
6006     @SystemApi
6007     @RequiresPermission.Read(@RequiresPermission(anyOf = {Car.PERMISSION_READ_ADAS_SETTINGS,
6008             Car.PERMISSION_CONTROL_ADAS_SETTINGS}))
6009     @RequiresPermission.Write(@RequiresPermission(Car.PERMISSION_CONTROL_ADAS_SETTINGS))
6010     public static final int AUTOMATIC_EMERGENCY_BRAKING_ENABLED = 287313920;
6011 
6012     /**
6013      * Automatic Emergency Braking (AEB) state.
6014      *
6015      * <p>Returns the current state of AEB. This property will always return a valid state defined
6016      * in {@link android.car.hardware.property.AutomaticEmergencyBrakingState} or {@link
6017      * android.car.hardware.property.ErrorState}. This property should apply for higher speed
6018      * applications only. For representing the state of the low speed automatic emergency braking
6019      * system, {@link LOW_SPEED_AUTOMATIC_EMERGENCY_BRAKING_STATE} should be used.
6020      *
6021      * <p>If AEB includes forward collision warnings before activating the brakes, those warnings
6022      * will be surfaced through the Forward Collision Warning (FCW) properties.
6023      *
6024      * <p>For the global area ID (0), the {@link
6025      * android.car.hardware.property.AreaIdConfig#getSupportedEnumValues()} array obtained from
6026      * {@link android.car.hardware.CarPropertyConfig#getAreaIdConfig(int)} specifies which states
6027      * from {@link android.car.hardware.property.AutomaticEmergencyBrakingState} and {@link
6028      * android.car.hardware.property.ErrorState} are supported.
6029      *
6030      * <p>Property Config:
6031      * <ul>
6032      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
6033      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
6034      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
6035      *  <li>{@code Integer} property type
6036      * </ul>
6037      *
6038      * <p>Required Permission:
6039      * <ul>
6040      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_ADAS_STATES} to read
6041      *  property.
6042      *  <li>Property is not writable.
6043      * </ul>
6044      *
6045      * @data_enum {@link AutomaticEmergencyBrakingState}
6046      * @data_enum {@link ErrorState}
6047      *
6048      * @hide
6049      */
6050     @SystemApi
6051     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_ADAS_STATES))
6052     public static final int AUTOMATIC_EMERGENCY_BRAKING_STATE = 289411073;
6053 
6054     /**
6055      * Enable or disable Forward Collision Warning (FCW).
6056      *
6057      * <p>Returns true if FCW is enabled and false if FCW is disabled. When FCW is enabled, the ADAS
6058      * system in the vehicle should be turned on and monitoring for potential collisions.
6059      *
6060      * <p>This property is defined as read_write, but OEMs have the option to implement it as read
6061      * only.
6062      *
6063      * <p>Property Config:
6064      * <ul>
6065      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
6066      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
6067      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
6068      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
6069      *  <li>{@code Boolean} property type
6070      * </ul>
6071      *
6072      * <p>Required Permissions:
6073      * <ul>
6074      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_ADAS_SETTINGS} or
6075      *  Signature|Privileged permission {@link Car#PERMISSION_CONTROL_ADAS_SETTINGS} to read
6076      *  property.
6077      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_ADAS_SETTINGS} to write
6078      *  property.
6079      * </ul>
6080      *
6081      * @hide
6082      */
6083     @SystemApi
6084     @RequiresPermission.Read(@RequiresPermission(anyOf = {Car.PERMISSION_READ_ADAS_SETTINGS,
6085             Car.PERMISSION_CONTROL_ADAS_SETTINGS}))
6086     @RequiresPermission.Write(@RequiresPermission(Car.PERMISSION_CONTROL_ADAS_SETTINGS))
6087     public static final int FORWARD_COLLISION_WARNING_ENABLED = 287313922;
6088 
6089     /**
6090      * Forward Collision Warning State (FCW) state.
6091      *
6092      * <p>Returns the current state of FCW. This property will always return a valid state defined
6093      * in {@link android.car.hardware.property.ForwardCollisionWarningState} or {@link
6094      * android.car.hardware.property.ErrorState}.
6095      *
6096      * <p>For the global area ID (0), the {@link
6097      * android.car.hardware.property.AreaIdConfig#getSupportedEnumValues()} array obtained from
6098      * {@link android.car.hardware.CarPropertyConfig#getAreaIdConfig(int)} specifies which states
6099      * from {@link android.car.hardware.property.ForwardCollisionWarningState} and {@link
6100      * android.car.hardware.property.ErrorState} are supported.
6101      *
6102      * <p>Property Config:
6103      * <ul>
6104      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
6105      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
6106      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
6107      *  <li>{@code Integer} property type
6108      * </ul>
6109      *
6110      * <p>Required Permission:
6111      * <ul>
6112      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_ADAS_STATES} to read
6113      *  property.
6114      *  <li>Property is not writable.
6115      * </ul>
6116      *
6117      * @data_enum {@link ForwardCollisionWarningState}
6118      * @data_enum {@link ErrorState}
6119      *
6120      * @hide
6121      */
6122     @SystemApi
6123     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_ADAS_STATES))
6124     public static final int FORWARD_COLLISION_WARNING_STATE = 289411075;
6125 
6126     /**
6127      * Enable and disable Blind Spot Warning (BSW).
6128      *
6129      * <p>Returns true if BSW is enabled and false if BSW is disabled. When BSW is enabled, the ADAS
6130      * system in the vehicle should be turned on and monitoring for objects in the vehicle’s blind
6131      * spots.
6132      *
6133      * <p>This property is defined as read_write, but OEMs have the option to implement it as read
6134      * only.
6135      *
6136      * <p>Property Config:
6137      * <ul>
6138      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
6139      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
6140      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
6141      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
6142      *  <li>{@code Boolean} property type
6143      * </ul>
6144      *
6145      * <p>Required Permissions:
6146      * <ul>
6147      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_ADAS_SETTINGS} or
6148      *  Signature|Privileged permission {@link Car#PERMISSION_CONTROL_ADAS_SETTINGS} to read
6149      *  property.
6150      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_ADAS_SETTINGS} to write
6151      *  property.
6152      * </ul>
6153      *
6154      * @hide
6155      */
6156     @SystemApi
6157     @RequiresPermission.Read(@RequiresPermission(anyOf = {Car.PERMISSION_READ_ADAS_SETTINGS,
6158             Car.PERMISSION_CONTROL_ADAS_SETTINGS}))
6159     @RequiresPermission.Write(@RequiresPermission(Car.PERMISSION_CONTROL_ADAS_SETTINGS))
6160     public static final int BLIND_SPOT_WARNING_ENABLED = 287313924;
6161 
6162     /**
6163      * Blind Spot Warning (BSW) state.
6164      *
6165      * <p>Returns the current state of BSW. This property will always return a valid state defined
6166      * in {@link android.car.hardware.property.BlindSpotWarningState} or {@link
6167      * android.car.hardware.property.ErrorState}.
6168      *
6169      * <p>For the global area ID (0), the {@link
6170      * android.car.hardware.property.AreaIdConfig#getSupportedEnumValues()} array obtained from
6171      * {@link android.car.hardware.CarPropertyConfig#getAreaIdConfig(int)} specifies which states
6172      * from {@link android.car.hardware.property.BlindSpotWarningState} and {@link
6173      * android.car.hardware.property.ErrorState} are supported.
6174      *
6175      * <p>Property Config:
6176      * <ul>
6177      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
6178      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_MIRROR}
6179      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
6180      *  <li>{@code Integer} property type
6181      * </ul>
6182      *
6183      * <p>Required Permission:
6184      * <ul>
6185      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_ADAS_STATES} to read
6186      *  property.
6187      *  <li>Property is not writable.
6188      * </ul>
6189      *
6190      * @data_enum {@link BlindSpotWarningState}
6191      * @data_enum {@link ErrorState}
6192      *
6193      * @hide
6194      */
6195     @SystemApi
6196     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_ADAS_STATES))
6197     public static final int BLIND_SPOT_WARNING_STATE = 339742725;
6198 
6199     /**
6200      * Enable or disable Lane Departure Warning (LDW).
6201      *
6202      * <p>Returns true if LDW is enabled and false if LDW is disabled. When LDW is enabled, the ADAS
6203      * system in the vehicle should be turned on and monitoring if the vehicle is approaching or
6204      * crossing lane lines, in which case a warning will be given.
6205      *
6206      * <p>This property is defined as read_write, but OEMs have the option to implement it as read
6207      * only.
6208      *
6209      * <p>Property Config:
6210      * <ul>
6211      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
6212      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
6213      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
6214      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
6215      *  <li>{@code Boolean} property type
6216      * </ul>
6217      *
6218      * <p>Required Permissions:
6219      * <ul>
6220      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_ADAS_SETTINGS} or
6221      *  Signature|Privileged permission {@link Car#PERMISSION_CONTROL_ADAS_SETTINGS} to read
6222      *  property.
6223      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_ADAS_SETTINGS} to write
6224      *  property.
6225      * </ul>
6226      *
6227      * @hide
6228      */
6229     @SystemApi
6230     @RequiresPermission.Read(@RequiresPermission(anyOf = {Car.PERMISSION_READ_ADAS_SETTINGS,
6231             Car.PERMISSION_CONTROL_ADAS_SETTINGS}))
6232     @RequiresPermission.Write(@RequiresPermission(Car.PERMISSION_CONTROL_ADAS_SETTINGS))
6233     public static final int LANE_DEPARTURE_WARNING_ENABLED = 287313926;
6234 
6235     /**
6236      * Lane Departure Warning (LDW) state.
6237      *
6238      * <p>Returns the current state of LDW. This property will always return a valid state defined
6239      * in {@link android.car.hardware.property.LaneDepartureWarningState} or {@link
6240      * android.car.hardware.property.ErrorState}.
6241      *
6242      * <p>For the global area ID (0), the {@link
6243      * android.car.hardware.property.AreaIdConfig#getSupportedEnumValues()} array obtained from
6244      * {@link android.car.hardware.CarPropertyConfig#getAreaIdConfig(int)} specifies which states
6245      * from {@link android.car.hardware.property.LaneDepartureWarningState} and {@link
6246      * android.car.hardware.property.ErrorState} are supported.
6247      *
6248      * <p>Property Config:
6249      * <ul>
6250      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
6251      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
6252      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
6253      *  <li>{@code Integer} property type
6254      * </ul>
6255      *
6256      * <p>Required Permission:
6257      * <ul>
6258      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_ADAS_STATES} to read
6259      *  property.
6260      *  <li>Property is not writable.
6261      * </ul>
6262      *
6263      * @data_enum {@link LaneDepartureWarningState}
6264      * @data_enum {@link ErrorState}
6265      *
6266      * @hide
6267      */
6268     @SystemApi
6269     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_ADAS_STATES))
6270     public static final int LANE_DEPARTURE_WARNING_STATE = 289411079;
6271 
6272     /**
6273      * Enable or disable Lane Keep Assist (LKA).
6274      *
6275      * <p>Returns true if LKA is enabled and false if LKA is disabled. When LKA is enabled, the ADAS
6276      * system in the vehicle should be turned on and monitoring if the driver unintentionally drifts
6277      * toward or over the lane marking. If an unintentional lane departure is detected, the system
6278      * applies steering control to return the vehicle into the current lane.
6279      *
6280      * <p>This is different from Lane Centering Assist (LCA) which, when activated, applies
6281      * continuous steering control to keep the vehicle centered in the current lane.
6282      *
6283      * <p>This property is defined as read_write, but OEMs have the option to implement it as read
6284      * only.
6285      *
6286      * <p>Property Config:
6287      * <ul>
6288      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
6289      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
6290      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
6291      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
6292      *  <li>{@code Boolean} property type
6293      * </ul>
6294      *
6295      * <p>Required Permissions:
6296      * <ul>
6297      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_ADAS_SETTINGS} or
6298      *  Signature|Privileged permission {@link Car#PERMISSION_CONTROL_ADAS_SETTINGS} to read
6299      *  property.
6300      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_ADAS_SETTINGS} to write
6301      *  property.
6302      * </ul>
6303      *
6304      * @hide
6305      */
6306     @SystemApi
6307     @RequiresPermission.Read(@RequiresPermission(anyOf = {Car.PERMISSION_READ_ADAS_SETTINGS,
6308             Car.PERMISSION_CONTROL_ADAS_SETTINGS}))
6309     @RequiresPermission.Write(@RequiresPermission(Car.PERMISSION_CONTROL_ADAS_SETTINGS))
6310     public static final int LANE_KEEP_ASSIST_ENABLED = 287313928;
6311 
6312     /**
6313      * Lane Keep Assist (LKA) state.
6314      *
6315      * <p>Returns the current state of LKA. This property will always return a valid state defined
6316      * in {@link android.car.hardware.property.LaneKeepAssistState} or {@link
6317      * android.car.hardware.property.ErrorState}.
6318      *
6319      * <p>If LKA includes lane departure warnings before applying steering corrections, those
6320      * warnings will be surfaced through {@link #LANE_DEPARTURE_WARNING_STATE}.
6321      *
6322      * <p>For the global area ID (0), the {@link
6323      * android.car.hardware.property.AreaIdConfig#getSupportedEnumValues()} array obtained from
6324      * {@link android.car.hardware.CarPropertyConfig#getAreaIdConfig(int)} specifies which states
6325      * from {@link android.car.hardware.property.LaneKeepAssistState} and {@link
6326      * android.car.hardware.property.ErrorState} are supported.
6327      *
6328      * <p>Property Config:
6329      * <ul>
6330      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
6331      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
6332      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
6333      *  <li>{@code Integer} property type
6334      * </ul>
6335      *
6336      * <p>Required Permission:
6337      * <ul>
6338      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_ADAS_STATES} to read
6339      *  property.
6340      *  <li>Property is not writable.
6341      * </ul>
6342      *
6343      * @data_enum {@link LaneKeepAssistState}
6344      * @data_enum {@link ErrorState}
6345      *
6346      * @hide
6347      */
6348     @SystemApi
6349     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_ADAS_STATES))
6350     public static final int LANE_KEEP_ASSIST_STATE = 289411081;
6351 
6352     /**
6353      * Enable or disable Lane Centering Assist (LCA).
6354      *
6355      * <p>Returns true if LCA is enabled and false if LCA is disabled. When LCA is enabled, the ADAS
6356      * system in the vehicle should be turned on and waiting for an activation signal from the
6357      * driver. Once the feature is activated, the ADAS system should be steering the vehicle to keep
6358      * it centered in its current lane.
6359      *
6360      * <p>This is different from Lane Keep Assist (LKA) which monitors if the driver unintentionally
6361      * drifts toward or over the lane marking. If an unintentional lane departure is detected, the
6362      * system applies steering control to return the vehicle into the current lane.
6363      *
6364      * <p>This property is defined as read_write, but OEMs have the option to implement it as read
6365      * only.
6366      *
6367      * <p>Property Config:
6368      * <ul>
6369      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
6370      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
6371      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
6372      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
6373      *  <li>{@code Boolean} property type
6374      * </ul>
6375      *
6376      * <p>Required Permissions:
6377      * <ul>
6378      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_ADAS_SETTINGS} or
6379      *  Signature|Privileged permission {@link Car#PERMISSION_CONTROL_ADAS_SETTINGS} to read
6380      *  property.
6381      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_ADAS_SETTINGS} to write
6382      *  property.
6383      * </ul>
6384      *
6385      * @hide
6386      */
6387     @SystemApi
6388     @RequiresPermission.Read(@RequiresPermission(anyOf = {Car.PERMISSION_READ_ADAS_SETTINGS,
6389             Car.PERMISSION_CONTROL_ADAS_SETTINGS}))
6390     @RequiresPermission.Write(@RequiresPermission(Car.PERMISSION_CONTROL_ADAS_SETTINGS))
6391     public static final int LANE_CENTERING_ASSIST_ENABLED = 287313930;
6392 
6393     /**
6394      * Lane Centering Assist (LCA) commands.
6395      *
6396      * <p>Commands to activate and suspend LCA. They are only valid when {@link
6397      * #LANE_CENTERING_ASSIST_ENABLED} = {@code true}. Otherwise, these commands will throw a {@link
6398      * android.car.hardware.property.PropertyNotAvailableException}.
6399      *
6400      * <p>When the command {@link android.car.hardware.property.LaneCenteringAssistCommand#ACTIVATE}
6401      * is sent, {@link #LANE_CENTERING_ASSIST_STATE} will be set to {@link
6402      * android.car.hardware.property.LaneCenteringAssistState#ACTIVATION_REQUESTED}. When the
6403      * command {@link android.car.hardware.property.LaneCenteringAssistCommand#ACTIVATE} succeeds,
6404      * {@link #LANE_CENTERING_ASSIST_STATE} will be set to {@link
6405      * android.car.hardware.property.LaneCenteringAssistState#ACTIVATED}. When the command {@link
6406      * android.car.hardware.property.LaneCenteringAssistCommand#DEACTIVATE} succeeds, {@link
6407      * #LANE_CENTERING_ASSIST_STATE} will be set to {@link
6408      * android.car.hardware.property.LaneCenteringAssistState#ENABLED}.
6409      *
6410      * <p>For the global area ID (0), the {@link
6411      * android.car.hardware.property.AreaIdConfig#getSupportedEnumValues()} array obtained from
6412      * {@link android.car.hardware.CarPropertyConfig#getAreaIdConfig(int)} specifies which enum
6413      * values from {@link android.car.hardware.property.LaneCenteringAssistCommand} are supported.
6414      *
6415      * <p>Property Config:
6416      * <ul>
6417      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_WRITE}
6418      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
6419      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
6420      *  <li>{@code Integer} property type
6421      * </ul>
6422      *
6423      * <p>Required Permission:
6424      * <ul>
6425      *  <li>Property is not readable.
6426      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_ADAS_STATES} to write
6427      *  property.
6428      * </ul>
6429      *
6430      * @data_enum {@link LaneCenteringAssistCommand}
6431      *
6432      * @hide
6433      */
6434     @SystemApi
6435     @RequiresPermission.Write(@RequiresPermission(Car.PERMISSION_CONTROL_ADAS_STATES))
6436     public static final int LANE_CENTERING_ASSIST_COMMAND = 289411083;
6437 
6438     /**
6439      * Lane Centering Assist (LCA) state.
6440      *
6441      * <p>Returns the current state of LCA. This property will always return a valid state defined
6442      * in {@link android.car.hardware.property.LaneCenteringAssistState} or {@link
6443      * android.car.hardware.property.ErrorState}.
6444      *
6445      * <p>If LCA includes lane departure warnings, those warnings will be surfaced through the Lane
6446      * Departure Warning (LDW) properties.
6447      *
6448      * <p>For the global area ID (0), the {@link
6449      * android.car.hardware.property.AreaIdConfig#getSupportedEnumValues()} array obtained from
6450      * {@link android.car.hardware.CarPropertyConfig#getAreaIdConfig(int)} specifies which states
6451      * from {@link android.car.hardware.property.LaneCenteringAssistState} and {@link
6452      * android.car.hardware.property.ErrorState} are supported.
6453      *
6454      * <p>Property Config:
6455      * <ul>
6456      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
6457      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
6458      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
6459      *  <li>{@code Integer} property type
6460      * </ul>
6461      *
6462      * <p>Required Permission:
6463      * <ul>
6464      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_ADAS_STATES} to read
6465      *  property.
6466      *  <li>Property is not writable.
6467      * </ul>
6468      *
6469      * @data_enum {@link LaneCenteringAssistState}
6470      * @data_enum {@link ErrorState}
6471      *
6472      * @hide
6473      */
6474     @SystemApi
6475     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_ADAS_STATES))
6476     public static final int LANE_CENTERING_ASSIST_STATE = 289411084;
6477 
6478     /**
6479      * Enable or disable Emergency Lane Keep Assist (ELKA).
6480      *
6481      * <p>Return true if ELKA is enabled and false if ELKA is disabled. When ELKA is enabled, the
6482      * ADAS system in the vehicle should be on and monitoring for unsafe lane changes by the driver.
6483      * When an unsafe maneuver is detected, ELKA alerts the driver and applies steering corrections
6484      * to keep the vehicle in its original lane.
6485      *
6486      * <p>This property is defined as read_write, but OEMs have the option to implement it as read
6487      * only.
6488      *
6489      * <p>Property Config:
6490      * <ul>
6491      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
6492      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
6493      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
6494      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
6495      *  <li>{@code Boolean} property type
6496      * </ul>
6497      *
6498      * <p>Required Permissions:
6499      * <ul>
6500      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_ADAS_SETTINGS} or
6501      *  Signature|Privileged permission {@link Car#PERMISSION_CONTROL_ADAS_SETTINGS} to read
6502      *  property.
6503      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_ADAS_SETTINGS} to write
6504      *  property.
6505      * </ul>
6506      *
6507      * @hide
6508      */
6509     @SystemApi
6510     @RequiresPermission.Read(@RequiresPermission(anyOf = {Car.PERMISSION_READ_ADAS_SETTINGS,
6511             Car.PERMISSION_CONTROL_ADAS_SETTINGS}))
6512     @RequiresPermission.Write(@RequiresPermission(Car.PERMISSION_CONTROL_ADAS_SETTINGS))
6513     public static final int EMERGENCY_LANE_KEEP_ASSIST_ENABLED = 287313933;
6514 
6515     /**
6516      * Emergency Lane Keep Assist (ELKA) state.
6517      *
6518      * <p>Returns the current state of ELKA. Generally, this property should return a valid state
6519      * defined in the {@link android.car.hardware.property.EmergencyLaneKeepAssistState} or {@link
6520      * android.car.hardware.property.ErrorState}. For example, if the feature is not available due
6521      * to some temporary state, that information should be conveyed through {@link
6522      * android.car.hardware.property.ErrorState}.
6523      *
6524      * <p>For the global area ID (0), the {@link
6525      * android.car.hardware.property.AreaIdConfig#getSupportedEnumValues()} array obtained from
6526      * {@link android.car.hardware.CarPropertyConfig#getAreaIdConfig(int)} specifies which states
6527      * from {@link android.car.hardware.property.EmergencyLaneKeepAssistState} and {@link
6528      * android.car.hardware.property.ErrorState} are supported.
6529      *
6530      * <p>Property Config:
6531      * <ul>
6532      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
6533      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
6534      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
6535      *  <li>{@code Integer} property type
6536      * </ul>
6537      *
6538      * <p>Required Permission:
6539      * <ul>
6540      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_ADAS_STATES} to read
6541      *  property.
6542      *  <li>Property is not writable.
6543      * </ul>
6544      *
6545      * @data_enum {@link EmergencyLaneKeepAssistState}
6546      * @data_enum {@link ErrorState}
6547      *
6548      * @hide
6549      */
6550     @SystemApi
6551     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_ADAS_STATES))
6552     public static final int EMERGENCY_LANE_KEEP_ASSIST_STATE = 289411086;
6553 
6554     /**
6555      * Enable or disable Cruise Control (CC).
6556      *
6557      * <p>Return true if CC is enabled and false if CC is disabled. This property is shared by all
6558      * forms of {@link android.car.hardware.property.CruiseControlType}).
6559      *
6560      * <p>When CC is enabled, the ADAS system in the vehicle should be turned on and responding to
6561      * commands.
6562      *
6563      * <p>This property is defined as read_write, but OEMs have the option to implement it as read
6564      * only.
6565      *
6566      * <p>Property Config:
6567      * <ul>
6568      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
6569      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
6570      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
6571      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
6572      *  <li>{@code Boolean} property type
6573      * </ul>
6574      *
6575      * <p>Required Permissions:
6576      * <ul>
6577      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_ADAS_SETTINGS} or
6578      *  Signature|Privileged permission {@link Car#PERMISSION_CONTROL_ADAS_SETTINGS} to read
6579      *  property.
6580      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_ADAS_SETTINGS} to write
6581      *  property.
6582      * </ul>
6583      *
6584      * @hide
6585      */
6586     @SystemApi
6587     @RequiresPermission.Read(@RequiresPermission(anyOf = {Car.PERMISSION_READ_ADAS_SETTINGS,
6588             Car.PERMISSION_CONTROL_ADAS_SETTINGS}))
6589     @RequiresPermission.Write(@RequiresPermission(Car.PERMISSION_CONTROL_ADAS_SETTINGS))
6590     public static final int CRUISE_CONTROL_ENABLED = 287313935;
6591 
6592     /**
6593      * Current type of Cruise Control (CC).
6594      *
6595      * <p>When {@link #CRUISE_CONTROL_ENABLED} is true, this property returns the type of CC that is
6596      * currently enabled (for example, standard CC, adaptive CC, etc.). Generally, this property
6597      * should return a valid state defined in the {@link
6598      * android.car.hardware.property.CruiseControlType} or {@link
6599      * android.car.hardware.property.ErrorState}. For example, if the feature is not available due
6600      * to some temporary state, that information should be conveyed through {@link
6601      * android.car.hardware.property.ErrorState}.
6602      *
6603      * <p>For the global area ID (0), the {@link
6604      * android.car.hardware.property.AreaIdConfig#getSupportedEnumValues()} array obtained from
6605      * {@link android.car.hardware.CarPropertyConfig#getAreaIdConfig(int)} specifies which states
6606      * from {@link android.car.hardware.property.CruiseControlType} and {@link
6607      * android.car.hardware.property.ErrorState} are supported.
6608      *
6609      * Trying to write {@link android.car.hardware.property.CruiseControlType#OTHER} or an
6610      * {@link android.car.hardware.property.ErrorState} to this property will throw an {@code
6611      * IllegalArgumentException}.
6612      *
6613      * <p>Property Config:
6614      * <ul>
6615      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
6616      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
6617      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
6618      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
6619      *  <li>{@code Integer} property type
6620      * </ul>
6621      *
6622      * <p>Required Permissions:
6623      * <ul>
6624      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_ADAS_STATES} or
6625      *  Signature|Privileged permission {@link Car#PERMISSION_CONTROL_ADAS_STATES} to read
6626      *  property.
6627      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_ADAS_STATES} to write
6628      *  property.
6629      * </ul>
6630      *
6631      * @data_enum {@link CruiseControlType}
6632      * @data_enum {@link ErrorState}
6633      *
6634      * @hide
6635      */
6636     @SystemApi
6637     @RequiresPermission.Read(@RequiresPermission(anyOf = {Car.PERMISSION_READ_ADAS_STATES,
6638             Car.PERMISSION_CONTROL_ADAS_STATES}))
6639     @RequiresPermission.Write(@RequiresPermission(Car.PERMISSION_CONTROL_ADAS_STATES))
6640     public static final int CRUISE_CONTROL_TYPE = 289411088;
6641 
6642     /**
6643      * Current state of Cruise Control (CC).
6644      *
6645      * <p>This property returns the state of CC. Generally, this property should return a valid
6646      * state defined in the {@link android.car.hardware.property.CruiseControlState} or {@link
6647      * android.car.hardware.property.ErrorState}. For example, if the feature is not available due
6648      * to some temporary state, that information should be conveyed through {@link
6649      * android.car.hardware.property.ErrorState}.
6650      *
6651      * <p>For the global area ID (0), the {@link
6652      * android.car.hardware.property.AreaIdConfig#getSupportedEnumValues()} array obtained from
6653      * {@link android.car.hardware.CarPropertyConfig#getAreaIdConfig(int)} specifies which states
6654      * from {@link android.car.hardware.property.CruiseControlState} and {@link
6655      * android.car.hardware.property.ErrorState} are supported.
6656      *
6657      * <p>Property Config:
6658      * <ul>
6659      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
6660      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
6661      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
6662      *  <li>{@code Integer} property type
6663      * </ul>
6664      *
6665      * <p>Required Permission:
6666      * <ul>
6667      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_ADAS_STATES} to read
6668      *  property.
6669      *  <li>Property is not writable.
6670      * </ul>
6671      *
6672      * @data_enum {@link CruiseControlState}
6673      * @data_enum {@link ErrorState}
6674      *
6675      * @hide
6676      */
6677     @SystemApi
6678     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_ADAS_STATES))
6679     public static final int CRUISE_CONTROL_STATE = 289411089;
6680 
6681     /**
6682      * Write Cruise Control (CC) commands.
6683      *
6684      * <p>See {@link android.car.hardware.property.CruiseControlCommand} for the details about
6685      * each supported command.
6686      *
6687      * <p>For the global area ID (0), the {@link
6688      * android.car.hardware.property.AreaIdConfig#getSupportedEnumValues()} array obtained from
6689      * {@link android.car.hardware.CarPropertyConfig#getAreaIdConfig(int)} specifies which states
6690      * from {@link android.car.hardware.property.CruiseControlCommand} are supported.
6691      *
6692      * <p>When this property is unavailable (for example when {@link #CRUISE_CONTROL_ENABLED} is
6693      * false), writing this property will throw a {@link
6694      * android.car.hardware.property.PropertyNotAvailableException}.
6695      *
6696      * <p>Property Config:
6697      * <ul>
6698      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_WRITE}
6699      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
6700      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
6701      *  <li>{@code Integer} property type
6702      * </ul>
6703      *
6704      * <p>Required Permission:
6705      * <ul>
6706      *  <li>Property is not readable.
6707      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_ADAS_STATES} to write
6708      *  property.
6709      * </ul>
6710      *
6711      * @data_enum {@link CruiseControlCommand}
6712      *
6713      * @hide
6714      */
6715     @SystemApi
6716     @RequiresPermission.Write(@RequiresPermission(Car.PERMISSION_CONTROL_ADAS_STATES))
6717     public static final int CRUISE_CONTROL_COMMAND = 289411090;
6718 
6719     /**
6720      * Current target speed for Cruise Control (CC) in meters per second.
6721      *
6722      * <p>{@link android.car.hardware.property.AreaIdConfig#getMinValue()} and {@link
6723      * android.car.hardware.property.AreaIdConfig#getMaxValue()} return the min and max target
6724      * speed values respectively. These values will be non-negative.
6725      *
6726      * <p>{@link android.car.hardware.property.AreaIdConfig#getMinValue()} represents the lower
6727      * bound of the target speed.
6728      * <p>{@link android.car.hardware.property.AreaIdConfig#getMaxValue()} represents the upper
6729      * bound of the target speed.
6730      *
6731      * <p>When this property is unavailable (for example when {@link #CRUISE_CONTROL_ENABLED} is
6732      * false), reading this property will throw a {@link
6733      * android.car.hardware.property.PropertyNotAvailableException}.
6734      *
6735      * <p>Property Config:
6736      * <ul>
6737      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
6738      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
6739      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
6740      *  <li>{@code Float} property type
6741      * </ul>
6742      *
6743      * <p>Required Permission:
6744      * <ul>
6745      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_ADAS_STATES} to read
6746      *  property.
6747      *  <li>Property is not writable.
6748      * </ul>
6749      *
6750      * @hide
6751      */
6752     @SystemApi
6753     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_ADAS_STATES))
6754     public static final int CRUISE_CONTROL_TARGET_SPEED = 291508243;
6755 
6756     /**
6757      * Current target time gap for Adaptive Cruise Control (ACC) or Predictive Cruise Control in
6758      * milliseconds.
6759      *
6760      * <p>This property should specify the target time gap to a leading vehicle. This gap is defined
6761      * as the time to travel the distance between the leading vehicle's rear-most point to the ACC
6762      * vehicle's front-most point. The actual time gap from a leading vehicle can be above or below
6763      * this value.
6764      *
6765      * <p>The possible values to set for the target time gap should be specified in {@code
6766      * configArray} in ascending order. All values must be positive. If the property is writable,
6767      * all values must be writable.
6768      *
6769      * <p>When this property is unavailable (for example when {@link #CRUISE_CONTROL_ENABLED} is
6770      * false), reading or writing this property will throw a {@link
6771      * android.car.hardware.property.PropertyNotAvailableException}.
6772      *
6773      * <p>Property Config:
6774      * <ul>
6775      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
6776      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
6777      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
6778      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
6779      *  <li>{@code Integer} property type
6780      * </ul>
6781      *
6782      * <p>Required Permissions:
6783      * <ul>
6784      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_ADAS_STATES} or
6785      *  Signature|Privileged permission {@link Car#PERMISSION_CONTROL_ADAS_STATES} to read
6786      *  property.
6787      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_ADAS_STATES} to write
6788      *  property.
6789      * </ul>
6790      *
6791      * @hide
6792      */
6793     @SystemApi
6794     @RequiresPermission.Read(@RequiresPermission(anyOf = {Car.PERMISSION_READ_ADAS_STATES,
6795             Car.PERMISSION_CONTROL_ADAS_STATES}))
6796     @RequiresPermission.Write(@RequiresPermission(Car.PERMISSION_CONTROL_ADAS_STATES))
6797     public static final int ADAPTIVE_CRUISE_CONTROL_TARGET_TIME_GAP = 289411092;
6798 
6799     /**
6800      * Measured distance from leading vehicle when using Adaptive Cruise Control (ACC) or Predictive
6801      * Cruise Control in millimeters.
6802      *
6803      * <p>Returns the measured distance in meters from the lead vehicle for ACC between the
6804      * rear-most point of the leading vehicle and the front-most point of the ACC vehicle.
6805      *
6806      * <p>{@link CarPropertyConfig#getMinValue(int)} returns 0.
6807      * <p>{@link CarPropertyConfig#getMaxValue(int)} returns the maximum range the distance sensor
6808      * can support. This value will be non-negative.
6809      *
6810      * <p>When no lead vehicle is detected (that is, when there is no leading vehicle or the leading
6811      * vehicle is too far away for the sensor to detect), this property will throw a {@link
6812      * android.car.hardware.property.PropertyNotAvailableException}.
6813      *
6814      * <p>When this property is unavailable (for example when {@link #CRUISE_CONTROL_ENABLED} is
6815      * false), reading this property will throw a {@link
6816      * android.car.hardware.property.PropertyNotAvailableException}.
6817      *
6818      * <p>Property Config:
6819      * <ul>
6820      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
6821      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
6822      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_CONTINUOUS}
6823      *  <li>{@code Integer} property type
6824      * </ul>
6825      *
6826      * <p>Required Permission:
6827      * <ul>
6828      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_ADAS_STATES} to read
6829      *  property.
6830      *  <li>Property is not writable.
6831      * </ul>
6832      *
6833      * @hide
6834      */
6835     @SystemApi
6836     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_ADAS_STATES))
6837     public static final int ADAPTIVE_CRUISE_CONTROL_LEAD_VEHICLE_MEASURED_DISTANCE = 289411093;
6838 
6839     /**
6840      * Enable or disable Hands On Detection (HOD).
6841      *
6842      * <p>Return true if HOD is enabled and false if HOD is disabled. When HOD is enabled, a system
6843      * inside the vehicle should be monitoring the presence of the driver's hands on the steering
6844      * wheel and send a warning if it detects that the driver's hands are no longer on the steering
6845      * wheel.
6846      *
6847      * <p>This property is defined as read_write, but OEMs have the option to implement it as read
6848      * only.
6849      *
6850      * <p>Property Config:
6851      * <ul>
6852      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
6853      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
6854      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
6855      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
6856      *  <li>{@code Boolean} property type
6857      * </ul>
6858      *
6859      * <p>Required Permissions:
6860      * <ul>
6861      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_DRIVER_MONITORING_SETTINGS}
6862      *  or Signature|Privileged permission {@link
6863      *  Car#PERMISSION_CONTROL_DRIVER_MONITORING_SETTINGS} to read property.
6864      *  <li>Signature|Privileged permission {@link
6865      *  Car#PERMISSION_CONTROL_DRIVER_MONITORING_SETTINGS} to write property.
6866      * </ul>
6867      *
6868      * @hide
6869      */
6870     @SystemApi
6871     @RequiresPermission.Read(@RequiresPermission(anyOf = {
6872             Car.PERMISSION_READ_DRIVER_MONITORING_SETTINGS,
6873             Car.PERMISSION_CONTROL_DRIVER_MONITORING_SETTINGS}))
6874     @RequiresPermission.Write(@RequiresPermission(
6875             Car.PERMISSION_CONTROL_DRIVER_MONITORING_SETTINGS))
6876     public static final int HANDS_ON_DETECTION_ENABLED = 287313942;
6877 
6878     /**
6879      * Hands On Detection (HOD) driver state.
6880      *
6881      * <p>Returns whether the driver's hands are on the steering wheel. Generally, this property
6882      * should return a valid state defined in the {@link
6883      * android.car.hardware.property.HandsOnDetectionDriverState} or {@link
6884      * android.car.hardware.property.ErrorState}. For example, if the feature is not available due
6885      * to some temporary state, that information should be conveyed through {@link
6886      * android.car.hardware.property.ErrorState}.
6887      *
6888      * <p>If the vehicle is sending a warning to the user because the driver's hands have been off
6889      * the steering wheel for too long, the warning should be surfaced through
6890      * {@link #HANDS_ON_DETECTION_WARNING}.
6891      *
6892      * <p>For the global area ID (0), the {@link
6893      * android.car.hardware.property.AreaIdConfig#getSupportedEnumValues()} array obtained from
6894      * {@link android.car.hardware.CarPropertyConfig#getAreaIdConfig(int)} specifies which states
6895      * from {@link android.car.hardware.property.HandsOnDetectionDriverState} and {@link
6896      * android.car.hardware.property.ErrorState} are supported.
6897      *
6898      * <p>Property Config:
6899      * <ul>
6900      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
6901      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
6902      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
6903      *  <li>{@code Integer} property type
6904      * </ul>
6905      *
6906      * <p>Required Permission:
6907      * <ul>
6908      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_DRIVER_MONITORING_STATES} to
6909      *  read property.
6910      *  <li>Property is not writable.
6911      * </ul>
6912      *
6913      * @data_enum {@link HandsOnDetectionDriverState}
6914      * @data_enum {@link ErrorState}
6915      *
6916      * @hide
6917      */
6918     @SystemApi
6919     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_DRIVER_MONITORING_STATES))
6920     public static final int HANDS_ON_DETECTION_DRIVER_STATE = 289411095;
6921     /**
6922      * Hands On Detection (HOD) warning.
6923      *
6924      * <p>Returns whether a warning is being sent to the driver for having their hands off the wheel
6925      * for too long a duration.
6926      *
6927      * <p>Generally, this property should return a valid state defined in the {@link
6928      * android.car.hardware.property.HandsOnDetectionWarning} or {@link
6929      * android.car.hardware.property.ErrorState}. For example, if the feature is not available due
6930      * to some temporary state, that information should be conveyed through an {@link
6931      * android.car.hardware.property.ErrorState}.
6932      *
6933      * <p>For the global area ID (0), the {@link
6934      * android.car.hardware.property.AreaIdConfig#getSupportedEnumValues()} array obtained from
6935      * {@link android.car.hardware.CarPropertyConfig#getAreaIdConfig(int)} specifies which states
6936      * from {@link android.car.hardware.property.HandsOnDetectionWarning} and {@link
6937      * android.car.hardware.property.ErrorState} are supported.
6938      *
6939      * <p>Property Config:
6940      * <ul>
6941      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
6942      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
6943      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
6944      *  <li>{@code Integer} property type
6945      * </ul>
6946      *
6947      * <p>Required Permission:
6948      * <ul>
6949      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_DRIVER_MONITORING_STATES} to
6950      *  read property.
6951      *  <li>Property is not writable.
6952      * </ul>
6953      *
6954      * @data_enum {@link HandsOnDetectionWarning}
6955      * @data_enum {@link ErrorState}
6956      *
6957      * @hide
6958      */
6959     @SystemApi
6960     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_DRIVER_MONITORING_STATES))
6961     public static final int HANDS_ON_DETECTION_WARNING = 289411096;
6962 
6963     /**
6964      * Enable or disable driver drowsiness and attention monitoring.
6965      *
6966      * <p>Set true to enable driver drowsiness and attention monitoring and false to disable driver
6967      * drowsiness and attention monitoring. When driver drowsiness and attention monitoring is
6968      * enabled, a system inside the vehicle will monitor the drowsiness and attention level of the
6969      * driver and warn the driver if needed.
6970      *
6971      * <p>Property Config:
6972      * <ul>
6973      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
6974      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
6975      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
6976      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
6977      *  <li>{@code Boolean} property type
6978      * </ul>
6979      *
6980      * <p>Required Permissions:
6981      * <ul>
6982      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_DRIVER_MONITORING_SETTINGS}
6983      *  or Signature|Privileged permission {@link
6984      *  Car#PERMISSION_CONTROL_DRIVER_MONITORING_SETTINGS} to read property.
6985      *  <li>Signature|Privileged permission {@link
6986      *  Car#PERMISSION_CONTROL_DRIVER_MONITORING_SETTINGS} to write property.
6987      * </ul>
6988      *
6989      * @hide
6990      */
6991     @FlaggedApi(FLAG_ANDROID_VIC_VEHICLE_PROPERTIES)
6992     @SystemApi
6993     @RequiresPermission.Read(@RequiresPermission(anyOf = {
6994             Car.PERMISSION_READ_DRIVER_MONITORING_SETTINGS,
6995             Car.PERMISSION_CONTROL_DRIVER_MONITORING_SETTINGS}))
6996     @RequiresPermission.Write(@RequiresPermission(
6997             Car.PERMISSION_CONTROL_DRIVER_MONITORING_SETTINGS))
6998     public static final int DRIVER_DROWSINESS_ATTENTION_SYSTEM_ENABLED = 287313945;
6999 
7000     /**
7001      * Driver drowsiness and attention level state.
7002      *
7003      * <p>Returns the current detected state of driver drowiness and attention level based on the
7004      * Karolinska Sleepiness Scale (KSS).
7005      *
7006      * <p>Generally, this property should return a valid state defined in the {@link
7007      * android.car.hardware.property.DriverDrowsinessAttentionState} or {@link
7008      * android.car.hardware.property.ErrorState}. For example, if the feature is not available due
7009      * to some temporary state, that information should be conveyed through {@link
7010      * android.car.hardware.property.ErrorState}.
7011      *
7012      * <p>If the vehicle is sending a warning to the user because the driver is too drowsy, the
7013      * warning should be surfaced through {@link #DRIVER_DROWSINESS_ATTENTION_WARNING}.
7014      *
7015      * <p>For the global area ID (0), the {@link
7016      * android.car.hardware.property.AreaIdConfig#getSupportedEnumValues()} array obtained from
7017      * {@link android.car.hardware.CarPropertyConfig#getAreaIdConfig(int)} specifies which states
7018      * from {@link android.car.hardware.property.DriverDrowsinessAttentionState} and {@link
7019      * android.car.hardware.property.ErrorState} are supported.
7020      *
7021      * <p>Property Config:
7022      * <ul>
7023      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
7024      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
7025      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
7026      *  <li>{@code Integer} property type
7027      * </ul>
7028      *
7029      * <p>Required Permission:
7030      * <ul>
7031      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_DRIVER_MONITORING_STATES} to
7032      *  read property.
7033      *  <li>Property is not writable.
7034      * </ul>
7035      *
7036      * @data_enum {@link DriverDrowsinessAttentionState}
7037      * @data_enum {@link ErrorState}
7038      *
7039      * @hide
7040      */
7041     @FlaggedApi(FLAG_ANDROID_VIC_VEHICLE_PROPERTIES)
7042     @SystemApi
7043     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_DRIVER_MONITORING_STATES))
7044     public static final int DRIVER_DROWSINESS_ATTENTION_STATE = 289411098;
7045 
7046     /**
7047      * Enable or disable driver drowsiness and attention warnings.
7048      *
7049      * <p>Set true to enable driver drowsiness and attention warnings and false to disable driver
7050      * drowsiness and attention warnings. When driver drowsiness and attention warnings are enabled,
7051      * the driver drowsiness and attention monitoring system inside the vehicle should warn the
7052      * driver when it detects the driver is drowsy or not attentive.
7053      *
7054      * <p>Property Config:
7055      * <ul>
7056      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
7057      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
7058      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
7059      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
7060      *  <li>{@code Boolean} property type
7061      * </ul>
7062      *
7063      * <p>Required Permissions:
7064      * <ul>
7065      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_DRIVER_MONITORING_SETTINGS}
7066      *  or Signature|Privileged permission {@link
7067      *  Car#PERMISSION_CONTROL_DRIVER_MONITORING_SETTINGS} to read property.
7068      *  <li>Signature|Privileged permission {@link
7069      *  Car#PERMISSION_CONTROL_DRIVER_MONITORING_SETTINGS} to write property.
7070      * </ul>
7071      *
7072      * @hide
7073      */
7074     @FlaggedApi(FLAG_ANDROID_VIC_VEHICLE_PROPERTIES)
7075     @SystemApi
7076     @RequiresPermission.Read(@RequiresPermission(anyOf = {
7077             Car.PERMISSION_READ_DRIVER_MONITORING_SETTINGS,
7078             Car.PERMISSION_CONTROL_DRIVER_MONITORING_SETTINGS}))
7079     @RequiresPermission.Write(@RequiresPermission(
7080             Car.PERMISSION_CONTROL_DRIVER_MONITORING_SETTINGS))
7081     public static final int DRIVER_DROWSINESS_ATTENTION_WARNING_ENABLED = 287313947;
7082 
7083     /**
7084      * Driver drowsiness and attention warning.
7085      *
7086      * <p>Returns whether a warning is being sent to the driver for being drowsy or not attentive.
7087      *
7088      * <p>Generally, this property should return a valid state defined in the {@link
7089      * android.car.hardware.property.DriverDrowsinessAttentionWarning} or {@link
7090      * android.car.hardware.property.ErrorState}. For example, if the feature is not available due
7091      * to some temporary state, that information should be conveyed through an {@link
7092      * android.car.hardware.property.ErrorState}.
7093      *
7094      * <p>For the global area ID (0), the {@link
7095      * android.car.hardware.property.AreaIdConfig#getSupportedEnumValues()} array obtained from
7096      * {@link android.car.hardware.CarPropertyConfig#getAreaIdConfig(int)} specifies which states
7097      * from {@link android.car.hardware.property.DriverDrowsinessAttentionWarning} and {@link
7098      * android.car.hardware.property.ErrorState} are supported.
7099      *
7100      * <p>Property Config:
7101      * <ul>
7102      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
7103      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
7104      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
7105      *  <li>{@code Integer} property type
7106      * </ul>
7107      *
7108      * <p>Required Permission:
7109      * <ul>
7110      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_DRIVER_MONITORING_STATES} to
7111      *  read property.
7112      *  <li>Property is not writable.
7113      * </ul>
7114      *
7115      * @data_enum {@link DriverDrowsinessAttentionWarning}
7116      * @data_enum {@link ErrorState}
7117      *
7118      * @hide
7119      */
7120     @FlaggedApi(FLAG_ANDROID_VIC_VEHICLE_PROPERTIES)
7121     @SystemApi
7122     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_DRIVER_MONITORING_STATES))
7123     public static final int DRIVER_DROWSINESS_ATTENTION_WARNING = 289411100;
7124 
7125    /**
7126      * Enable or disable driver distraction monitoring.
7127      *
7128      * <p>Set true to enable driver distraction monitoring and false to disable driver distraction
7129      * monitoring. When driver distraction monitoring is enabled, a system inside the vehicle should
7130      * be monitoring the distraction level of the driver and warn the driver if needed.
7131      *
7132      * <p>Property Config:
7133      * <ul>
7134      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
7135      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
7136      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
7137      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
7138      *  <li>{@code Boolean} property type
7139      * </ul>
7140      *
7141      * <p>Required Permissions:
7142      * <ul>
7143      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_DRIVER_MONITORING_SETTINGS}
7144      *  or Signature|Privileged permission {@link
7145      *  Car#PERMISSION_CONTROL_DRIVER_MONITORING_SETTINGS} to read property.
7146      *  <li>Signature|Privileged permission {@link
7147      *  Car#PERMISSION_CONTROL_DRIVER_MONITORING_SETTINGS} to write property.
7148      * </ul>
7149      *
7150      * @hide
7151      */
7152     @FlaggedApi(FLAG_ANDROID_VIC_VEHICLE_PROPERTIES)
7153     @SystemApi
7154     @RequiresPermission.Read(@RequiresPermission(anyOf = {
7155             Car.PERMISSION_READ_DRIVER_MONITORING_SETTINGS,
7156             Car.PERMISSION_CONTROL_DRIVER_MONITORING_SETTINGS}))
7157     @RequiresPermission.Write(@RequiresPermission(
7158             Car.PERMISSION_CONTROL_DRIVER_MONITORING_SETTINGS))
7159     public static final int DRIVER_DISTRACTION_SYSTEM_ENABLED = 287313949;
7160 
7161     /**
7162      * Driver distraction state.
7163      *
7164      * <p>Returns the current detected driver distraction state.
7165      *
7166      * <p>Generally, this property should return a valid state defined in the {@link
7167      * android.car.hardware.property.DriverDistractionState} or {@link
7168      * android.car.hardware.property.ErrorState}. For example, if the feature is not available due
7169      * to some temporary state, that information should be conveyed through {@link
7170      * android.car.hardware.property.ErrorState}.
7171      *
7172      * <p>If the vehicle is sending a warning to the user because the driver is too distracted, the
7173      * warning should be surfaced through {@link #DRIVER_DISTRACTION_WARNING}.
7174      *
7175      * <p>For the global area ID (0), the {@link
7176      * android.car.hardware.property.AreaIdConfig#getSupportedEnumValues()} array obtained from
7177      * {@link android.car.hardware.CarPropertyConfig#getAreaIdConfig(int)} specifies which states
7178      * from {@link android.car.hardware.property.DriverDistractionState} and {@link
7179      * android.car.hardware.property.ErrorState} are supported.
7180      *
7181      * <p>Property Config:
7182      * <ul>
7183      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
7184      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
7185      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
7186      *  <li>{@code Integer} property type
7187      * </ul>
7188      *
7189      * <p>Required Permission:
7190      * <ul>
7191      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_DRIVER_MONITORING_STATES} to
7192      *  read property.
7193      *  <li>Property is not writable.
7194      * </ul>
7195      *
7196      * @data_enum {@link DriverDistractionState}
7197      * @data_enum {@link ErrorState}
7198      *
7199      * @hide
7200      */
7201     @FlaggedApi(FLAG_ANDROID_VIC_VEHICLE_PROPERTIES)
7202     @SystemApi
7203     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_DRIVER_MONITORING_STATES))
7204     public static final int DRIVER_DISTRACTION_STATE = 289411102;
7205 
7206     /**
7207      * Enable or disable driver distraction warnings.
7208      *
7209      * <p>Set true to enable driver distraction warnings and false to disable driver distraction
7210      * warnings. When driver distraction warnings are enabled, the driver distraction monitoring
7211      * system inside the vehicle should warn the driver when it detects the driver is distracted.
7212      *
7213      * <p>Property Config:
7214      * <ul>
7215      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
7216      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
7217      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
7218      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
7219      *  <li>{@code Boolean} property type
7220      * </ul>
7221      *
7222      * <p>Required Permissions:
7223      * <ul>
7224      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_DRIVER_MONITORING_SETTINGS}
7225      *  or Signature|Privileged permission {@link
7226      *  Car#PERMISSION_CONTROL_DRIVER_MONITORING_SETTINGS} to read property.
7227      *  <li>Signature|Privileged permission {@link
7228      *  Car#PERMISSION_CONTROL_DRIVER_MONITORING_SETTINGS} to write property.
7229      * </ul>
7230      *
7231      * @hide
7232      */
7233     @FlaggedApi(FLAG_ANDROID_VIC_VEHICLE_PROPERTIES)
7234     @SystemApi
7235     @RequiresPermission.Read(@RequiresPermission(anyOf = {
7236             Car.PERMISSION_READ_DRIVER_MONITORING_SETTINGS,
7237             Car.PERMISSION_CONTROL_DRIVER_MONITORING_SETTINGS}))
7238     @RequiresPermission.Write(@RequiresPermission(
7239             Car.PERMISSION_CONTROL_DRIVER_MONITORING_SETTINGS))
7240     public static final int DRIVER_DISTRACTION_WARNING_ENABLED = 287313951;
7241 
7242     /**
7243      * Driver distraction warning.
7244      *
7245      * <p>Returns whether a warning is being sent to the driver for being distracted.
7246      *
7247      * <p>Generally, this property should return a valid state defined in the {@link
7248      * android.car.hardware.property.DriverDistractionWarning} or {@link
7249      * android.car.hardware.property.ErrorState}. For example, if the feature is not available due
7250      * to some temporary state, that information should be conveyed through an {@link
7251      * android.car.hardware.property.ErrorState}.
7252      *
7253      * <p>For the global area ID (0), the {@link
7254      * android.car.hardware.property.AreaIdConfig#getSupportedEnumValues()} array obtained from
7255      * {@link android.car.hardware.CarPropertyConfig#getAreaIdConfig(int)} specifies which states
7256      * from {@link android.car.hardware.property.DriverDistractionWarning} and {@link
7257      * android.car.hardware.property.ErrorState} are supported.
7258      *
7259      * <p>Property Config:
7260      * <ul>
7261      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
7262      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
7263      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
7264      *  <li>{@code Integer} property type
7265      * </ul>
7266      *
7267      * <p>Required Permission:
7268      * <ul>
7269      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_DRIVER_MONITORING_STATES} to
7270      *  read property.
7271      *  <li>Property is not writable.
7272      * </ul>
7273      *
7274      * @data_enum {@link DriverDistractionWarning}
7275      * @data_enum {@link ErrorState}
7276      *
7277      * @hide
7278      */
7279     @FlaggedApi(FLAG_ANDROID_VIC_VEHICLE_PROPERTIES)
7280     @SystemApi
7281     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_DRIVER_MONITORING_STATES))
7282     public static final int DRIVER_DISTRACTION_WARNING = 289411104;
7283     /**
7284      * Enable or disable Low Speed Collision Warning.
7285      *
7286      * <p>Returns true if low speed collision warning is enabled and false if low speed collision
7287      * warning is disabled. When low speed collision warning is enabled, the ADAS system in the
7288      * vehicle will warn the driver of potential collisions at low speeds. This property is
7289      * different from the pre-existing {@link VehiclePropertyIds#FORWARD_COLLISION_WARNING_ENABLED},
7290      * which applies to higher speed applications only. If the vehicle doesn't have a separate
7291      * collision detection system for low speed environments, this property will not be implemented.
7292      *
7293      * <p>This property is defined as read_write, but OEMs have the option to implement it as read
7294      * only.
7295      *
7296      * <p>Property Config:
7297      * <ul>
7298      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
7299      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
7300      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
7301      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
7302      *  <li>{@code Boolean} property type
7303      * </ul>
7304      *
7305      * <p>Required Permissions:
7306      * <ul>
7307      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_ADAS_SETTINGS} or
7308      *  Signature|Privileged permission {@link Car#PERMISSION_CONTROL_ADAS_SETTINGS} to read
7309      *  property.
7310      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_ADAS_SETTINGS} to write
7311      *  property.
7312      * </ul>
7313      *
7314      * @hide
7315      */
7316     @FlaggedApi(FLAG_ANDROID_VIC_VEHICLE_PROPERTIES)
7317     @SystemApi
7318     @RequiresPermission.Read(@RequiresPermission(anyOf = {Car.PERMISSION_READ_ADAS_SETTINGS,
7319             Car.PERMISSION_CONTROL_ADAS_SETTINGS}))
7320     @RequiresPermission.Write(@RequiresPermission(Car.PERMISSION_CONTROL_ADAS_SETTINGS))
7321     public static final int LOW_SPEED_COLLISION_WARNING_ENABLED = 287313953;
7322 
7323     /**
7324      * Low Speed Collision Warning State state.
7325      *
7326      * <p>Returns the current state of Low Speed Collision Warning. This property will always return
7327      * a valid state defined in {@link android.car.hardware.property.LowSpeedCollisionWarningState}
7328      * or {@link android.car.hardware.property.ErrorState}. This property is different from the
7329      * pre-existing {@link VehiclePropertyIds#FORWARD_COLLISION_WARNING_ENABLED}, which applies to
7330      * higher speed applications only. If the vehicle doesn't have a separate collision detection
7331      * system for low speed environments, this property will not be implemented.
7332      *
7333      * <p>For the global area ID (0), the {@link
7334      * android.car.hardware.property.AreaIdConfig#getSupportedEnumValues()} array obtained from
7335      * {@link android.car.hardware.CarPropertyConfig#getAreaIdConfig(int)} specifies which states
7336      * from {@link android.car.hardware.property.LowSpeedCollisionWarningState} and {@link
7337      * android.car.hardware.property.ErrorState} are supported.
7338      *
7339      * <p>Property Config:
7340      * <ul>
7341      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
7342      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
7343      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
7344      *  <li>{@code Integer} property type
7345      * </ul>
7346      *
7347      * <p>Required Permission:
7348      * <ul>
7349      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_ADAS_STATES} to read
7350      *  property.
7351      *  <li>Property is not writable.
7352      * </ul>
7353      *
7354      * @data_enum {@link android.car.hardware.property.LowSpeedCollisionWarningState}
7355      * @data_enum {@link ErrorState}
7356      *
7357      * @hide
7358      */
7359     @FlaggedApi(FLAG_ANDROID_VIC_VEHICLE_PROPERTIES)
7360     @SystemApi
7361     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_ADAS_STATES))
7362     public static final int LOW_SPEED_COLLISION_WARNING_STATE = 289411106;
7363 
7364     /**
7365      * Enable or disable Cross Traffic Monitoring.
7366      *
7367      * <p>Returns true if Cross Traffic Monitoring is enabled and false if Cross Traffic Monitoring
7368      * is disabled. When Cross Traffic Monitoring is enabled, the ADAS system in the vehicle should
7369      * be turned on and monitoring for potential sideways collisions.
7370      *
7371      * <p>This property is defined as read_write, but OEMs have the option to implement it as read
7372      * only.
7373      *
7374      * <p>Property Config:
7375      * <ul>
7376      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
7377      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
7378      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
7379      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
7380      *  <li>{@code Boolean} property type
7381      * </ul>
7382      *
7383      * <p>Required Permissions:
7384      * <ul>
7385      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_ADAS_SETTINGS} or
7386      *  Signature|Privileged permission {@link Car#PERMISSION_CONTROL_ADAS_SETTINGS} to read
7387      *  property.
7388      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_ADAS_SETTINGS} to write
7389      *  property.
7390      * </ul>
7391      *
7392      * @hide
7393      */
7394     @FlaggedApi(FLAG_ANDROID_VIC_VEHICLE_PROPERTIES)
7395     @SystemApi
7396     @RequiresPermission.Read(@RequiresPermission(anyOf = {Car.PERMISSION_READ_ADAS_SETTINGS,
7397             Car.PERMISSION_CONTROL_ADAS_SETTINGS}))
7398     @RequiresPermission.Write(@RequiresPermission(Car.PERMISSION_CONTROL_ADAS_SETTINGS))
7399     public static final int CROSS_TRAFFIC_MONITORING_ENABLED = 287313955;
7400 
7401     /**
7402      * Cross Traffic Monitoring Warning state.
7403      *
7404      * <p>Returns the current state of Cross Traffic Monitoring Warning. This property will always
7405      * return a valid state defined in {@link
7406      * android.car.hardware.property.CrossTrafficMonitoringWarningState} or {@link
7407      * android.car.hardware.property.ErrorState}.
7408      *
7409      * <p>For the global area ID (0), the {@link
7410      * android.car.hardware.property.AreaIdConfig#getSupportedEnumValues()} array obtained from
7411      * {@link android.car.hardware.CarPropertyConfig#getAreaIdConfig(int)} specifies which states
7412      * from {@link android.car.hardware.property.CrossTrafficMonitoringWarningState} and {@link
7413      * android.car.hardware.property.ErrorState} are supported.
7414      *
7415      * <p>Property Config:
7416      * <ul>
7417      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
7418      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
7419      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
7420      *  <li>{@code Integer} property type
7421      * </ul>
7422      *
7423      * <p>Required Permission:
7424      * <ul>
7425      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_ADAS_STATES} to read
7426      *  property.
7427      *  <li>Property is not writable.
7428      * </ul>
7429      *
7430      * @data_enum {@link android.car.hardware.property.CrossTrafficMonitoringWarningState}
7431      * @data_enum {@link ErrorState}
7432      *
7433      * @hide
7434      */
7435     @FlaggedApi(FLAG_ANDROID_VIC_VEHICLE_PROPERTIES)
7436     @SystemApi
7437     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_ADAS_STATES))
7438     public static final int CROSS_TRAFFIC_MONITORING_WARNING_STATE = 289411108;
7439 
7440     /**
7441      * Enable or disable Low Speed Automatic Emergency Braking.
7442      *
7443      * <p>Returns true if Low Speed Automatic Emergency Braking is enabled or false if Low Speed
7444      * Automatic Emergency Braking is disabled. When Low Speed Automatic Emergency Braking is
7445      * enabled, the ADAS system in the vehicle will be turned on and monitoring to avoid potential
7446      * collisions in low speed conditions. This property is different from the pre-existing
7447      * AUTOMATIC_EMERGENCY_BRAKING_ENABLED, which should apply to higher speed applications only. If
7448      * the vehicle doesn't have a separate collision avoidance system for low speed environments,
7449      * this property will not be implemented.
7450      *
7451      * <p>This property is defined as read_write, but OEMs have the option to implement it as read
7452      * only.
7453      *
7454      * <p>Property Config:
7455      * <ul>
7456      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE} or
7457      *  {@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
7458      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
7459      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
7460      *  <li>{@code Boolean} property type
7461      * </ul>
7462      *
7463      * <p>Required Permissions:
7464      * <ul>
7465      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_ADAS_SETTINGS} or
7466      *  Signature|Privileged permission {@link Car#PERMISSION_CONTROL_ADAS_SETTINGS} to read
7467      *  property.
7468      *  <li>Signature|Privileged permission {@link Car#PERMISSION_CONTROL_ADAS_SETTINGS} to write
7469      *  property.
7470      * </ul>
7471      *
7472      * @hide
7473      */
7474     @FlaggedApi(FLAG_ANDROID_VIC_VEHICLE_PROPERTIES)
7475     @SystemApi
7476     @RequiresPermission.Read(@RequiresPermission(anyOf = {Car.PERMISSION_READ_ADAS_SETTINGS,
7477             Car.PERMISSION_CONTROL_ADAS_SETTINGS}))
7478     @RequiresPermission.Write(@RequiresPermission(Car.PERMISSION_CONTROL_ADAS_SETTINGS))
7479     public static final int LOW_SPEED_AUTOMATIC_EMERGENCY_BRAKING_ENABLED = 287313957;
7480 
7481     /**
7482      * Low Speed Automatic Emergency Braking state.
7483      *
7484      * <p>Returns the current state of Low Speed Automatic Emergency Braking. This property will
7485      * always return a valid state defined in {@link
7486      * android.car.hardware.property.LowSpeedAutomaticEmergencyBrakingState} or {@link
7487      * android.car.hardware.property.ErrorState}.
7488      *
7489      * <p>If Low Speed Automatic Emergency Braking includes collision warnings before activating the
7490      * brakes, those warnings will be surfaced through use of {@link
7491      * android.car.VehiclePropertyIds#LOW_SPEED_COLLISION_WARNING_ENABLED} and {@link
7492      * android.car.VehiclePropertyIds#LOW_SPEED_COLLISION_WARNING_STATE}.
7493      *
7494      * <p>For the global area ID (0), the {@link
7495      * android.car.hardware.property.AreaIdConfig#getSupportedEnumValues()} array obtained from
7496      * {@link android.car.hardware.CarPropertyConfig#getAreaIdConfig(int)} specifies which states
7497      * from {@link android.car.hardware.property.LowSpeedAutomaticEmergencyBrakingState} and {@link
7498      * android.car.hardware.property.ErrorState} are supported.
7499      *
7500      * <p>Property Config:
7501      * <ul>
7502      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
7503      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
7504      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
7505      *  <li>{@code Integer} property type
7506      * </ul>
7507      *
7508      * <p>Required Permission:
7509      * <ul>
7510      *  <li>Signature|Privileged permission {@link Car#PERMISSION_READ_ADAS_STATES} to read
7511      *  property.
7512      *  <li>Property is not writable.
7513      * </ul>
7514      *
7515      * @data_enum {@link android.car.hardware.property.LowSpeedAutomaticEmergencyBrakingState}
7516      * @data_enum {@link ErrorState}
7517      *
7518      * @hide
7519      */
7520     @FlaggedApi(FLAG_ANDROID_VIC_VEHICLE_PROPERTIES)
7521     @SystemApi
7522     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_ADAS_STATES))
7523     public static final int LOW_SPEED_AUTOMATIC_EMERGENCY_BRAKING_STATE = 289411110;
7524 
7525     /**
7526      * @deprecated to prevent others from instantiating this class
7527      */
7528     @Deprecated
7529     @ExcludeFromCodeCoverageGeneratedReport(reason = BOILERPLATE_CODE)
VehiclePropertyIds()7530     public VehiclePropertyIds() {
7531     }
7532 
7533     /**
7534      * Gets a user-friendly representation of a property.
7535      */
toString(int propertyId)7536     public static String toString(int propertyId) {
7537         return isDefined(propertyId) ? toName(propertyId) : "0x" + Integer.toHexString(propertyId);
7538     }
7539 }
7540