• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 com.android.car.internal.ExcludeFromCodeCoverageGeneratedReport.BOILERPLATE_CODE;
20 
21 import android.annotation.RequiresPermission;
22 import android.annotation.SystemApi;
23 import android.car.annotation.AddedInOrBefore;
24 import android.car.annotation.ApiRequirements;
25 import android.car.hardware.CarPropertyValue;
26 import android.car.hardware.property.VehicleElectronicTollCollectionCardStatus;
27 import android.car.hardware.property.VehicleElectronicTollCollectionCardType;
28 import android.util.Log;
29 import android.util.SparseArray;
30 
31 import com.android.car.internal.ExcludeFromCodeCoverageGeneratedReport;
32 
33 import java.lang.reflect.Field;
34 import java.lang.reflect.Modifier;
35 import java.util.concurrent.atomic.AtomicReference;
36 
37 /**
38  * List of vehicle property IDs.
39  *
40  * <p> Property IDs are used with the {@link android.car.hardware.property.CarPropertyManager} APIs
41  * (e.g. {@link android.car.hardware.property.CarPropertyManager#getProperty(int, int)} or {@link
42  * android.car.hardware.property.CarPropertyManager#setProperty(Class, int, int, Object)}).
43  */
44 public final class VehiclePropertyIds {
45 
46     private static final String TAG = VehiclePropertyIds.class.getSimpleName();
47 
48     /**
49      * Undefined property.
50      */
51     @AddedInOrBefore(majorVersion = 33)
52     public static final int INVALID = 0;
53     /**
54      * VIN of vehicle
55      * Requires permission: {@link Car#PERMISSION_IDENTIFICATION}.
56      */
57     @RequiresPermission(Car.PERMISSION_IDENTIFICATION)
58     @AddedInOrBefore(majorVersion = 33)
59     public static final int INFO_VIN = 286261504;
60     /**
61      * Manufacturer of vehicle.
62      *
63      * <ul>
64      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
65      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
66      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
67      *  <li>{@code String} property type
68      * </ul>
69      *
70      * <p>Requires permission: {@link Car#PERMISSION_CAR_INFO}.
71      */
72     @RequiresPermission(Car.PERMISSION_CAR_INFO)
73     @AddedInOrBefore(majorVersion = 33)
74     public static final int INFO_MAKE = 286261505;
75     /**
76      * Model of vehicle.
77      *
78      * <ul>
79      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
80      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
81      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
82      *  <li>{@code String} property type
83      * </ul>
84      *
85      * <p>Requires permission: {@link Car#PERMISSION_CAR_INFO}.
86      */
87     @RequiresPermission(Car.PERMISSION_CAR_INFO)
88     @AddedInOrBefore(majorVersion = 33)
89     public static final int INFO_MODEL = 286261506;
90     /**
91      * Model year of vehicle.
92      *
93      * <ul>
94      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
95      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
96      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
97      *  <li>{@code Integer} property type
98      * </ul>
99      *
100      * <p>Requires permission: {@link Car#PERMISSION_CAR_INFO}.
101      */
102     @RequiresPermission(Car.PERMISSION_CAR_INFO)
103     @AddedInOrBefore(majorVersion = 33)
104     public static final int INFO_MODEL_YEAR = 289407235;
105     /**
106      * Fuel capacity of the vehicle in milliliters.
107      *
108      * <ul>
109      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
110      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
111      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
112      *  <li>{@code Float} property type
113      * </ul>
114      *
115      * <p>Requires permission: {@link Car#PERMISSION_CAR_INFO}.
116      */
117     @RequiresPermission(Car.PERMISSION_CAR_INFO)
118     @AddedInOrBefore(majorVersion = 33)
119     public static final int INFO_FUEL_CAPACITY = 291504388;
120     /**
121      * List the {@link FuelType}s the vehicle may use.
122      *
123      * <ul>
124      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
125      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
126      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
127      *  <li>{@code Integer[]} property type
128      * </ul>
129      *
130      * <p>Requires permission: {@link Car#PERMISSION_CAR_INFO}.
131      */
132     @RequiresPermission(Car.PERMISSION_CAR_INFO)
133     @AddedInOrBefore(majorVersion = 33)
134     public static final int INFO_FUEL_TYPE = 289472773;
135     /**
136      * Battery capacity of the vehicle in watt-hours (Wh), if EV or hybrid. This is the nominal
137      * battery capacity when the vehicle is new.
138      *
139      * <ul>
140      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
141      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
142      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
143      *  <li>{@code Float} property type
144      * </ul>
145      *
146      * <p>Requires permission: {@link Car#PERMISSION_CAR_INFO}.
147      */
148     @RequiresPermission(Car.PERMISSION_CAR_INFO)
149     @AddedInOrBefore(majorVersion = 33)
150     public static final int INFO_EV_BATTERY_CAPACITY = 291504390;
151     /**
152      * List of {@link android.car.hardware.property.EvChargingConnectorType}s this vehicle may use.
153      *
154      * <ul>
155      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
156      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
157      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
158      *  <li>{@code Integer[]} property type
159      * </ul>
160      *
161      * <p>Requires permission: {@link Car#PERMISSION_CAR_INFO}.
162      */
163     @RequiresPermission(Car.PERMISSION_CAR_INFO)
164     @AddedInOrBefore(majorVersion = 33)
165     public static final int INFO_EV_CONNECTOR_TYPE = 289472775;
166     /**
167      * {@link PortLocationType} for the fuel door location.
168      *
169      * <ul>
170      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
171      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
172      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
173      *  <li>{@code Integer} property type
174      * </ul>
175      *
176      * <p>Requires permission: {@link Car#PERMISSION_CAR_INFO}.
177      */
178     @RequiresPermission(Car.PERMISSION_CAR_INFO)
179     @AddedInOrBefore(majorVersion = 33)
180     public static final int INFO_FUEL_DOOR_LOCATION = 289407240;
181     /**
182      * {@link PortLocationType} for the EV port location
183      *
184      * <ul>
185      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
186      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
187      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
188      *  <li>{@code Integer} property type
189      * </ul>
190      *
191      * <p>Requires permission: {@link Car#PERMISSION_CAR_INFO}.
192      */
193     @RequiresPermission(Car.PERMISSION_CAR_INFO)
194     @AddedInOrBefore(majorVersion = 33)
195     public static final int INFO_EV_PORT_LOCATION = 289407241;
196     /**
197      * List {@link PortLocationType}s for Multiple EV port locations.
198      *
199      * <ul>
200      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
201      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
202      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
203      *  <li>{@code Integer[]} property type
204      * </ul>
205      *
206      * <p>Requires permission: {@link Car#PERMISSION_CAR_INFO}.
207      */
208     @RequiresPermission(Car.PERMISSION_CAR_INFO)
209     @AddedInOrBefore(majorVersion = 33)
210     public static final int INFO_MULTI_EV_PORT_LOCATIONS = 289472780;
211     /**
212      * Driver's {@link VehicleAreaSeat} seat location.
213      *
214      * <ul>
215      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
216      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
217      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
218      *  <li>{@code Integer} property type
219      * </ul>
220      *
221      * <p>Requires permission: {@link Car#PERMISSION_CAR_INFO}.
222      */
223     @RequiresPermission(Car.PERMISSION_CAR_INFO)
224     @AddedInOrBefore(majorVersion = 33)
225     public static final int INFO_DRIVER_SEAT = 356516106;
226     /**
227      * Vehicle's exterior dimensions in millimeters.
228      *
229      * <ul>
230      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
231      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
232      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_STATIC}
233      *  <li>{@code Integer[]} property type
234      * </ul>
235      *
236      * <p>Exterior dimensions defined in the {@link CarPropertyValue#getValue()} {@code Integer[]}:
237      * <ul>
238      *  <li>Integer[0] = height
239      *  <li>Integer[1] = length
240      *  <li>Integer[2] = width
241      *  <li>Integer[3] = width including mirrors
242      *  <li>Integer[4] = wheel base
243      *  <li>Integer[5] = track width front
244      *  <li>Integer[6] = track width rear
245      *  <li>Integer[7] = curb to curb turning radius
246      * </ul>
247      *
248      * <p>Requires permission: {@link Car#PERMISSION_CAR_INFO}.
249      */
250     @RequiresPermission(Car.PERMISSION_CAR_INFO)
251     @AddedInOrBefore(majorVersion = 33)
252     public static final int INFO_EXTERIOR_DIMENSIONS = 289472779;
253     /**
254      * Current odometer value of the vehicle in kilometers.
255      * The property is protected by the signature permission: android.car.permission.CAR_MILEAGE.
256      */
257     @RequiresPermission(Car.PERMISSION_MILEAGE)
258     @AddedInOrBefore(majorVersion = 33)
259     public static final int PERF_ODOMETER = 291504644;
260     /**
261      * Speed of the vehicle in meters per second.
262      *
263      * <ul>
264      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
265      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
266      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_CONTINUOUS}
267      *  <li>{@code Float} property type
268      * </ul>
269      *
270      * <p>When the vehicle is moving forward, PERF_VEHICLE_SPEED is positive and negative when the
271      * vehicle is moving backward. Also, this value is independent of gear value (CURRENT_GEAR or
272      * GEAR_SELECTION). For example, if GEAR_SELECTION is GEAR_NEUTRAL, PERF_VEHICLE_SPEED is
273      * positive when the vehicle is moving forward, negative when moving backward, and zero when
274      * not moving.
275      *
276      * <p>Requires permission: {@link Car#PERMISSION_SPEED}.
277      */
278     @RequiresPermission(Car.PERMISSION_SPEED)
279     @AddedInOrBefore(majorVersion = 33)
280     public static final int PERF_VEHICLE_SPEED = 291504647;
281     /**
282      * Speed of the vehicle in meters per second for displays.
283      *
284      * <ul>
285      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
286      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
287      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_CONTINUOUS}
288      *  <li>{@code Float} property type
289      * </ul>
290      *
291      * <p>Some cars display a slightly slower speed than the actual speed. This is
292      * usually displayed on the speedometer.
293      *
294      * <p>Requires permission: {@link Car#PERMISSION_SPEED}.
295      */
296     @RequiresPermission(Car.PERMISSION_SPEED)
297     @AddedInOrBefore(majorVersion = 33)
298     public static final int PERF_VEHICLE_SPEED_DISPLAY = 291504648;
299     /**
300      * Front bicycle model steering angle for vehicle in degrees.
301      *
302      * Left is negative.
303      * Requires permission: {@link Car#PERMISSION_READ_STEERING_STATE}.
304      */
305     @RequiresPermission(Car.PERMISSION_READ_STEERING_STATE)
306     @AddedInOrBefore(majorVersion = 33)
307     public static final int PERF_STEERING_ANGLE = 291504649;
308     /**
309      * Rear bicycle model steering angle for vehicle in degrees.
310      *
311      * Left is negative.
312      * Requires permission: {@link Car#PERMISSION_READ_STEERING_STATE}.
313      */
314     @RequiresPermission(Car.PERMISSION_READ_STEERING_STATE)
315     @AddedInOrBefore(majorVersion = 33)
316     public static final int PERF_REAR_STEERING_ANGLE = 291504656;
317     /**
318      * Temperature of engine coolant in celsius.
319      * The property is protected by the signature permission:
320      * android.car.permission.CAR_ENGINE_DETAILED.
321      */
322     @RequiresPermission(Car.PERMISSION_CAR_ENGINE_DETAILED)
323     @AddedInOrBefore(majorVersion = 33)
324     public static final int ENGINE_COOLANT_TEMP = 291504897;
325     /**
326      * Engine oil level
327      * The property is protected by the signature permission:
328      * android.car.permission.CAR_ENGINE_DETAILED.
329      */
330     @RequiresPermission(Car.PERMISSION_CAR_ENGINE_DETAILED)
331     @AddedInOrBefore(majorVersion = 33)
332     public static final int ENGINE_OIL_LEVEL = 289407747;
333     /**
334      * Temperature of engine oil in celsius.
335      * The property is protected by the signature permission:
336      * android.car.permission.CAR_ENGINE_DETAILED.
337      */
338     @RequiresPermission(Car.PERMISSION_CAR_ENGINE_DETAILED)
339     @AddedInOrBefore(majorVersion = 33)
340     public static final int ENGINE_OIL_TEMP = 291504900;
341     /**
342      * Engine rpm
343      * The property is protected by the signature permission:
344      * android.car.permission.CAR_ENGINE_DETAILED.
345      */
346     @RequiresPermission(Car.PERMISSION_CAR_ENGINE_DETAILED)
347     @AddedInOrBefore(majorVersion = 33)
348     public static final int ENGINE_RPM = 291504901;
349     /**
350      * Reports wheel ticks.
351      *
352      * <ul>
353      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
354      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
355      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_CONTINUOUS}
356      *  <li>{@code Long[]} property type
357      * </ul>
358      *
359      * <p>The first element in the array is a reset count.  A reset indicates
360      * previous tick counts are not comparable with this and future ones.  Some
361      * sort of discontinuity in tick counting has occurred.
362      *
363      * <p>The next four elements represent ticks for individual wheels in the
364      * following order: front left, front right, rear right, rear left.  All
365      * tick counts are cumulative.  Tick counts increment when the vehicle
366      * moves forward, and decrement when vehicles moves in reverse.  The ticks
367      * should be reset to 0 when the vehicle is started by the user.
368      *
369      * <ul>
370      *  <li>Long[0] = reset count
371      *  <li>Long[1] = front left ticks
372      *  <li>Long[2] = front right ticks
373      *  <li>Long[3] = rear right ticks
374      *  <li>Long[4] = rear left ticks
375      * </ul>
376      *
377      * <p>configArray is used to indicate the micrometers-per-wheel-tick values and
378      * which wheels are supported. Each micrometers-per-wheel-tick value is static (i.e. will not
379      * update based on wheel's status) and a best approximation. For example, if a vehicle has
380      * multiple rim/tire size options, the micrometers-per-wheel-tick values are set to those for
381      * the typically expected rim/tire size. configArray is set as follows:
382      *
383      * <ul>
384      *  <li>configArray[0], bits [0:3] = supported wheels.  Uses {@link VehicleAreaWheel}.
385      *  <li>configArray[1] = micrometers per front left wheel tick
386      *  <li>configArray[2] = micrometers per front right wheel tick
387      *  <li>configArray[3] = micrometers per rear right wheel tick
388      *  <li>configArray[4] = micrometers per rear left wheel tick
389      * </ul>
390      *
391      * <p>NOTE:  If a wheel is not supported, its value is always 0.
392      *
393      * <p>Requires permission: {@link Car#PERMISSION_SPEED}.
394      */
395     @RequiresPermission(Car.PERMISSION_SPEED)
396     @AddedInOrBefore(majorVersion = 33)
397     public static final int WHEEL_TICK = 290521862;
398     /**
399      * Fuel remaining in the vehicle in milliliters.
400      *
401      * <p>Property Config:
402      * <ul>
403      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
404      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
405      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_CONTINUOUS}
406      *  <li>{@code Float} property type
407      * </ul>
408      *
409      * <p>Required Permissions:
410      * <ul>
411      *  <li>{@link Car#PERMISSION_ENERGY} to read property.
412      *  <li>Property is not writable.
413      * </ul>
414      */
415     @RequiresPermission(Car.PERMISSION_ENERGY)
416     @AddedInOrBefore(majorVersion = 33)
417     public static final int FUEL_LEVEL = 291504903;
418     /**
419      * Fuel door open.
420      *
421      * <p>Property Config:
422      * <ul>
423      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE}
424      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
425      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
426      *  <li>{@code Boolean} property type
427      * </ul>
428      *
429      * <p>Required Permissions:
430      * <ul>
431      *  <li>{@link Car#PERMISSION_ENERGY_PORTS} to read property.
432      *  <li>Signature permission, android.car.permission.CONTROL_CAR_ENERGY_PORTS, to write
433      *  property.
434      * </ul>
435      */
436     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_ENERGY_PORTS))
437     @RequiresPermission.Write(@RequiresPermission(Car.PERMISSION_CONTROL_ENERGY_PORTS))
438     @AddedInOrBefore(majorVersion = 33)
439     public static final int FUEL_DOOR_OPEN = 287310600;
440     /**
441      * EV battery level in watt-hours (Wh), if EV or hybrid.
442      *
443      * <p>Property Config:
444      * <ul>
445      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
446      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
447      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_CONTINUOUS}
448      *  <li>{@code Float} property type
449      * </ul>
450      *
451      * <p>Required Permissions:
452      * <ul>
453      *  <li>{@link Car#PERMISSION_ENERGY} to read property.
454      *  <li>Property is not writable.
455      * </ul>
456      */
457     @RequiresPermission(Car.PERMISSION_ENERGY)
458     @AddedInOrBefore(majorVersion = 33)
459     public static final int EV_BATTERY_LEVEL = 291504905;
460     /**
461      * EV charge port open.
462      *
463      * <p>Property Config:
464      * <ul>
465      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE}
466      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
467      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
468      *  <li>{@code Boolean} property type
469      * </ul>
470      *
471      * <p>Required Permissions:
472      * <ul>
473      *  <li>{@link Car#PERMISSION_ENERGY_PORTS} to read property.
474      *  <li>Signature permission, android.car.permission.CONTROL_CAR_ENERGY_PORTS, to write
475      *  property.
476      * </ul>
477      */
478     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_ENERGY_PORTS))
479     @RequiresPermission.Write(@RequiresPermission(Car.PERMISSION_CONTROL_ENERGY_PORTS))
480     @AddedInOrBefore(majorVersion = 33)
481     public static final int EV_CHARGE_PORT_OPEN = 287310602;
482     /**
483      * EV charge port connected.
484      *
485      * <p>Property Config:
486      * <ul>
487      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
488      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
489      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
490      *  <li>{@code Boolean} property type
491      * </ul>
492      *
493      * <p>Required Permissions:
494      * <ul>
495      *  <li>{@link Car#PERMISSION_ENERGY_PORTS} to read property.
496      *  <li>Property is not writable.
497      * </ul>
498      */
499     @RequiresPermission(Car.PERMISSION_ENERGY_PORTS)
500     @AddedInOrBefore(majorVersion = 33)
501     public static final int EV_CHARGE_PORT_CONNECTED = 287310603;
502     /**
503      * EV instantaneous charge rate in milliwatts.
504      *
505      * <p>Positive rate indicates battery is being charged, and Negative rate indicates battery
506      * being discharged.
507      *
508      * <p>Property Config:
509      * <ul>
510      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
511      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
512      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_CONTINUOUS}
513      *  <li>{@code Float} property type
514      * </ul>
515      *
516      * <p>Required Permissions:
517      * <ul>
518      *  <li>{@link Car#PERMISSION_ENERGY} to read property.
519      *  <li>Property is not writable.
520      * </ul>
521      */
522     @RequiresPermission(Car.PERMISSION_ENERGY)
523     @AddedInOrBefore(majorVersion = 33)
524     public static final int EV_BATTERY_INSTANTANEOUS_CHARGE_RATE = 291504908;
525     /**
526      * Range remaining in meters.
527      *
528      * <p>Range remaining accounts for all energy sources in a vehicle.  For example, a hybrid car's
529      * range will be the sum of the ranges based on fuel and battery.
530      *
531      * <p>Property Config:
532      * <ul>
533      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE}
534      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
535      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_CONTINUOUS}
536      *  <li>{@code Float} property type
537      * </ul>
538      *
539      * <p>Required Permissions:
540      * <ul>
541      *  <li>{@link Car#PERMISSION_ENERGY} to read property.
542      *  <li>Signature permission, android.car.permission.ADJUST_RANGE_REMAINING, to write property.
543      * </ul>
544      */
545     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_ENERGY))
546     @RequiresPermission.Write(@RequiresPermission(Car.PERMISSION_ADJUST_RANGE_REMAINING))
547     @AddedInOrBefore(majorVersion = 33)
548     public static final int RANGE_REMAINING = 291504904;
549     /**
550      * Tire pressure in kilopascals.
551      *
552      * min/max value indicates tire pressure sensor range.  Each tire will have a separate min/max
553      * value denoted by its areaConfig.areaId.
554      * The property is protected by the signature permission: android.car.permission.CAR_TIRES.
555      */
556     @RequiresPermission(Car.PERMISSION_TIRES)
557     @AddedInOrBefore(majorVersion = 33)
558     public static final int TIRE_PRESSURE = 392168201;
559     /**
560      * Critically low tire pressure
561      *
562      * <p>This property indicates the critically low pressure threshold for each tire. It
563      * indicates when it is time for tires to be replaced or fixed. The value
564      * must be less than or equal to minFloatValue in {@link VehiclePropertyIds#TIRE_PRESSURE}.
565      * <p>Minimum and maximum property values
566      * (that is, {@code minFloatValue}, {@code maxFloatValue}) are not applicable to this property.
567      */
568     @RequiresPermission(Car.PERMISSION_TIRES)
569     @AddedInOrBefore(majorVersion = 33)
570     public static final int CRITICALLY_LOW_TIRE_PRESSURE = 392168202;
571     /**
572      * Currently selected gear by user.
573      *
574      * <ul>
575      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
576      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
577      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
578      *  <li>{@code Integer} property type
579      * </ul>
580      *
581      * <p> See {@link VehicleGear} for gear value enum.
582      *
583      * <p>configArray represents the list of supported gears for the vehicle. For example,
584      * configArray for an EV vehicle is set as follows:
585      *
586      * <ul>
587      *  <li>configArray[0] = {@link VehicleGear#GEAR_REVERSE}
588      *  <li>configArray[1] = {@link VehicleGear#GEAR_PARK}
589      *  <li>configArray[2] = {@link VehicleGear#GEAR_DRIVE}
590      * </ul>
591      *
592      * <p>Example automatic transmission configArray:
593      *
594      * <ul>
595      *  <li>configArray[0] = {@link VehicleGear#GEAR_NEUTRAL}
596      *  <li>configArray[1] = {@link VehicleGear#GEAR_REVERSE}
597      *  <li>configArray[2] = {@link VehicleGear#GEAR_PARK}
598      *  <li>configArray[3] = {@link VehicleGear#GEAR_DRIVE}
599      *  <li>configArray[4] = {@link VehicleGear#GEAR_FIRST}
600      *  <li>configArray[5] = {@link VehicleGear#GEAR_SECOND}
601      *  <li>...
602      * </ul>
603      *
604      * <p>Example manual transmission configArray:
605      *
606      * <ul>
607      *  <li>configArray[0] = {@link VehicleGear#GEAR_NEUTRAL}
608      *  <li>configArray[1] = {@link VehicleGear#GEAR_REVERSE}
609      *  <li>configArray[4] = {@link VehicleGear#GEAR_FIRST}
610      *  <li>configArray[5] = {@link VehicleGear#GEAR_SECOND}
611      *  <li>...
612      * </ul>
613      *
614      * <p>Requires permission: {@link Car#PERMISSION_POWERTRAIN}.
615      */
616     @RequiresPermission(Car.PERMISSION_POWERTRAIN)
617     @AddedInOrBefore(majorVersion = 33)
618     public static final int GEAR_SELECTION = 289408000;
619     /**
620      * Vehicle transmission's current {@link VehicleGear}.
621      *
622      * <ul>
623      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
624      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
625      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
626      *  <li>{@code Integer} property type
627      * </ul>
628      *
629      * <p>{@code CURRENT_GEAR}'s value may not match that of {@link
630      * VehiclePropertyIds#GEAR_SELECTION}. For example, if the {@link
631      * VehiclePropertyIds#GEAR_SELECTION} is {@link VehicleGear#GEAR_DRIVE} in a vehicle with an
632      * automatic transmission, the {@code CURRENT_GEAR} will be one of {@link
633      * VehicleGear#GEAR_FIRST}, {@link VehicleGear#GEAR_SECOND}, etc, which reflects the actual gear
634      * the transmission is currently running in.
635      *
636      * <p>configArray represents the list of supported {@link VehicleGear}s for {@code
637      * CURRENT_GEAR}. For example, the configArray for an EV vehicle is set as follows:
638      *
639      * <ul>
640      *  <li>configArray[0] = {@link VehicleGear#GEAR_REVERSE}
641      *  <li>configArray[1] = {@link VehicleGear#GEAR_PARK}
642      *  <li>configArray[2] = {@link VehicleGear#GEAR_DRIVE}
643      * </ul>
644      *
645      * <p>Example automatic transmission configArray:
646      *
647      * <ul>
648      *  <li>configArray[0] = {@link VehicleGear#GEAR_NEUTRAL}
649      *  <li>configArray[1] = {@link VehicleGear#GEAR_REVERSE}
650      *  <li>configArray[2] = {@link VehicleGear#GEAR_PARK}
651      *  <li>configArray[4] = {@link VehicleGear#GEAR_FIRST}
652      *  <li>configArray[5] = {@link VehicleGear#GEAR_SECOND}
653      *  <li>...
654      * </ul>
655      *
656      * <p>Example manual transmission configArray:
657      *
658      * <ul>
659      *  <li>configArray[0] = {@link VehicleGear#GEAR_NEUTRAL}
660      *  <li>configArray[1] = {@link VehicleGear#GEAR_REVERSE}
661      *  <li>configArray[4] = {@link VehicleGear#GEAR_FIRST}
662      *  <li>configArray[5] = {@link VehicleGear#GEAR_SECOND}
663      *  <li>...
664      * </ul>
665      *
666      * <p>Requires permission: {@link Car#PERMISSION_POWERTRAIN}.
667      */
668     @RequiresPermission(Car.PERMISSION_POWERTRAIN)
669     @AddedInOrBefore(majorVersion = 33)
670     public static final int CURRENT_GEAR = 289408001;
671     /**
672      * Parking brake state.
673      *
674      * <ul>
675      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
676      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
677      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
678      *  <li>{@code Boolean} property type
679      * </ul>
680      *
681      * <p>Requires permission: {@link Car#PERMISSION_POWERTRAIN}.
682      */
683     @RequiresPermission(Car.PERMISSION_POWERTRAIN)
684     @AddedInOrBefore(majorVersion = 33)
685     public static final int PARKING_BRAKE_ON = 287310850;
686     /**
687      * Auto-apply parking brake.
688      *
689      * <ul>
690      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
691      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
692      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
693      *  <li>{@code Boolean} property type
694      * </ul>
695      *
696      * <p>Requires permission: {@link Car#PERMISSION_POWERTRAIN}.
697      */
698     @RequiresPermission(Car.PERMISSION_POWERTRAIN)
699     @AddedInOrBefore(majorVersion = 33)
700     public static final int PARKING_BRAKE_AUTO_APPLY = 287310851;
701     /**
702      * Warning for fuel low level.
703      *
704      * <p>{@code FUEL_LEVEL_LOW} corresponds to the low fuel warning on the dashboard. Once {@code
705      * FUEL_LEVEL_LOW} is set, it should not be cleared until more fuel is added to the vehicle.
706      * This property may take into account all fuel sources for a vehicle - for example:
707      * <ul>
708      *  <li>For a gas powered vehicle, this property is based solely on gas level.
709      *  <li>For a battery powered vehicle, this property is based solely on battery level.
710      *  <li>For a hybrid vehicle, this property may be based on the combination of gas and
711      *  battery levels, at the OEM's discretion.
712      * </ul>
713      *
714      * <p>Property Config:
715      * <ul>
716      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
717      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
718      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
719      *  <li>{@code Boolean} property type
720      * </ul>
721      *
722      * <p>Required Permissions:
723      * <ul>
724      *  <li>{@link Car#PERMISSION_ENERGY} to read property.
725      *  <li>Property is not writable.
726      * </ul>
727      */
728     @RequiresPermission(Car.PERMISSION_ENERGY)
729     @AddedInOrBefore(majorVersion = 33)
730     public static final int FUEL_LEVEL_LOW = 287310853;
731     /**
732      * Night mode.
733      *
734      * <ul>
735      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
736      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
737      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
738      *  <li>{@code Boolean} property type
739      * </ul>
740      *
741      * <p>True indicates that the night mode sensor has detected that the car cabin environment has
742      * low light.
743      *
744      * <p>Requires permission: {@link Car#PERMISSION_EXTERIOR_ENVIRONMENT}.
745      */
746     @RequiresPermission(Car.PERMISSION_EXTERIOR_ENVIRONMENT)
747     @AddedInOrBefore(majorVersion = 33)
748     public static final int NIGHT_MODE = 287310855;
749     /**
750      * State of the vehicles turn signals
751      * The property is protected by the signature permission:
752      * android.car.permission.CAR_EXTERIOR_LIGHTS .
753      */
754     @RequiresPermission(Car.PERMISSION_EXTERIOR_LIGHTS)
755     @AddedInOrBefore(majorVersion = 33)
756     public static final int TURN_SIGNAL_STATE = 289408008;
757     /**
758      * Vehicle's ignition state.
759      *
760      * <p>See {@link VehicleIgnitionState} for possible values for {@code IGNITION_STATE}.
761      *
762      * <p>Property Config:
763      * <ul>
764      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
765      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
766      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
767      *  <li>{@code Integer} property type
768      * </ul>
769      *
770      * <p>Required Permissions:
771      * <ul>
772      *  <li>{@link Car#PERMISSION_POWERTRAIN} to read property.
773      *  <li>Property is not writable.
774      * </ul>
775      */
776     @RequiresPermission(Car.PERMISSION_POWERTRAIN)
777     @AddedInOrBefore(majorVersion = 33)
778     public static final int IGNITION_STATE = 289408009;
779     /**
780      * ABS is active
781      * The property is protected by the signature permission:
782      * android.car.permission.CAR_DYNAMICS_STATE.
783      */
784     @RequiresPermission(Car.PERMISSION_CAR_DYNAMICS_STATE)
785     @AddedInOrBefore(majorVersion = 33)
786     public static final int ABS_ACTIVE = 287310858;
787     /**
788      * Traction Control is active
789      * The property is protected by the signature permission:
790      * android.car.permission.CAR_DYNAMICS_STATE.
791      */
792     @RequiresPermission(Car.PERMISSION_CAR_DYNAMICS_STATE)
793     @AddedInOrBefore(majorVersion = 33)
794     public static final int TRACTION_CONTROL_ACTIVE = 287310859;
795     /**
796      * Fan speed setting
797      * The property is protected by the signature permission:
798      * android.car.permission.CONTROL_CAR_CLIMATE.
799      */
800     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
801     @AddedInOrBefore(majorVersion = 33)
802     public static final int HVAC_FAN_SPEED = 356517120;
803     /**
804      * Fan direction setting
805      * The property is protected by the signature permission:
806      * android.car.permission.CONTROL_CAR_CLIMATE.
807      */
808     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
809     @AddedInOrBefore(majorVersion = 33)
810     public static final int HVAC_FAN_DIRECTION = 356517121;
811     /**
812      * HVAC current temperature in celsius.
813      * The property is protected by the signature permission:
814      * android.car.permission.CONTROL_CAR_CLIMATE.
815      */
816     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
817     @AddedInOrBefore(majorVersion = 33)
818     public static final int HVAC_TEMPERATURE_CURRENT = 358614274;
819     /**
820      * HVAC, target temperature set.
821      *
822      * <p>The {@code configArray} is used to indicate the valid values for HVAC in Fahrenheit and
823      * Celsius. Android might use it in the HVAC app UI.
824      * <p>The {@code configArray} is set as follows:
825      * <ul>
826      *      <li>{@code configArray[0]} is [the lower bound of the supported temperature in Celsius]
827      *      * 10.
828      *      <li>{@code configArray[1]} is [the upper bound of the supported temperature in Celsius]
829      *      * 10.
830      *      <li>{@code configArray[2]} is [the increment in Celsius] * 10.
831      *      <li>{@code configArray[3]} is
832      *      [the lower bound of the supported temperature in Fahrenheit] * 10.
833      *      <li>{@code configArray[4]} is
834      *      [the upper bound of the supported temperature in Fahrenheit] * 10.
835      *      <li>{@code configArray[5]} is [the increment in Fahrenheit] * 10.
836      * </ul>
837      * <p>For example, if the vehicle supports temperature values as:
838      * <pre>
839      * [16.0, 16.5, 17.0 ,..., 28.0] in Celsius
840      * [60.5, 61.5, 62.5 ,..., 85.5] in Fahrenheit
841      * </pre>
842      * <p>The {@code configArray} should be:
843      * <pre>
844      * configArray = {160, 280, 5, 605, 855, 10}.
845      * </pre>
846      * <p>If the vehicle supports {@link VehiclePropertyIds#HVAC_TEMPERATURE_VALUE_SUGGESTION},
847      * the application can use that property to get the suggested value before setting
848      * {@code HVAC_TEMPERATURE_SET}. Otherwise, the application may choose the
849      * value in {@code configArray} of {@code HVAC_TEMPERATURE_SET} by itself.
850      */
851     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
852     @AddedInOrBefore(majorVersion = 33)
853     public static final int HVAC_TEMPERATURE_SET = 358614275;
854     /**
855      * Suggested values for setting HVAC temperature.
856      *
857      * <p>Implement the property to help applications understand the closest supported temperature
858      * value in Celsius or Fahrenheit.
859      * <ul>
860      *      <li>{@code floatValues[0]} is the requested value that an application wants to set a
861      *      temperature to.
862      *      <li>{@code floatValues[1]} is the unit for {@code floatValues[0]}. It should be one of
863      *      ({@link VehicleUnit#CELSIUS}, {@link VehicleUnit#FAHRENHEIT}).
864      *      <li>{@code floatValues[2]} is the value OEMs suggested in CELSIUS. This value is not
865      *      included in the request.
866      *      <li>{@code floatValues[3]} is the value OEMs suggested in FAHRENHEIT. This value is not
867      *      included in the request.
868      * </ul>
869      * <p>An application calls
870      * {@link android.car.hardware.property.CarPropertyManager#setProperty(Class, int, int, Object)}
871      * with the requested value and unit for the value. OEMs need to return the suggested values
872      * in {@code floatValues[2]} and {@code floatValues[3]} by
873      * {@link android.car.hardware.property.CarPropertyManager.CarPropertyEventCallback}.
874      *
875      * <p>For example, when a user uses the voice assistant to set HVAC temperature to 66.2 in
876      * Fahrenheit.
877      * <p>First, an application will set this property with the value
878      * [66.2, {@link VehicleUnit#FAHRENHEIT}, 0, 0]. If OEMs suggest to set 19.0 in Celsius
879      * or 66.5 in Fahrenheit for user's request, then car must generate a callback with property
880      * value [66.2, {@link VehicleUnit#FAHRENHEIT}, 19.0, 66.5]. After the voice assistant
881      * gets the callback, it will inform the user and set HVAC temperature to the suggested value.
882      *
883      * <p>Another example, an application receives 21 Celsius as the current temperature value by
884      * querying {@link VehiclePropertyIds#HVAC_TEMPERATURE_SET}. But the application wants to know
885      * what value is displayed on the car's UI in Fahrenheit.
886      * <p>For this, the application sets the property to
887      * [21, {@link VehicleUnit#CELSIUS}, 0, 0]. If the suggested value by the OEM for 21
888      * Celsius is 70 Fahrenheit, then car must generate a callback with property value
889      * [21, {@link VehicleUnit#CELSIUS}, 21.0, 70.0]. In this case, the application can know
890      * that the value is 70.0 Fahrenheit in the car’s UI.
891      */
892     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
893     @AddedInOrBefore(majorVersion = 33)
894     public static final int HVAC_TEMPERATURE_VALUE_SUGGESTION = 291570965;
895     /**
896      * On/off defrost for designated window
897      * The property is protected by the signature permission:
898      * android.car.permission.CONTROL_CAR_CLIMATE.
899      */
900     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
901     @AddedInOrBefore(majorVersion = 33)
902     public static final int HVAC_DEFROSTER = 320865540;
903     /**
904      * On/off AC for designated areaId
905      * The property is protected by the signature permission:
906      * android.car.permission.CONTROL_CAR_CLIMATE.
907      */
908     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
909     @AddedInOrBefore(majorVersion = 33)
910     public static final int HVAC_AC_ON = 354419973;
911     /**
912      * On/off max AC
913      * The property is protected by the signature permission:
914      * android.car.permission.CONTROL_CAR_CLIMATE.
915      */
916     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
917     @AddedInOrBefore(majorVersion = 33)
918     public static final int HVAC_MAX_AC_ON = 354419974;
919     /**
920      * On/off max defrost
921      * The property is protected by the signature permission:
922      * android.car.permission.CONTROL_CAR_CLIMATE.
923      */
924     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
925     @AddedInOrBefore(majorVersion = 33)
926     public static final int HVAC_MAX_DEFROST_ON = 354419975;
927     /**
928      * Recirculation on/off
929      * The property is protected by the signature permission:
930      * android.car.permission.CONTROL_CAR_CLIMATE.
931      */
932     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
933     @AddedInOrBefore(majorVersion = 33)
934     public static final int HVAC_RECIRC_ON = 354419976;
935     /**
936      * Enable temperature coupling between areas.
937      * The property is protected by the signature permission:
938      * android.car.permission.CONTROL_CAR_CLIMATE.
939      */
940     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
941     @AddedInOrBefore(majorVersion = 33)
942     public static final int HVAC_DUAL_ON = 354419977;
943     /**
944      * On/off automatic mode
945      * The property is protected by the signature permission:
946      * android.car.permission.CONTROL_CAR_CLIMATE.
947      */
948     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
949     @AddedInOrBefore(majorVersion = 33)
950     public static final int HVAC_AUTO_ON = 354419978;
951     /**
952      * Seat heating/cooling
953      * The property is protected by the signature permission:
954      * android.car.permission.CONTROL_CAR_CLIMATE.
955      */
956     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
957     @AddedInOrBefore(majorVersion = 33)
958     public static final int HVAC_SEAT_TEMPERATURE = 356517131;
959     /**
960      * Side Mirror Heat
961      * The property is protected by the signature permission:
962      * android.car.permission.CONTROL_CAR_CLIMATE.
963      */
964     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
965     @AddedInOrBefore(majorVersion = 33)
966     public static final int HVAC_SIDE_MIRROR_HEAT = 339739916;
967     /**
968      * Steering Wheel Heating/Cooling
969      * The property is protected by the signature permission:
970      * android.car.permission.CONTROL_CAR_CLIMATE.
971      */
972     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
973     @AddedInOrBefore(majorVersion = 33)
974     public static final int HVAC_STEERING_WHEEL_HEAT = 289408269;
975     /**
976      * Temperature units for display
977      * The property is protected by the signature permission:
978      * android.car.permission.CONTROL_CAR_CLIMATE.
979      */
980     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
981     @AddedInOrBefore(majorVersion = 33)
982     public static final int HVAC_TEMPERATURE_DISPLAY_UNITS = 289408270;
983     /**
984      * Actual fan speed
985      * The property is protected by the signature permission:
986      * android.car.permission.CONTROL_CAR_CLIMATE.
987      */
988     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
989     @AddedInOrBefore(majorVersion = 33)
990     public static final int HVAC_ACTUAL_FAN_SPEED_RPM = 356517135;
991     /**
992      * Represents global power state for HVAC. Setting this property to false
993      * MAY mark some properties that control individual HVAC features/subsystems
994      * to UNAVAILABLE state. Setting this property to true MAY mark some
995      * properties that control individual HVAC features/subsystems to AVAILABLE
996      * state (unless any/all of them are UNAVAILABLE on their own individual
997      * merits).
998      * The property is protected by the signature permission:
999      * android.car.permission.CONTROL_CAR_CLIMATE.
1000      */
1001     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
1002     @AddedInOrBefore(majorVersion = 33)
1003     public static final int HVAC_POWER_ON = 354419984;
1004     /**
1005      * Fan Positions Available
1006      * The property is protected by the signature permission:
1007      * android.car.permission.CONTROL_CAR_CLIMATE.
1008      */
1009     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
1010     @AddedInOrBefore(majorVersion = 33)
1011     public static final int HVAC_FAN_DIRECTION_AVAILABLE = 356582673;
1012     /**
1013      * Automatic recirculation on/off
1014      * The property is protected by the signature permission:
1015      * android.car.permission.CONTROL_CAR_CLIMATE.
1016      */
1017     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
1018     @AddedInOrBefore(majorVersion = 33)
1019     public static final int HVAC_AUTO_RECIRC_ON = 354419986;
1020     /**
1021      * Seat ventilation
1022      * The property is protected by the signature permission:
1023      * android.car.permission.CONTROL_CAR_CLIMATE.
1024      */
1025     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
1026     @AddedInOrBefore(majorVersion = 33)
1027     public static final int HVAC_SEAT_VENTILATION = 356517139;
1028     /**
1029      * ELECTRIC DEFROSTER
1030      * The property is a read and write controllable and is protected by the signature permission:
1031      * android.car.permission.CONTROL_CAR_CLIMATE.
1032      *
1033      * @hide
1034      */
1035     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_CLIMATE)
1036     @AddedInOrBefore(majorVersion = 33)
1037     @SystemApi
1038     public static final int HVAC_ELECTRIC_DEFROSTER_ON = 320865556;
1039     /**
1040      * Distance units for display.
1041      *
1042      * <p>Indicates which units the car is using to display distances to the user.
1043      *
1044      * <p>configArray represents the list of supported units for {@code
1045      * DISTANCE_DISPLAY_UNITS}. Here is an example configArray:
1046      * <ul>
1047      *  <li>configArray[0] = {@link VehicleUnit#METER}
1048      *  <li>configArray[1] = {@link VehicleUnit#KILOMETER}
1049      *  <li>configArray[2] = {@link VehicleUnit#MILE}
1050      * </ul>
1051      *
1052      * <p>Property Config:
1053      * <ul>
1054      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE}
1055      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
1056      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1057      *  <li>{@code Integer} property type
1058      * </ul>
1059      *
1060      * <p>Required Permissions:
1061      * <ul>
1062      *  <li>{@link Car#PERMISSION_READ_DISPLAY_UNITS} to read property.
1063      *  <li>Signature permissions, android.car.permission.CONTROL_CAR_DISPLAY_UNITS and
1064      *  android.car.permission.CAR_VENDOR_EXTENSION, to write property.
1065      * </ul>
1066      */
1067     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_DISPLAY_UNITS))
1068     @RequiresPermission.Write(@RequiresPermission(allOf = {Car.PERMISSION_CONTROL_DISPLAY_UNITS,
1069             Car.PERMISSION_VENDOR_EXTENSION}))
1070     @AddedInOrBefore(majorVersion = 33)
1071     public static final int DISTANCE_DISPLAY_UNITS = 289408512;
1072     /**
1073      * Fuel volume units for display.
1074      *
1075      * <p>Indicates which units the car is using to display fuel volume to the user.
1076      *
1077      * <p>configArray represents the list of supported units for {@code
1078      * FUEL_VOLUME_DISPLAY_UNITS}. Here is an example configArray:
1079      * <ul>
1080      *  <li>configArray[0] = {@link VehicleUnit#LITER}
1081      *  <li>configArray[1] = {@link VehicleUnit#US_GALLON}
1082      * </ul>
1083      *
1084      * <p>Property Config:
1085      * <ul>
1086      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE}
1087      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
1088      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1089      *  <li>{@code Integer} property type
1090      * </ul>
1091      *
1092      * <p>Required Permissions:
1093      * <ul>
1094      *  <li>{@link Car#PERMISSION_READ_DISPLAY_UNITS} to read property.
1095      *  <li>Signature permissions, android.car.permission.CONTROL_CAR_DISPLAY_UNITS and
1096      *  android.car.permission.CAR_VENDOR_EXTENSION, to write property.
1097      * </ul>
1098      */
1099     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_DISPLAY_UNITS))
1100     @RequiresPermission.Write(@RequiresPermission(allOf = {Car.PERMISSION_CONTROL_DISPLAY_UNITS,
1101             Car.PERMISSION_VENDOR_EXTENSION}))
1102     @AddedInOrBefore(majorVersion = 33)
1103     public static final int FUEL_VOLUME_DISPLAY_UNITS = 289408513;
1104     /**
1105      * Tire pressure units for display.
1106      *
1107      * <p>Indicates which units the car is using to display tire pressure to the user.
1108      *
1109      * <p>configArray represents the list of supported units for {@code
1110      * TIRE_PRESSURE_DISPLAY_UNITS}. Here is an example configArray:
1111      * <ul>
1112      *  <li>configArray[0] = {@link VehicleUnit#KILOPASCAL}
1113      *  <li>configArray[1] = {@link VehicleUnit#PSI}
1114      *  <li>configArray[2] = {@link VehicleUnit#BAR}
1115      * </ul>
1116      *
1117      * <p>Property Config:
1118      * <ul>
1119      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE}
1120      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
1121      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1122      *  <li>{@code Integer} property type
1123      * </ul>
1124      *
1125      * <p>Required Permissions:
1126      * <ul>
1127      *  <li>{@link Car#PERMISSION_READ_DISPLAY_UNITS} to read property.
1128      *  <li>Signature permissions, android.car.permission.CONTROL_CAR_DISPLAY_UNITS and
1129      *  android.car.permission.CAR_VENDOR_EXTENSION, to write property.
1130      * </ul>
1131      */
1132     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_DISPLAY_UNITS))
1133     @RequiresPermission.Write(@RequiresPermission(allOf = {Car.PERMISSION_CONTROL_DISPLAY_UNITS,
1134             Car.PERMISSION_VENDOR_EXTENSION}))
1135     @AddedInOrBefore(majorVersion = 33)
1136     public static final int TIRE_PRESSURE_DISPLAY_UNITS = 289408514;
1137     /**
1138      * EV battery units for display.
1139      *
1140      * <p>Indicates which units the vehicle is using to display EV battery information to the user.
1141      *
1142      * <p>configArray represents the list of supported units for {@code
1143      * EV_BATTERY_DISPLAY_UNITS}. Here is an example configArray:
1144      * <ul>
1145      *  <li>configArray[0] = {@link VehicleUnit#WATT_HOUR}
1146      *  <li>configArray[1] = {@link VehicleUnit#AMPERE_HOURS}
1147      *  <li>configArray[2] = {@link VehicleUnit#KILOWATT_HOUR}
1148      * </ul>
1149      *
1150      * <p>Property Config:
1151      * <ul>
1152      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE}
1153      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
1154      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1155      *  <li>{@code Integer} property type
1156      * </ul>
1157      *
1158      * <p>Required Permissions:
1159      * <ul>
1160      *  <li>{@link Car#PERMISSION_READ_DISPLAY_UNITS} to read property.
1161      *  <li>Signature permissions, android.car.permission.CONTROL_CAR_DISPLAY_UNITS and
1162      *  android.car.permission.CAR_VENDOR_EXTENSION, to write property.
1163      * </ul>
1164      */
1165     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_DISPLAY_UNITS))
1166     @RequiresPermission.Write(@RequiresPermission(allOf = {Car.PERMISSION_CONTROL_DISPLAY_UNITS,
1167             Car.PERMISSION_VENDOR_EXTENSION}))
1168     @AddedInOrBefore(majorVersion = 33)
1169     public static final int EV_BATTERY_DISPLAY_UNITS = 289408515;
1170     /**
1171      * Speed units for display.
1172      *
1173      * <p>Indicates type of units the vehicle is using to display speed to user.
1174      *
1175      * <p>configArray represents the list of supported units for {@code
1176      * VEHICLE_SPEED_DISPLAY_UNITS}. Here is an example configArray:
1177      * <ul>
1178      *  <li>configArray[0] = {@link VehicleUnit#METER_PER_SEC}
1179      *  <li>configArray[1] = {@link VehicleUnit#MILES_PER_HOUR}
1180      *  <li>configArray[2] = {@link VehicleUnit#KILOMETERS_PER_HOUR}
1181      * </ul>
1182      *
1183      * <p>Property Config:
1184      * <ul>
1185      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE}
1186      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
1187      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1188      *  <li>{@code Integer} property type
1189      * </ul>
1190      *
1191      * <p>Required Permissions:
1192      * <ul>
1193      *  <li>{@link Car#PERMISSION_READ_DISPLAY_UNITS} to read property.
1194      *  <li>Signature permissions, android.car.permission.CONTROL_CAR_DISPLAY_UNITS and
1195      *  android.car.permission.CAR_VENDOR_EXTENSION, to write property.
1196      * </ul>
1197      */
1198     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_DISPLAY_UNITS))
1199     @RequiresPermission.Write(@RequiresPermission(allOf = {Car.PERMISSION_CONTROL_DISPLAY_UNITS,
1200             Car.PERMISSION_VENDOR_EXTENSION}))
1201     @AddedInOrBefore(majorVersion = 33)
1202     public static final int VEHICLE_SPEED_DISPLAY_UNITS = 289408516;
1203     /**
1204      * Fuel consumption units for display.
1205      *
1206      * <p>Indicates type of units the car is using to display fuel consumption information to user.
1207      *
1208      * <p>{@code true} indicates units are distance over volume such as MPG.
1209      *
1210      * <p>{@code false} indicates units are volume over distance such as L/100KM.
1211      *
1212      * <p>Property Config:
1213      * <ul>
1214      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE}
1215      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
1216      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
1217      *  <li>{@code Boolean} property type
1218      * </ul>
1219      *
1220      * <p>Required Permissions:
1221      * <ul>
1222      *  <li>{@link Car#PERMISSION_READ_DISPLAY_UNITS} to read property.
1223      *  <li>Signature permissions, android.car.permission.CONTROL_CAR_DISPLAY_UNITS and
1224      *  android.car.permission.CAR_VENDOR_EXTENSION, to write property.
1225      * </ul>
1226      */
1227     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_READ_DISPLAY_UNITS))
1228     @RequiresPermission.Write(@RequiresPermission(allOf = {Car.PERMISSION_CONTROL_DISPLAY_UNITS,
1229             Car.PERMISSION_VENDOR_EXTENSION}))
1230     @AddedInOrBefore(majorVersion = 33)
1231     public static final int FUEL_CONSUMPTION_UNITS_DISTANCE_OVER_VOLUME = 287311364;
1232     /**
1233      * Outside temperature in celsius.
1234      *
1235      * <ul>
1236      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
1237      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
1238      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_CONTINUOUS}
1239      *  <li>{@code Float} property type
1240      * </ul>
1241      *
1242      * <p>Requires permission: {@link Car#PERMISSION_EXTERIOR_ENVIRONMENT}.
1243      */
1244     @RequiresPermission(Car.PERMISSION_EXTERIOR_ENVIRONMENT)
1245     @AddedInOrBefore(majorVersion = 33)
1246     public static final int ENV_OUTSIDE_TEMPERATURE = 291505923;
1247     /**
1248      * Property to control power state of application processor
1249      *
1250      * It is assumed that AP's power state is controller by separate power
1251      * controller.
1252      * The property is protected by the signature permission: android.car.permission.CAR_POWER.
1253      */
1254     @RequiresPermission(Car.PERMISSION_CAR_POWER)
1255     @AddedInOrBefore(majorVersion = 33)
1256     public static final int AP_POWER_STATE_REQ = 289475072;
1257     /**
1258      * Property to report power state of application processor
1259      *
1260      * It is assumed that AP's power state is controller by separate power
1261      * controller.
1262      * The property is protected by the signature permission: android.car.permission.CAR_POWER.
1263      */
1264     @RequiresPermission(Car.PERMISSION_CAR_POWER)
1265     @AddedInOrBefore(majorVersion = 33)
1266     public static final int AP_POWER_STATE_REPORT = 289475073;
1267     /**
1268      * Property to report bootup reason for the current power on. This is a
1269      * static property that will not change for the whole duration until power
1270      * off. For example, even if user presses power on button after automatic
1271      * power on with door unlock, bootup reason must stay with
1272      * VehicleApPowerBootupReason#USER_UNLOCK.
1273      * The property is protected by the signature permission: android.car.permission.CAR_POWER.
1274      */
1275     @RequiresPermission(Car.PERMISSION_CAR_POWER)
1276     @AddedInOrBefore(majorVersion = 33)
1277     public static final int AP_POWER_BOOTUP_REASON = 289409538;
1278     /**
1279      * Property to represent brightness of the display. Some cars have single
1280      * control for the brightness of all displays and this property is to share
1281      * change in that control.
1282      * The property is protected by the signature permission: android.car.permission.CAR_POWER.
1283      */
1284     @RequiresPermission(Car.PERMISSION_CAR_POWER)
1285     @AddedInOrBefore(majorVersion = 33)
1286     public static final int DISPLAY_BRIGHTNESS = 289409539;
1287     /**
1288      * Property to feed H/W input events to android
1289      */
1290     @AddedInOrBefore(majorVersion = 33)
1291     public static final int HW_KEY_INPUT = 289475088;
1292     /**
1293      * Door position
1294      *
1295      * This is an integer in case a door may be set to a particular position.
1296      * Max value indicates fully open, min value (0) indicates fully closed.
1297      * The property is protected by the signature permission:
1298      * android.car.permission.CONTROL_CAR_DOORS.
1299      */
1300     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_DOORS)
1301     @AddedInOrBefore(majorVersion = 33)
1302     public static final int DOOR_POS = 373295872;
1303     /**
1304      * Door move
1305      * The property is protected by the signature permission:
1306      * android.car.permission.CONTROL_CAR_DOORS.
1307      */
1308     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_DOORS)
1309     @AddedInOrBefore(majorVersion = 33)
1310     public static final int DOOR_MOVE = 373295873;
1311     /**
1312      * Door lock
1313      * The property is protected by the signature permission:
1314      * android.car.permission.CONTROL_CAR_DOORS.
1315      */
1316     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_DOORS)
1317     @AddedInOrBefore(majorVersion = 33)
1318     public static final int DOOR_LOCK = 371198722;
1319     /**
1320      * Mirror Z Position
1321      * The property is protected by the signature permission:
1322      * android.car.permission.CONTROL_CAR_MIRRORS.
1323      */
1324     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_MIRRORS)
1325     @AddedInOrBefore(majorVersion = 33)
1326     public static final int MIRROR_Z_POS = 339741504;
1327     /**
1328      * Mirror Z Move
1329      * The property is protected by the signature permission:
1330      * android.car.permission.CONTROL_CAR_MIRRORS.
1331      */
1332     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_MIRRORS)
1333     @AddedInOrBefore(majorVersion = 33)
1334     public static final int MIRROR_Z_MOVE = 339741505;
1335     /**
1336      * Mirror Y Position
1337      * The property is protected by the signature permission:
1338      * android.car.permission.CONTROL_CAR_MIRRORS.
1339      */
1340     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_MIRRORS)
1341     @AddedInOrBefore(majorVersion = 33)
1342     public static final int MIRROR_Y_POS = 339741506;
1343     /**
1344      * Mirror Y Move
1345      * The property is protected by the signature permission:
1346      * android.car.permission.CONTROL_CAR_MIRRORS.
1347      */
1348     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_MIRRORS)
1349     @AddedInOrBefore(majorVersion = 33)
1350     public static final int MIRROR_Y_MOVE = 339741507;
1351     /**
1352      * Mirror Lock
1353      * The property is protected by the signature permission:
1354      * android.car.permission.CONTROL_CAR_MIRRORS.
1355      */
1356     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_MIRRORS)
1357     @AddedInOrBefore(majorVersion = 33)
1358     public static final int MIRROR_LOCK = 287312708;
1359     /**
1360      * Mirror Fold
1361      * The property is protected by the signature permission:
1362      * android.car.permission.CONTROL_CAR_MIRRORS.
1363      */
1364     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_MIRRORS)
1365     @AddedInOrBefore(majorVersion = 33)
1366     public static final int MIRROR_FOLD = 287312709;
1367     /**
1368      * Seat memory select
1369      *
1370      * This parameter selects the memory preset to use to select the seat
1371      * position. The minValue is always 0, and the maxValue determines the
1372      * number of seat positions available.
1373      * The property is protected by the signature permission:
1374      * android.car.permission.CONTROL_CAR_SEATS.
1375      */
1376     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
1377     @AddedInOrBefore(majorVersion = 33)
1378     public static final int SEAT_MEMORY_SELECT = 356518784;
1379     /**
1380      * Seat memory set
1381      *
1382      * This setting allows the user to save the current seat position settings
1383      * into the selected preset slot.  The maxValue for each seat position
1384      * must match the maxValue for SEAT_MEMORY_SELECT.
1385      * The property is protected by the signature permission:
1386      * android.car.permission.CONTROL_CAR_SEATS.
1387      */
1388     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
1389     @AddedInOrBefore(majorVersion = 33)
1390     public static final int SEAT_MEMORY_SET = 356518785;
1391     /**
1392      * Seatbelt buckled
1393      *
1394      * True indicates belt is buckled.
1395      * The property is protected by the signature permission:
1396      * android.car.permission.CONTROL_CAR_SEATS.
1397      */
1398     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
1399     @AddedInOrBefore(majorVersion = 33)
1400     public static final int SEAT_BELT_BUCKLED = 354421634;
1401     /**
1402      * Seatbelt height position
1403      * The property is protected by the signature permission:
1404      * android.car.permission.CONTROL_CAR_SEATS.
1405      */
1406     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
1407     @AddedInOrBefore(majorVersion = 33)
1408     public static final int SEAT_BELT_HEIGHT_POS = 356518787;
1409     /**
1410      * Seatbelt height move
1411      * The property is protected by the signature permission:
1412      * android.car.permission.CONTROL_CAR_SEATS.
1413      */
1414     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
1415     @AddedInOrBefore(majorVersion = 33)
1416     public static final int SEAT_BELT_HEIGHT_MOVE = 356518788;
1417     /**
1418      * Seat fore/aft position
1419      * The property is protected by the signature permission:
1420      * android.car.permission.CONTROL_CAR_SEATS.
1421      */
1422     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
1423     @AddedInOrBefore(majorVersion = 33)
1424     public static final int SEAT_FORE_AFT_POS = 356518789;
1425     /**
1426      * Seat fore/aft move
1427      * The property is protected by the signature permission:
1428      * android.car.permission.CONTROL_CAR_SEATS.
1429      */
1430     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
1431     @AddedInOrBefore(majorVersion = 33)
1432     public static final int SEAT_FORE_AFT_MOVE = 356518790;
1433     /**
1434      * Seat backrest angle 1 position
1435      * The property is protected by the signature permission:
1436      * android.car.permission.CONTROL_CAR_SEATS.
1437      */
1438     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
1439     @AddedInOrBefore(majorVersion = 33)
1440     public static final int SEAT_BACKREST_ANGLE_1_POS = 356518791;
1441     /**
1442      * Seat backrest angle 1 move
1443      *
1444      * Moves the backrest forward or recline.
1445      * The property is protected by the signature permission:
1446      * android.car.permission.CONTROL_CAR_SEATS.
1447      */
1448     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
1449     @AddedInOrBefore(majorVersion = 33)
1450     public static final int SEAT_BACKREST_ANGLE_1_MOVE = 356518792;
1451     /**
1452      * Seat backrest angle 2 position
1453      * The property is protected by the signature permission:
1454      * android.car.permission.CONTROL_CAR_SEATS.
1455      */
1456     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
1457     @AddedInOrBefore(majorVersion = 33)
1458     public static final int SEAT_BACKREST_ANGLE_2_POS = 356518793;
1459     /**
1460      * Seat backrest angle 2 move
1461      * The property is protected by the signature permission:
1462      * android.car.permission.CONTROL_CAR_SEATS.
1463      */
1464     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
1465     @AddedInOrBefore(majorVersion = 33)
1466     public static final int SEAT_BACKREST_ANGLE_2_MOVE = 356518794;
1467     /**
1468      * Seat height position
1469      * The property is protected by the signature permission:
1470      * android.car.permission.CONTROL_CAR_SEATS.
1471      */
1472     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
1473     @AddedInOrBefore(majorVersion = 33)
1474     public static final int SEAT_HEIGHT_POS = 356518795;
1475     /**
1476      * Seat height move
1477      * The property is protected by the signature permission:
1478      * android.car.permission.CONTROL_CAR_SEATS.
1479      */
1480     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
1481     @AddedInOrBefore(majorVersion = 33)
1482     public static final int SEAT_HEIGHT_MOVE = 356518796;
1483     /**
1484      * Seat depth position
1485      * The property is protected by the signature permission:
1486      * android.car.permission.CONTROL_CAR_SEATS.
1487      */
1488     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
1489     @AddedInOrBefore(majorVersion = 33)
1490     public static final int SEAT_DEPTH_POS = 356518797;
1491     /**
1492      * Seat depth move
1493      * The property is protected by the signature permission:
1494      * android.car.permission.CONTROL_CAR_SEATS.
1495      */
1496     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
1497     @AddedInOrBefore(majorVersion = 33)
1498     public static final int SEAT_DEPTH_MOVE = 356518798;
1499     /**
1500      * Seat tilt position
1501      * The property is protected by the signature permission:
1502      * android.car.permission.CONTROL_CAR_SEATS.
1503      */
1504     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
1505     @AddedInOrBefore(majorVersion = 33)
1506     public static final int SEAT_TILT_POS = 356518799;
1507     /**
1508      * Seat tilt move
1509      * The property is protected by the signature permission:
1510      * android.car.permission.CONTROL_CAR_SEATS.
1511      */
1512     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
1513     @AddedInOrBefore(majorVersion = 33)
1514     public static final int SEAT_TILT_MOVE = 356518800;
1515     /**
1516      * Lumber fore/aft position
1517      * The property is protected by the signature permission:
1518      * android.car.permission.CONTROL_CAR_SEATS.
1519      */
1520     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
1521     @AddedInOrBefore(majorVersion = 33)
1522     public static final int SEAT_LUMBAR_FORE_AFT_POS = 356518801;
1523     /**
1524      * Lumbar fore/aft move
1525      * The property is protected by the signature permission:
1526      * android.car.permission.CONTROL_CAR_SEATS.
1527      */
1528     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
1529     @AddedInOrBefore(majorVersion = 33)
1530     public static final int SEAT_LUMBAR_FORE_AFT_MOVE = 356518802;
1531     /**
1532      * Lumbar side support position
1533      * The property is protected by the signature permission:
1534      * android.car.permission.CONTROL_CAR_SEATS.
1535      */
1536     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
1537     @AddedInOrBefore(majorVersion = 33)
1538     public static final int SEAT_LUMBAR_SIDE_SUPPORT_POS = 356518803;
1539     /**
1540      * Lumbar side support move
1541      * The property is protected by the signature permission:
1542      * android.car.permission.CONTROL_CAR_SEATS.
1543      */
1544     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
1545     @AddedInOrBefore(majorVersion = 33)
1546     public static final int SEAT_LUMBAR_SIDE_SUPPORT_MOVE = 356518804;
1547     /**
1548      * Headrest height position
1549      * The property is protected by the signature permission:
1550      * android.car.permission.CONTROL_CAR_SEATS.
1551      */
1552     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
1553     @AddedInOrBefore(majorVersion = 33)
1554     public static final int SEAT_HEADREST_HEIGHT_POS = 289409941;
1555     /**
1556      * Headrest height move
1557      * The property is protected by the signature permission:
1558      * android.car.permission.CONTROL_CAR_SEATS.
1559      */
1560     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
1561     @AddedInOrBefore(majorVersion = 33)
1562     public static final int SEAT_HEADREST_HEIGHT_MOVE = 356518806;
1563     /**
1564      * Headrest angle position
1565      * The property is protected by the signature permission:
1566      * android.car.permission.CONTROL_CAR_SEATS.
1567      */
1568     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
1569     @AddedInOrBefore(majorVersion = 33)
1570     public static final int SEAT_HEADREST_ANGLE_POS = 356518807;
1571     /**
1572      * Headrest angle move
1573      * The property is protected by the signature permission:
1574      * android.car.permission.CONTROL_CAR_SEATS.
1575      */
1576     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
1577     @AddedInOrBefore(majorVersion = 33)
1578     public static final int SEAT_HEADREST_ANGLE_MOVE = 356518808;
1579     /**
1580      * Headrest fore/aft position
1581      * The property is protected by the signature permission:
1582      * android.car.permission.CONTROL_CAR_SEATS.
1583      */
1584     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
1585     @AddedInOrBefore(majorVersion = 33)
1586     public static final int SEAT_HEADREST_FORE_AFT_POS = 356518809;
1587     /**
1588      * Headrest fore/aft move
1589      * The property is protected by the signature permission:
1590      * android.car.permission.CONTROL_CAR_SEATS.
1591      */
1592     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
1593     @AddedInOrBefore(majorVersion = 33)
1594     public static final int SEAT_HEADREST_FORE_AFT_MOVE = 356518810;
1595     /**
1596      * Seat Occupancy
1597      * The property is protected by the signature permission:
1598      * android.car.permission.CONTROL_CAR_SEATS.
1599      */
1600     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_SEATS)
1601     @AddedInOrBefore(majorVersion = 33)
1602     public static final int SEAT_OCCUPANCY = 356518832;
1603     /**
1604      * Window Position
1605      * The property is protected by the signature permission:
1606      * android.car.permission.CONTROL_CAR_WINDOWS
1607      */
1608     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_WINDOWS)
1609     @AddedInOrBefore(majorVersion = 33)
1610     public static final int WINDOW_POS = 322964416;
1611     /**
1612      * Window Move
1613      * The property is protected by the signature permission:
1614      * android.car.permission.CONTROL_CAR_WINDOWS
1615      */
1616     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_WINDOWS)
1617     @AddedInOrBefore(majorVersion = 33)
1618     public static final int WINDOW_MOVE = 322964417;
1619     /**
1620      * Window Lock
1621      * The property is protected by the signature permission:
1622      * android.car.permission.CONTROL_CAR_WINDOWS
1623      */
1624     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_WINDOWS)
1625     @AddedInOrBefore(majorVersion = 33)
1626     public static final int WINDOW_LOCK = 320867268;
1627     /**
1628      * Vehicle Maps Service (VMS) message
1629      * The property is protected by the signature permissions:
1630      * android.car.permission.VMS_PUBLISHER and android.car.permission.VMS_SUBSCRIBER.
1631      */
1632     @RequiresPermission(anyOf = {Car.PERMISSION_VMS_PUBLISHER, Car.PERMISSION_VMS_SUBSCRIBER})
1633     @AddedInOrBefore(majorVersion = 33)
1634     public static final int VEHICLE_MAP_SERVICE = 299895808;
1635     /**
1636      * OBD2 Live Sensor Data
1637      *
1638      * Reports a snapshot of the current (live) values of the OBD2 sensors available.
1639      * The property is protected by the signature permission:
1640      * android.car.permission.CAR_DIAGNOSTICS.
1641      */
1642     @RequiresPermission(Car.PERMISSION_CAR_DIAGNOSTIC_READ_ALL)
1643     @AddedInOrBefore(majorVersion = 33)
1644     public static final int OBD2_LIVE_FRAME = 299896064;
1645     /**
1646      * OBD2 Freeze Frame Sensor Data
1647      *
1648      * Reports a snapshot of the value of the OBD2 sensors available at the time that a fault
1649      * occurred and was detected.
1650      * The property is protected by the signature permission:
1651      * android.car.permission.CAR_DIAGNOSTICS.
1652      */
1653     @RequiresPermission(Car.PERMISSION_CAR_DIAGNOSTIC_READ_ALL)
1654     @AddedInOrBefore(majorVersion = 33)
1655     public static final int OBD2_FREEZE_FRAME = 299896065;
1656     /**
1657      * OBD2 Freeze Frame Information
1658      * The property is protected by the signature permission:
1659      * android.car.permission.CAR_DIAGNOSTICS.
1660      */
1661     @RequiresPermission(Car.PERMISSION_CAR_DIAGNOSTIC_READ_ALL)
1662     @AddedInOrBefore(majorVersion = 33)
1663     public static final int OBD2_FREEZE_FRAME_INFO = 299896066;
1664     /**
1665      * OBD2 Freeze Frame Clear
1666      *
1667      * This property allows deletion of any of the freeze frames stored in
1668      * vehicle memory, as described by OBD2_FREEZE_FRAME_INFO.
1669      * The property is protected by the signature permission:
1670      * android.car.permission.CLEAR_CAR_DIAGNOSTICS.
1671      */
1672     @RequiresPermission(Car.PERMISSION_CAR_DIAGNOSTIC_CLEAR)
1673     @AddedInOrBefore(majorVersion = 33)
1674     public static final int OBD2_FREEZE_FRAME_CLEAR = 299896067;
1675     /**
1676      * Headlights State
1677      * The property is protected by the signature permission:
1678      * android.car.permission.CAR_EXTERIOR_LIGHTS.
1679      */
1680     @RequiresPermission(Car.PERMISSION_EXTERIOR_LIGHTS)
1681     @AddedInOrBefore(majorVersion = 33)
1682     public static final int HEADLIGHTS_STATE = 289410560;
1683     /**
1684      * High beam lights state
1685      * The property is protected by the signature permission:
1686      * android.car.permission.CAR_EXTERIOR_LIGHTS.
1687      */
1688     @RequiresPermission(Car.PERMISSION_EXTERIOR_LIGHTS)
1689     @AddedInOrBefore(majorVersion = 33)
1690     public static final int HIGH_BEAM_LIGHTS_STATE = 289410561;
1691     /**
1692      * Fog light state
1693      *
1694      * If the car has both front and rear fog lights:
1695      * If front and rear fog lights can only be controlled together: FOG_LIGHTS_STATE provides
1696      * the state of fog lights.
1697      *
1698      * If front and rear fog lights can only be controlled independently: FRONT_FOG_LIGHTS_STATE
1699      * and REAR_FOG_LIGHTS_STATE provide the state of front, rear fog lights respectively.
1700      *
1701      * If the car has only front fog lights:
1702      * Only one of FOG_LIGHTS_STATE or FRONT_FOG_LIGHTS_STATE will be implemented in the car. The
1703      * implemented property provides the state of the front fog lights.
1704      *
1705      * If the car has only rear fog lights:
1706      * Only one of FOG_LIGHTS_STATE or REAR_FOG_LIGHTS_STATE will be implemented in the car. The
1707      * implemented property provides the state of the rear fog lights.
1708      *
1709      * The property is protected by the privileged|signature permission:
1710      * android.car.permission.CAR_EXTERIOR_LIGHTS.
1711      */
1712     @RequiresPermission(Car.PERMISSION_EXTERIOR_LIGHTS)
1713     @AddedInOrBefore(majorVersion = 33)
1714     public static final int FOG_LIGHTS_STATE = 289410562;
1715     /**
1716      * Hazard light status
1717      * The property is protected by the signature permission:
1718      * android.car.permission.CAR_EXTERIOR_LIGHTS.
1719      */
1720     @RequiresPermission(Car.PERMISSION_EXTERIOR_LIGHTS)
1721     @AddedInOrBefore(majorVersion = 33)
1722     public static final int HAZARD_LIGHTS_STATE = 289410563;
1723     /**
1724      * Headlight switch
1725      * The property is protected by the signature permission:
1726      * android.car.permission.CAR_EXTERIOR_LIGHTS.
1727      */
1728     @RequiresPermission(Car.PERMISSION_CONTROL_EXTERIOR_LIGHTS)
1729     @AddedInOrBefore(majorVersion = 33)
1730     public static final int HEADLIGHTS_SWITCH = 289410576;
1731     /**
1732      * High beam light switch
1733      * The property is protected by the signature permission:
1734      * android.car.permission.CAR_EXTERIOR_LIGHTS.
1735      */
1736     @RequiresPermission(Car.PERMISSION_CONTROL_EXTERIOR_LIGHTS)
1737     @AddedInOrBefore(majorVersion = 33)
1738     public static final int HIGH_BEAM_LIGHTS_SWITCH = 289410577;
1739     /**
1740      * Fog light switch
1741      *
1742      * If the car has both front and rear fog lights:
1743      * If front and rear fog lights can only be controlled together: FOG_LIGHTS_SWITCH should be
1744      * used to change the fog lights state.
1745      *
1746      * If front and rear fog lights can only be controlled independently: FRONT_FOG_LIGHTS_SWITCH
1747      * and REAR_FOG_LIGHTS_SWITCH should be used to change the front, rear fog lights state
1748      * respectively.
1749      *
1750      * If the car has only front fog lights:
1751      * Only one of FOG_LIGHTS_SWITCH or FRONT_FOG_LIGHTS_SWITCH will be implemented in the car. The
1752      * implemented property should be used to change the front fog lights state.
1753      *
1754      * If the car has only rear fog lights:
1755      * Only one of FOG_LIGHTS_SWITCH or REAR_FOG_LIGHTS_SWITCH will be implemented in the car. The
1756      * implemented property should be used to change the rear fog lights state.
1757      *
1758      * The property is protected by the privileged|signature permission:
1759      * android.car.permission.CONTROL_CAR_EXTERIOR_LIGHTS.
1760      */
1761     @RequiresPermission(Car.PERMISSION_CONTROL_EXTERIOR_LIGHTS)
1762     @AddedInOrBefore(majorVersion = 33)
1763     public static final int FOG_LIGHTS_SWITCH = 289410578;
1764     /**
1765      * Hazard light switch
1766      * The property is protected by the signature permission:
1767      * android.car.permission.CAR_EXTERIOR_LIGHTS.
1768      */
1769     @RequiresPermission(Car.PERMISSION_CONTROL_EXTERIOR_LIGHTS)
1770     @AddedInOrBefore(majorVersion = 33)
1771     public static final int HAZARD_LIGHTS_SWITCH = 289410579;
1772     /**
1773      * Cabin lights
1774      * Requires permission: {@link Car#PERMISSION_READ_INTERIOR_LIGHTS}.
1775      */
1776     @RequiresPermission(Car.PERMISSION_READ_INTERIOR_LIGHTS)
1777     @AddedInOrBefore(majorVersion = 33)
1778     public static final int CABIN_LIGHTS_STATE = 289410817;
1779     /**
1780      * Cabin lights switch
1781      * Requires permission: {@link Car#PERMISSION_CONTROL_INTERIOR_LIGHTS}.
1782      */
1783     @RequiresPermission(Car.PERMISSION_CONTROL_INTERIOR_LIGHTS)
1784     @AddedInOrBefore(majorVersion = 33)
1785     public static final int CABIN_LIGHTS_SWITCH = 289410818;
1786     /**
1787      * Reading lights
1788      * Requires permission: {@link Car#PERMISSION_READ_INTERIOR_LIGHTS}.
1789      */
1790     @RequiresPermission(Car.PERMISSION_READ_INTERIOR_LIGHTS)
1791     @AddedInOrBefore(majorVersion = 33)
1792     public static final int READING_LIGHTS_STATE = 356519683;
1793     /**
1794      * Reading lights switch
1795      * Requires permission: {@link Car#PERMISSION_CONTROL_INTERIOR_LIGHTS}.
1796      */
1797     @RequiresPermission(Car.PERMISSION_CONTROL_INTERIOR_LIGHTS)
1798     @AddedInOrBefore(majorVersion = 33)
1799     public static final int READING_LIGHTS_SWITCH = 356519684;
1800 
1801     /**
1802      * Property to get the initial settings for multi-user management (such as initial user).
1803      *
1804      * <p>Doesn't require permission because it's not exposed through
1805      * {@link android.car.hardware.property.CarPropertyManager}.
1806      *
1807      * @hide
1808      */
1809     @AddedInOrBefore(majorVersion = 33)
1810     public static final int INITIAL_USER_INFO = 299896583;
1811 
1812     /**
1813      * Property to switch user for multi-user management.
1814      *
1815      * <p>Doesn't require permission because it's not exposed through
1816      * {@link android.car.hardware.property.CarPropertyManager}.
1817      *
1818      * @hide
1819      */
1820     @AddedInOrBefore(majorVersion = 33)
1821     public static final int SWITCH_USER = 299896584;
1822 
1823     /**
1824      * Property to create a new user for multi-user management.
1825      *
1826      * <p>Doesn't require permission because it's not exposed through
1827      * {@link android.car.hardware.property.CarPropertyManager}.
1828      *
1829      * @hide
1830      */
1831     @AddedInOrBefore(majorVersion = 33)
1832     public static final int CREATE_USER = 299896585;
1833 
1834     /**
1835      * Property to remove a new user for multi-user management.
1836      *
1837      * <p>Doesn't require permission because it's not exposed through
1838      * {@link android.car.hardware.property.CarPropertyManager}.
1839      *
1840      * @hide
1841      */
1842     @AddedInOrBefore(majorVersion = 33)
1843     public static final int REMOVE_USER = 299896586;
1844 
1845     /**
1846      * Property to get / set the user authentication types associated with an Android user.
1847      *
1848      * <p>Doesn't require permission because it's not exposed through
1849      * {@link android.car.hardware.property.CarPropertyManager}.
1850      *
1851      * @hide
1852      */
1853     @AddedInOrBefore(majorVersion = 33)
1854     public static final int USER_IDENTIFICATION_ASSOCIATION = 299896587;
1855 
1856     /**
1857      * Property for VHAL to apply power policy.
1858      *
1859      * <p>Doesn't require permission because it's not exposed through
1860      * {@link android.car.hardware.property.CarPropertyManager}.
1861      *
1862      * @hide
1863      */
1864     @AddedInOrBefore(majorVersion = 33)
1865     public static final int POWER_POLICY_REQ = 286265121;
1866 
1867     /**
1868      * Property for VHAL to set the default power policies per power status transition.
1869      *
1870      * <p>Doesn't require permission because it's not exposed through
1871      * {@link android.car.hardware.property.CarPropertyManager}.
1872      *
1873      * @hide
1874      */
1875     @AddedInOrBefore(majorVersion = 33)
1876     public static final int POWER_POLICY_GROUP_REQ = 286265122;
1877 
1878     /**
1879      * Property to report a new current power policy to VHAL.
1880      *
1881      * <p>Doesn't require permission because it's not exposed through
1882      * {@link android.car.hardware.property.CarPropertyManager}.
1883      *
1884      * @hide
1885      */
1886     @AddedInOrBefore(majorVersion = 33)
1887     public static final int CURRENT_POWER_POLICY = 286265123;
1888 
1889     /**
1890      * Property to report that car watchdog is alive.
1891      *
1892      * <p>Doesn't require permission because it's not exposed through
1893      * {@link android.car.hardware.property.CarPropertyManager}.
1894      *
1895      * @hide
1896      */
1897     @AddedInOrBefore(majorVersion = 33)
1898     public static final int WATCHDOG_ALIVE = 290459441;
1899 
1900     /**
1901      * Property to report a process terminated by car watchdog.
1902      *
1903      * <p>Doesn't require permission because it's not exposed through
1904      * {@link android.car.hardware.property.CarPropertyManager}.
1905      *
1906      * @hide
1907      */
1908     @AddedInOrBefore(majorVersion = 33)
1909     public static final int WATCHDOG_TERMINATED_PROCESS = 299896626;
1910 
1911     /**
1912      * Property to signal a heartbeat from VHAL.
1913      *
1914      * <p>Doesn't require permission because it's not exposed through
1915      * {@link android.car.hardware.property.CarPropertyManager}.
1916      *
1917      * @hide
1918      */
1919     @AddedInOrBefore(majorVersion = 33)
1920     public static final int VHAL_HEARTBEAT = 290459443;
1921 
1922     /**
1923      * Property to start the ClusterUI in cluster display.
1924      *
1925      * <p>Doesn't require permission because it's not exposed through
1926      * {@link android.car.hardware.property.CarPropertyManager}.
1927      *
1928      * @hide
1929      */
1930     @AddedInOrBefore(majorVersion = 33)
1931     public static final int CLUSTER_SWITCH_UI = 289410868;
1932 
1933     /**
1934      * Property to change the state of the cluster display.
1935      *
1936      * <p>Doesn't require permission because it's not exposed through
1937      * {@link android.car.hardware.property.CarPropertyManager}.
1938      *
1939      * @hide
1940      */
1941     @AddedInOrBefore(majorVersion = 33)
1942     public static final int CLUSTER_DISPLAY_STATE = 289476405;
1943 
1944     /**
1945      * Property to reports the current display and ClusterUI statue.
1946      *
1947      * <p>Doesn't require permission because it's not exposed through
1948      * {@link android.car.hardware.property.CarPropertyManager}.
1949      *
1950      * @hide
1951      */
1952     @AddedInOrBefore(majorVersion = 33)
1953     public static final int CLUSTER_REPORT_STATE = 299896630;
1954 
1955     /**
1956      * Property to request to change the cluster display state to show some ClusterUI.
1957      *
1958      * <p>Doesn't require permission because it's not exposed through
1959      * {@link android.car.hardware.property.CarPropertyManager}.
1960      *
1961      * @hide
1962      */
1963     @AddedInOrBefore(majorVersion = 33)
1964     public static final int CLUSTER_REQUEST_DISPLAY = 289410871;
1965 
1966     /**
1967      * Property to inform the current navigation state.
1968      *
1969      * <p>Doesn't require permission because it's not exposed through
1970      * {@link android.car.hardware.property.CarPropertyManager}.
1971      *
1972      * @hide
1973      */
1974     @AddedInOrBefore(majorVersion = 33)
1975     public static final int CLUSTER_NAVIGATION_STATE = 292556600;
1976 
1977     /**
1978      * Current date and time, encoded as Unix time.
1979      *
1980      * <p>This value denotes the number of milliseconds that have elapsed since 1/1/1970 UTC.
1981      */
1982     @RequiresPermission(Car.PERMISSION_CAR_EPOCH_TIME)
1983     @AddedInOrBefore(majorVersion = 33)
1984     public static final int EPOCH_TIME = 290457094;
1985 
1986     /**
1987      * External encryption binding seed.
1988      *
1989      * <p>This value is mixed with the local storage encryption seed. This property holds 16 bytes,
1990      * and is expected to be persisted on an ECU separate from the IVI. The property is initially
1991      * set by AAOS, who generates it using a CSRNG. AAOS will then read the property on subsequent
1992      * boots.
1993      */
1994     @RequiresPermission(Car.PERMISSION_STORAGE_ENCRYPTION_BINDING_SEED)
1995     @AddedInOrBefore(majorVersion = 33)
1996     public static final int STORAGE_ENCRYPTION_BINDING_SEED = 292554247;
1997 
1998     /**
1999      * Electronic Toll Collection card type.
2000      *
2001      * <p>This property indicates the type of ETC(Electronic Toll Collection) card in the vehicle.
2002      * If the head unit is aware of an ETC card attached to the vehicle, this property should
2003      * return the type of card attached; otherwise, this property should be UNAVAILABLE. The
2004      * property value should be one of {@link VehicleElectronicTollCollectionCardType}.
2005      *
2006      * <ul>
2007      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
2008      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
2009      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2010      *  <li>{@code Integer} property type
2011      * </ul>
2012      *
2013      * <p>Requires permission: {@link Car#PERMISSION_CAR_INFO}.
2014      */
2015     @RequiresPermission(Car.PERMISSION_CAR_INFO)
2016     @AddedInOrBefore(majorVersion = 33)
2017     public static final int ELECTRONIC_TOLL_COLLECTION_CARD_TYPE = 289410873;
2018 
2019     /**
2020      * Electronic Toll Collection card status.
2021      *
2022      * <p>This property indicates the status of ETC(Electronic Toll Collection) card in the
2023      * vehicle. If the head unit is aware of an ETC card attached to the vehicle, ETC_CARD_STATUS
2024      * gives that status of the card; otherwise, this property should be UNAVAILABLE. The property
2025      * value should be one of {@link VehicleElectronicTollCollectionCardStatus}.
2026      *
2027      * <ul>
2028      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
2029      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
2030      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2031      *  <li>{@code Integer} property type
2032      * </ul>
2033      *
2034      * <p>Requires permission: {@link Car#PERMISSION_CAR_INFO}.
2035      */
2036     @RequiresPermission(Car.PERMISSION_CAR_INFO)
2037     @AddedInOrBefore(majorVersion = 33)
2038     public static final int ELECTRONIC_TOLL_COLLECTION_CARD_STATUS = 289410874;
2039 
2040     /**
2041      * Front fog lights state
2042      *
2043      * Please refer to the documentation on FOG_LIGHTS_STATE for more information.
2044      *
2045      * The property is protected by the privileged|signature permission:
2046      * android.car.permission.CAR_EXTERIOR_LIGHTS.
2047      */
2048     @RequiresPermission(Car.PERMISSION_EXTERIOR_LIGHTS)
2049     @AddedInOrBefore(majorVersion = 33)
2050     public static final int FRONT_FOG_LIGHTS_STATE = 289410875;
2051 
2052     /**
2053      * Front fog lights switch
2054      *
2055      * Please refer to the documentation on FOG_LIGHTS_SWITCH for more information.
2056      *
2057      * The property is protected by the privileged|signature permission:
2058      * android.car.permission.CONTROL_CAR_EXTERIOR_LIGHTS.
2059      */
2060     @RequiresPermission(Car.PERMISSION_CONTROL_EXTERIOR_LIGHTS)
2061     @AddedInOrBefore(majorVersion = 33)
2062     public static final int FRONT_FOG_LIGHTS_SWITCH = 289410876;
2063 
2064     /**
2065      * Rear fog lights state
2066      *
2067      * Please refer to the documentation on FOG_LIGHTS_STATE for more information.
2068      *
2069      * The property is protected by the privileged|signature permission:
2070      * android.car.permission.CAR_EXTERIOR_LIGHTS.
2071      */
2072     @RequiresPermission(Car.PERMISSION_EXTERIOR_LIGHTS)
2073     @AddedInOrBefore(majorVersion = 33)
2074     public static final int REAR_FOG_LIGHTS_STATE = 289410877;
2075 
2076     /**
2077      * Rear fog lights switch
2078      *
2079      * Please refer to the documentation on FOG_LIGHTS_SWITCH for more information.
2080      *
2081      * The property is protected by the privileged|signature permission:
2082      * android.car.permission.CONTROL_CAR_EXTERIOR_LIGHTS.
2083      */
2084     @RequiresPermission(Car.PERMISSION_CONTROL_EXTERIOR_LIGHTS)
2085     @AddedInOrBefore(majorVersion = 33)
2086     public static final int REAR_FOG_LIGHTS_SWITCH = 289410878;
2087 
2088     /**
2089      * EV charge current draw limit.
2090      *
2091      * <p>Indicates the maximum current draw threshold for charging set by the user. configArray[0]
2092      * contains the max current draw allowed by the vehicle in Amperes.
2093      *
2094      * <p>Property Config:
2095      * <ul>
2096      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE}
2097      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
2098      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2099      *  <li>{@code Boolean} property type
2100      * </ul>
2101      *
2102      * <p>Required Permissions:
2103      * <ul>
2104      *  <li>Dangerous permission {@link Car#PERMISSION_ENERGY} to read property.
2105      *  <li>Privileged|Signature permission {@link Car#PERMISSION_CONTROL_CAR_ENERGY} to write
2106      *  property.
2107      * </ul>
2108      */
2109     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_ENERGY))
2110     @RequiresPermission.Write(@RequiresPermission(Car.PERMISSION_CONTROL_CAR_ENERGY))
2111     @AddedInOrBefore(majorVersion = 33)
2112     public static final int EV_CHARGE_CURRENT_DRAW_LIMIT = 291508031;
2113 
2114     /**
2115      * EV charge percent limit.
2116      *
2117      * <p>Indicates the maximum charge percent threshold set by the user. Returns a float value
2118      * from 0 to 100.
2119      *
2120      * <p>configArray is optional. If it is populated, it represents the valid charge percent limit
2121      * values for the vehicle. Here is an example configArray:
2122      * <ul>
2123      *  <li>configArray[0] = 20
2124      *  <li>configArray[1] = 40
2125      *  <li>configArray[2] = 60
2126      *  <li>configArray[3] = 80
2127      * </ul>
2128      *
2129      * <p>Property Config:
2130      * <ul>
2131      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ_WRITE}
2132      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
2133      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_ONCHANGE}
2134      *  <li>{@code Float} property type
2135      * </ul>
2136      *
2137      * <p>Required Permissions:
2138      * <ul>
2139      *  <li>Dangerous permission {@link Car#PERMISSION_ENERGY} to read property.
2140      *  <li>Privileged|Signature permission {@link Car#PERMISSION_CONTROL_CAR_ENERGY} to write
2141      *  property.
2142      * </ul>
2143      */
2144     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_ENERGY))
2145     @RequiresPermission.Write(@RequiresPermission(Car.PERMISSION_CONTROL_CAR_ENERGY))
2146     @AddedInOrBefore(majorVersion = 33)
2147     public static final int EV_CHARGE_PERCENT_LIMIT = 291508032;
2148 
2149     /**
2150      * Charging state of the car.
2151      *
2152      * <p>Returns the current charging state of the car.
2153      *
2154      * <p>Required Permissions:
2155      * <ul>
2156      *  <li>Dangerous permission {@link Car#PERMISSION_ENERGY} to read property.
2157      * </ul>
2158      */
2159     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_ENERGY))
2160     @AddedInOrBefore(majorVersion = 33)
2161     public static final int EV_CHARGE_STATE = 289410881;
2162 
2163     /**
2164      * Start or stop charging the EV battery.
2165      *
2166      * <p>The setting that the user wants. Setting this property to true starts the battery charging
2167      * and setting to false stops charging.
2168      *
2169      * <p>Required Permissions:
2170      * <ul>
2171      *  <li>Privileged|Signature permission {@link Car#PERMISSION_CONTROL_CAR_ENERGY} to read/write
2172      *  property.
2173      */
2174     @RequiresPermission(Car.PERMISSION_CONTROL_CAR_ENERGY)
2175     @AddedInOrBefore(majorVersion = 33)
2176     public static final int EV_CHARGE_SWITCH = 287313730;
2177 
2178     /**
2179      * Estimated charge time remaining in seconds.
2180      *
2181      * <p>Returns 0 if the vehicle is not charging.
2182      *
2183      * <p>Property Config:
2184      * <ul>
2185      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_ACCESS_READ}
2186      *  <li>{@link VehicleAreaType#VEHICLE_AREA_TYPE_GLOBAL}
2187      *  <li>{@link android.car.hardware.CarPropertyConfig#VEHICLE_PROPERTY_CHANGE_MODE_CONTINUOUS}
2188      *  <li>{@code Integer} property type
2189      * </ul>
2190      *
2191      * <p>Required Permissions:
2192      * <ul>
2193      *  <li>Dangerous permission {@link Car#PERMISSION_ENERGY} to read property.
2194      *  <li>Property is not writable.
2195      * </ul>
2196      */
2197     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_ENERGY))
2198     @AddedInOrBefore(majorVersion = 33)
2199     public static final int EV_CHARGE_TIME_REMAINING = 289410883;
2200 
2201     /**
2202      * Regenerative braking or one-pedal drive state of the car.
2203      *
2204      * <p>Returns the current state associated with the regenerative braking
2205      * setting in the car.
2206      *
2207      * <p>Required Permissions:
2208      * <ul>
2209      *  <li>Dangerous permission {@link Car#PERMISSION_ENERGY} to read property.
2210      * </ul>
2211      */
2212     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_ENERGY))
2213     @AddedInOrBefore(majorVersion = 33)
2214     public static final int EV_REGENERATIVE_BRAKING_STATE = 289410884;
2215 
2216     /**
2217      * Vehicle’s curb weight
2218      *
2219      * <p>Returns the vehicle's curb weight in kilograms. configArray[0] specifies the vehicle’s
2220      * gross weight in kilograms.
2221      *
2222      * <p>Required Permissions:
2223      * <ul>
2224      *  <li>Privileged|Signature permission {@link Car#PERMISSION_PRIVILEGED_CAR_INFO} to read
2225      *  property.
2226      * </ul>
2227      */
2228     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_PRIVILEGED_CAR_INFO))
2229     @AddedInOrBefore(majorVersion = 33)
2230     public static final int VEHICLE_CURB_WEIGHT = 289410886;
2231 
2232      /**
2233      * Indicates if there is a trailer present or not.
2234      *
2235      * <p>Returns the trailer state of the car.
2236      *
2237      * <p>Required Permissions:
2238      * <ul>
2239      *  <li>Privileged|Signature permission {@link Car#PERMISSION_PRIVILEGED_CAR_INFO} to read
2240      *  property.
2241      * </ul>
2242      */
2243     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_PRIVILEGED_CAR_INFO))
2244     @AddedInOrBefore(majorVersion = 33)
2245     public static final int TRAILER_PRESENT = 289410885;
2246 
2247     /**
2248      * EU's General security regulation compliance requirement.
2249      *
2250      * <p>Returns whether general security regulation compliance is required, if
2251      * so, what type of requirement. See {@link GsrComplianceType} for possible enums.
2252      *
2253      * <p>Requires permission: {@link Car#PERMISSION_CAR_INFO}.
2254      */
2255     @RequiresPermission.Read(@RequiresPermission(Car.PERMISSION_CAR_INFO))
2256     @ApiRequirements(minCarVersion = ApiRequirements.CarVersion.TIRAMISU_1,
2257              minPlatformVersion = ApiRequirements.PlatformVersion.TIRAMISU_0)
2258     public static final int GENERAL_SAFETY_REGULATION_COMPLIANCE = 289410887;
2259 
2260     /*
2261      * Used to cache the mapping of property Id integer values into property name strings. This
2262      * will be initialized during the first call to {@link VehiclePropertyIds#toString(int)}.
2263      */
2264     private static final AtomicReference<SparseArray<String>> sPropertyIdToPropertyNameHolder =
2265             new AtomicReference<>();
2266 
2267     /**
2268      * @deprecated to prevent others from instantiating this class
2269      */
2270     @Deprecated
2271     @ExcludeFromCodeCoverageGeneratedReport(reason = BOILERPLATE_CODE)
VehiclePropertyIds()2272     public VehiclePropertyIds() {
2273     }
2274 
2275     /**
2276      * Gets a user-friendly representation of a property.
2277      */
2278     @AddedInOrBefore(majorVersion = 33)
toString(int property)2279     public static String toString(int property) {
2280         SparseArray<String> propertyIdsToNameMapping = sPropertyIdToPropertyNameHolder.get();
2281         if (propertyIdsToNameMapping == null) {
2282             propertyIdsToNameMapping = getPropertyIdsToNameMapping();
2283             sPropertyIdToPropertyNameHolder.compareAndSet(null, propertyIdsToNameMapping);
2284         }
2285 
2286         String name = propertyIdsToNameMapping.get(property);
2287         return name != null ? name : "0x" + Integer.toHexString(property);
2288     }
2289 
2290     /**
2291      * Creates a SparseArray mapping property Ids to their String representations
2292      * directly from this class.
2293      */
2294 
getPropertyIdsToNameMapping()2295     private static SparseArray<String> getPropertyIdsToNameMapping() {
2296         Field[] classFields = VehiclePropertyIds.class.getDeclaredFields();
2297         SparseArray<String> propertyIdsToNameMapping = new SparseArray<>(classFields.length);
2298         for (int i = 0; i < classFields.length; i++) {
2299             Field candidateField = classFields[i];
2300             try {
2301                 if (isPropertyId(candidateField)) {
2302                     propertyIdsToNameMapping
2303                             .put(candidateField.getInt(null), candidateField.getName());
2304                 }
2305             } catch (IllegalAccessException e) {
2306                 Log.wtf(TAG, "Failed trying to find value for " + candidateField.getName(), e);
2307             }
2308         }
2309         return propertyIdsToNameMapping;
2310     }
2311 
isPropertyId(Field field)2312     private static boolean isPropertyId(Field field) {
2313         // We only want public static final int values
2314         return field.getType() == int.class
2315             && field.getModifiers() == (Modifier.STATIC | Modifier.FINAL | Modifier.PUBLIC);
2316     }
2317 }
2318