blob: 8b28e7a0649b3d9a9d896f31f20f890d3d2f6122 [file] [log] [blame]
Sanket Agarwalfb636682015-08-11 14:34:29 -07001/*
2 * Copyright (C) 2015 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#ifndef ANDROID_VEHICLE_INTERFACE_H
18#define ANDROID_VEHICLE_INTERFACE_H
19
20#include <stdint.h>
21#include <sys/cdefs.h>
22#include <sys/types.h>
Keun-young Park418c7e82016-04-06 10:44:20 -070023#include <math.h>
Sanket Agarwalfb636682015-08-11 14:34:29 -070024#include <errno.h>
25
26#include <hardware/hardware.h>
27#include <cutils/native_handle.h>
28
29__BEGIN_DECLS
30
31/*****************************************************************************/
32
33#define VEHICLE_HEADER_VERSION 1
34#define VEHICLE_MODULE_API_VERSION_1_0 HARDWARE_MODULE_API_VERSION(1, 0)
35#define VEHICLE_DEVICE_API_VERSION_1_0 HARDWARE_DEVICE_API_VERSION_2(1, 0, VEHICLE_HEADER_VERSION)
36
37/**
38 * Vehicle HAL to provide interfaces to various Car related sensors. The HAL is
39 * designed in a property, value maping where each property has a value which
40 * can be "get", "set" and "(un)subscribed" to. Subscribing will require the
41 * user of this HAL to provide parameters such as sampling rate.
42 */
43
44
45/*
46 * The id of this module
47 */
48#define VEHICLE_HARDWARE_MODULE_ID "vehicle"
49
50/**
51 * Name of the vehicle device to open
52 */
53#define VEHICLE_HARDWARE_DEVICE "vehicle_hw_device"
54
55/**
56 * Each vehicle property is defined with various annotations to specify the type of information.
57 * Annotations will be used by scripts to run some type check or generate some boiler-plate codes.
58 * Also the annotations are the specification for each property, and each HAL implementation should
59 * follow what is specified as annotations.
60 * Here is the list of annotations with explanation on what it does:
61 * @value_type: Type of data for this property. One of the value from vehicle_value_type should be
62 * set here.
63 * @change_mode: How this property changes. Value set is from vehicle_prop_change_mode. Some
64 * properties can allow either on change or continuous mode and it is up to HAL
65 * implementation to choose which mode to use.
66 * @access: Define how this property can be accessed. read only, write only or R/W from
67 * vehicle_prop_access
68 * @data_member: Name of member from vehicle_value union to access this data.
69 * @data_enum: enum type that should be used for the data.
70 * @unit: Unit of data. Should be from vehicle_unit_type.
Keun-young Parkbf877a72015-12-21 14:16:05 -080071 * @config_flags: Usage of config_flags in vehicle_prop_config
72 * @config_array: Usage of config_array in vehicle_prop_config. When this is specified,
73 * @config_flags will not be used.
Sanket Agarwalfb636682015-08-11 14:34:29 -070074 * @config_string: Explains the usage of config_string in vehicle_prop_config. Property with
75 * this annotation is expected to have additional information in config_string
76 * for that property to work.
Keun-young Park14f09002016-01-22 16:29:22 -080077 * @zone_type type of zoned used. defined for zoned property
Sanket Agarwalfb636682015-08-11 14:34:29 -070078 * @range_start, @range_end : define range of specific property values.
Keun-young Park418c7e82016-04-06 10:44:20 -070079 * @allow_out_of_range_value : This property allows out of range value to deliver additional
80 * information. Check VEHICLE_*_OUT_OF_RANGE_* for applicable values.
Sanket Agarwalfb636682015-08-11 14:34:29 -070081 */
82//===== Vehicle Information ====
83
84/**
85 * Invalid property value used for argument where invalid property gives different result.
Sanket Agarwalfb636682015-08-11 14:34:29 -070086 */
87#define VEHICLE_PROPERTY_INVALID (0x0)
88
89/**
90 * VIN of vehicle
91 * @value_type VEHICLE_VALUE_TYPE_STRING
92 * @change_mode VEHICLE_PROP_CHANGE_MODE_STATIC
93 * @access VEHICLE_PROP_ACCESS_READ
94 * @data_member info_vin
95 */
96#define VEHICLE_PROPERTY_INFO_VIN (0x00000100)
97
98/**
99 * Maker name of vehicle
100 * @value_type VEHICLE_VALUE_TYPE_STRING
101 * @change_mode VEHICLE_PROP_CHANGE_MODE_STATIC
102 * @access VEHICLE_PROP_ACCESS_READ
103 * @data_member info_make
104 */
105#define VEHICLE_PROPERTY_INFO_MAKE (0x00000101)
106
107/**
108 * Model of vehicle
109 * @value_type VEHICLE_VALUE_TYPE_STRING
110 * @change_mode VEHICLE_PROP_CHANGE_MODE_STATIC
111 * @access VEHICLE_PROP_ACCESS_READ
112 * @data_member info_model
113 */
114#define VEHICLE_PROPERTY_INFO_MODEL (0x00000102)
115
116/**
117 * Model year of vehicle.
118 * @value_type VEHICLE_VALUE_TYPE_INT32
119 * @change_mode VEHICLE_PROP_CHANGE_MODE_STATIC
120 * @access VEHICLE_PROP_ACCESS_READ
121 * @data_member info_model_year
122 * @unit VEHICLE_UNIT_TYPE_YEAR
123 */
Steve Paikcc9e2922016-04-21 11:40:17 -0700124#define VEHICLE_PROPERTY_INFO_MODEL_YEAR (0x00000103)
Sanket Agarwalfb636682015-08-11 14:34:29 -0700125
126/**
127 * Fuel capacity of the vehicle
128 * @value_type VEHICLE_VALUE_TYPE_FLOAT
129 * @change_mode VEHICLE_PROP_CHANGE_MODE_STATIC
130 * @access VEHICLE_PROP_ACCESS_READ
131 * @data_member info_fuel_capacity
132 * @unit VEHICLE_UNIT_TYPE_VEHICLE_UNIT_TYPE_MILLILITER
133 */
134#define VEHICLE_PROPERTY_INFO_FUEL_CAPACITY (0x00000104)
135
136
137//==== Vehicle Performance Sensors ====
138
139/**
140 * Current odometer value of the vehicle
141 * @value_type VEHICLE_VALUE_TYPE_FLOAT
142 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE|VEHICLE_PROP_CHANGE_MODE_CONTINUOUS
143 * @access VEHICLE_PROP_ACCESS_READ
144 * @data_member odometer
145 * @unit VEHICLE_UNIT_TYPE_KILOMETER
146 */
147#define VEHICLE_PROPERTY_PERF_ODOMETER (0x00000204)
148
149/**
150 * Speed of the vehicle
151 * @value_type VEHICLE_VALUE_TYPE_FLOAT
152 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE|VEHICLE_PROP_CHANGE_MODE_CONTINUOUS
153 * @access VEHICLE_PROP_ACCESS_READ
154 * @data_member vehicle_speed
155 * @unit VEHICLE_UNIT_TYPE_METER_PER_SEC
156 */
157#define VEHICLE_PROPERTY_PERF_VEHICLE_SPEED (0x00000207)
158
159
160//==== Engine Sensors ====
161
162/**
163 * Temperature of engine coolant
164 * @value_type VEHICLE_VALUE_TYPE_FLOAT
165 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE|VEHICLE_PROP_CHANGE_MODE_CONTINUOUS
166 * @access VEHICLE_PROP_ACCESS_READ
167 * @data_member engine_coolant_temperature
168 * @unit VEHICLE_UNIT_TYPE_CELCIUS
169 */
170#define VEHICLE_PROPERTY_ENGINE_COOLANT_TEMP (0x00000301)
171
172/**
173 * Temperature of engine oil
174 * @value_type VEHICLE_VALUE_TYPE_FLOAT
175 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE|VEHICLE_PROP_CHANGE_MODE_CONTINUOUS
176 * @access VEHICLE_PROP_ACCESS_READ
177 * @data_member engine_oil_temperature
178 * @unit VEHICLE_UNIT_TYPE_CELCIUS
179 */
180#define VEHICLE_PROPERTY_ENGINE_OIL_TEMP (0x00000304)
181/**
182 * Engine rpm
183 * @value_type VEHICLE_VALUE_TYPE_FLOAT
184 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE|VEHICLE_PROP_CHANGE_MODE_CONTINUOUS
185 * @access VEHICLE_PROP_ACCESS_READ
186 * @data_member engine_rpm
187 * @unit VEHICLE_UNIT_TYPE_RPM
188 */
189#define VEHICLE_PROPERTY_ENGINE_RPM (0x00000305)
190
191//==== Event Sensors ====
192
193/**
194 * Currently selected gear
195 * @value_type VEHICLE_VALUE_TYPE_INT32
196 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
197 * @access VEHICLE_PROP_ACCESS_READ
198 * @data_member gear_selection
199 * @data_enum vehicle_gear
200 */
201#define VEHICLE_PROPERTY_GEAR_SELECTION (0x00000400)
202
203/**
204 * Current gear. In non-manual case, selected gear does not necessarily match the current gear
205 * @value_type VEHICLE_VALUE_TYPE_INT32
206 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
207 * @access VEHICLE_PROP_ACCESS_READ
208 * @data_member gear_current_gear
209 * @data_enum vehicle_gear
210 */
211#define VEHICLE_PROPERTY_CURRENT_GEAR (0x00000401)
212
213/**
214 * Parking brake state.
215 * @value_type VEHICLE_VALUE_TYPE_BOOLEAN
216 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
217 * @access VEHICLE_PROP_ACCESS_READ
218 * @data_member parking_brake
219 * @data_enum vehicle_boolean
220 */
221#define VEHICLE_PROPERTY_PARKING_BRAKE_ON (0x00000402)
222
223/**
224 * Driving status policy.
225 * @value_type VEHICLE_VALUE_TYPE_INT32
226 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
227 * @access VEHICLE_PROP_ACCESS_READ
228 * @data_member driving_status
229 * @data_enum vehicle_driving_status
230 */
231#define VEHICLE_PROPERTY_DRIVING_STATUS (0x00000404)
232
233/**
234 * Warning for fuel low level.
235 * @value_type VEHICLE_VALUE_TYPE_BOOLEAN
236 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
237 * @access VEHICLE_PROP_ACCESS_READ
238 * @data_member is_fuel_level_low
239 * @data_enum vehicle_boolean
240 */
241#define VEHICLE_PROPERTY_FUEL_LEVEL_LOW (0x00000405)
242
243/**
244 * Night mode or not.
245 * @value_type VEHICLE_VALUE_TYPE_BOOLEAN
246 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
247 * @access VEHICLE_PROP_ACCESS_READ
248 * @data_member night_mode
249 * @data_enum vehicle_boolean
250 */
251#define VEHICLE_PROPERTY_NIGHT_MODE (0x00000407)
252
253
254
Steve Paike588bae2016-06-29 17:06:16 -0700255//==== HVAC Properties ====
Sanket Agarwalfb636682015-08-11 14:34:29 -0700256
257/**
258 * Fan speed setting
259 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
260 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
261 * @access VEHICLE_PROP_ACCESS_READ_WRITE
262 * @data_member hvac.fan_speed
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -0700263 * @zone_type VEHICLE_ZONE_TYPE_ZONE
Keun-young Park418c7e82016-04-06 10:44:20 -0700264 * @allow_out_of_range_value : OFF
Sanket Agarwalfb636682015-08-11 14:34:29 -0700265 */
266#define VEHICLE_PROPERTY_HVAC_FAN_SPEED (0x00000500)
267
268/**
269 * Fan direction setting
270 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
271 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
272 * @access VEHICLE_PROP_ACCESS_READ_WRITE
273 * @data_member hvac.fan_direction
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -0700274 * @zone_type VEHICLE_ZONE_TYPE_ZONE
Steve Paikbfbbb672016-07-08 16:12:38 -0700275 * @data_enum vehicle_hvac_fan_direction
Keun-young Park418c7e82016-04-06 10:44:20 -0700276 * @allow_out_of_range_value : OFF
Sanket Agarwalfb636682015-08-11 14:34:29 -0700277 */
278#define VEHICLE_PROPERTY_HVAC_FAN_DIRECTION (0x00000501)
279
Steve Paikd2ba70f2015-12-10 14:58:27 -0800280/*
281 * Bit flags for fan direction
282 */
Steve Paik159349e2016-02-09 18:45:58 -0800283enum vehicle_hvac_fan_direction {
284 VEHICLE_HVAC_FAN_DIRECTION_FACE = 0x1,
285 VEHICLE_HVAC_FAN_DIRECTION_FLOOR = 0x2,
286 VEHICLE_HVAC_FAN_DIRECTION_FACE_AND_FLOOR = 0x3,
287 VEHICLE_HVAC_FAN_DIRECTION_DEFROST = 0x4,
288 VEHICLE_HVAC_FAN_DIRECTION_DEFROST_AND_FLOOR = 0x5
Steve Paikd2ba70f2015-12-10 14:58:27 -0800289};
290
Sanket Agarwalfb636682015-08-11 14:34:29 -0700291/**
292 * HVAC current temperature.
293 * @value_type VEHICLE_VALUE_TYPE_ZONED_FLOAT
Keun-young Parkda3cb912016-05-12 11:21:04 -0700294 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
Sanket Agarwalfb636682015-08-11 14:34:29 -0700295 * @access VEHICLE_PROP_ACCESS_READ_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -0700296 * @zone_type VEHICLE_ZONE_TYPE_ZONE
Sanket Agarwalfb636682015-08-11 14:34:29 -0700297 * @data_member hvac.temperature_current
298 */
299#define VEHICLE_PROPERTY_HVAC_TEMPERATURE_CURRENT (0x00000502)
300
301/**
302 * HVAC, target temperature set.
303 * @value_type VEHICLE_VALUE_TYPE_ZONED_FLOAT
Keun-young Parkda3cb912016-05-12 11:21:04 -0700304 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
Sanket Agarwalfb636682015-08-11 14:34:29 -0700305 * @access VEHICLE_PROP_ACCESS_READ_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -0700306 * @zone_type VEHICLE_ZONE_TYPE_ZONE
Sanket Agarwalfb636682015-08-11 14:34:29 -0700307 * @data_member hvac.temperature_set
Keun-young Park418c7e82016-04-06 10:44:20 -0700308 * @allow_out_of_range_value : MIN / MAX / OFF
Sanket Agarwalfb636682015-08-11 14:34:29 -0700309 */
310#define VEHICLE_PROPERTY_HVAC_TEMPERATURE_SET (0x00000503)
311
312/**
313 * On/off defrost
314 * @value_type VEHICLE_VALUE_TYPE_ZONED_BOOLEAN
315 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
316 * @access VEHICLE_PROP_ACCESS_READ_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -0700317 * @zone_type VEHICLE_ZONE_TYPE_WINDOW
Sanket Agarwalfb636682015-08-11 14:34:29 -0700318 * @data_member hvac.defrost_on
319 */
320#define VEHICLE_PROPERTY_HVAC_DEFROSTER (0x00000504)
321
322/**
323 * On/off AC
324 * @value_type VEHICLE_VALUE_TYPE_ZONED_BOOLEAN
325 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
326 * @access VEHICLE_PROP_ACCESS_READ_WRITE
Keun-young Parkbf877a72015-12-21 14:16:05 -0800327 * @config_flags Supported zones
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -0700328 * @zone_type VEHICLE_ZONE_TYPE_ZONE
Sanket Agarwalfb636682015-08-11 14:34:29 -0700329 * @data_member hvac.ac_on
330 */
331#define VEHICLE_PROPERTY_HVAC_AC_ON (0x00000505)
332
333/**
Steve Paikd2ba70f2015-12-10 14:58:27 -0800334 * On/off max AC
Keun-young Parkf1ccec12016-04-22 13:19:53 -0700335 * @value_type VEHICLE_VALUE_TYPE_ZONED_BOOLEAN
Steve Paikd2ba70f2015-12-10 14:58:27 -0800336 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
337 * @access VEHICLE_PROP_ACCESS_READ_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -0700338 * @zone_type VEHICLE_ZONE_TYPE_ZONE
Steve Paikd2ba70f2015-12-10 14:58:27 -0800339 * @data_member hvac.max_ac_on
340 */
341#define VEHICLE_PROPERTY_HVAC_MAX_AC_ON (0x00000506)
342
343/**
344 * On/off max defrost
Keun-young Parkf1ccec12016-04-22 13:19:53 -0700345 * @value_type VEHICLE_VALUE_TYPE_ZONED_BOOLEAN
Steve Paikd2ba70f2015-12-10 14:58:27 -0800346 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
347 * @access VEHICLE_PROP_ACCESS_READ_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -0700348 * @zone_type VEHICLE_ZONE_TYPE_ZONE
Steve Paikd2ba70f2015-12-10 14:58:27 -0800349 * @data_member hvac.max_defrost_on
350 */
351#define VEHICLE_PROPERTY_HVAC_MAX_DEFROST_ON (0x00000507)
352
353/**
354 * On/off re-circulation
Keun-young Parkf1ccec12016-04-22 13:19:53 -0700355 * @value_type VEHICLE_VALUE_TYPE_ZONED_BOOLEAN
Steve Paikd2ba70f2015-12-10 14:58:27 -0800356 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
357 * @access VEHICLE_PROP_ACCESS_READ_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -0700358 * @zone_type VEHICLE_ZONE_TYPE_ZONE
Steve Paikd2ba70f2015-12-10 14:58:27 -0800359 * @data_member hvac.max_recirc_on
360 */
361#define VEHICLE_PROPERTY_HVAC_RECIRC_ON (0x00000508)
362
363/**
Keun-young Parkf1ccec12016-04-22 13:19:53 -0700364 * On/off dual. This will be defined per each row.
365 * @value_type VEHICLE_VALUE_TYPE_ZONED_BOOLEAN
Steve Paikd2ba70f2015-12-10 14:58:27 -0800366 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
367 * @access VEHICLE_PROP_ACCESS_READ_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -0700368 * @zone_type VEHICLE_ZONE_TYPE_ZONE
Steve Paikd2ba70f2015-12-10 14:58:27 -0800369 * @data_member hvac.dual_on
370 */
371#define VEHICLE_PROPERTY_HVAC_DUAL_ON (0x00000509)
372
373/**
Steve Paikcc9e2922016-04-21 11:40:17 -0700374 * On/off automatic mode
375 * @value_type VEHICLE_VALUE_TYPE_ZONED_BOOLEAN
376 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
377 * @access VEHICLE_PROP_ACCESS_READ_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -0700378 * @zone_type VEHICLE_ZONE_TYPE_ZONE
Steve Paik670e7ab2016-04-29 16:32:02 -0700379 * @data_member hvac.auto_on
Steve Paikcc9e2922016-04-21 11:40:17 -0700380 */
381#define VEHICLE_PROPERTY_HVAC_AUTO_ON (0x0000050A)
382
383/**
Steve Paike588bae2016-06-29 17:06:16 -0700384 * Seat temperature
385 *
386 * Negative values indicate cooling.
387 * 0 indicates off.
388 * Positive values indicate heating.
389 *
390 * Some vehicles may have multiple levels of heating and cooling. The min/max
391 * range defines the allowable range and number of steps in each direction.
392 *
393 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
394 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
Steve Paik983e9292016-07-20 21:06:54 -0700395 * @access VEHICLE_PROP_ACCESS_READ_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -0700396 * @zone_type VEHICLE_ZONE_TYPE_SEAT
Steve Paike588bae2016-06-29 17:06:16 -0700397 * @data_member int32_value
398 */
399#define VEHICLE_PROPERTY_HVAC_SEAT_TEMPERATURE (0x0000050B)
400
401/**
Steve Paikbfbbb672016-07-08 16:12:38 -0700402 * Side Mirror Heat
403 *
404 * Increase values denote higher heating levels for side mirrors.
405 * 0 indicates heating is turned off.
406 *
407 * @value_type VEHICLE_VALUE_TYPE_INT32
408 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
409 * @access VEHICLE_PROP_ACCESS_READ_WRITE
410 * @data_member int32_value
411 */
412#define VEHICLE_PROPERTY_HVAC_SIDE_MIRROR_HEAT (0x0000050C)
413
414/**
415 * Steering Wheel Temperature
416 *
417 * Sets the temperature for the steering wheel
418 * Positive value indicates heating.
419 * Negative value indicates cooling.
420 * 0 indicates tempreature control is off.
421 *
422 * @value_type VEHICLE_VALUE_TYPE_INT32
423 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
424 * @access VEHICLE_PROP_ACCESS_READ_WRITE
425 * @data_member int32_value
426 */
427#define VEHICLE_PROPERTY_HVAC_STEERING_WHEEL_TEMP (0x0000050D)
428
429/**
430 * Temperature units
431 *
432 * Indicates whether the temperature is in Celsius, Fahrenheit, or a different unit.
433 * This parameter affects all HVAC temperatures in the system.
434 *
435 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
436 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
437 * @access VEHICLE_PROP_ACCESS_READ
438 * @data_enum vehicle_unit_type
439 * @data_member int32_value
440 */
441#define VEHICLE_PROPERTY_HVAC_TEMPERATURE_UNITS (0x0000050E)
442
443/**
444 * Actual fan speed
445 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
446 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
447 * @access VEHICLE_PROP_ACCESS_READ
448 * @data_member hvac.fan_speed
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -0700449 * @zone_type VEHICLE_ZONE_TYPE_ZONE
Steve Paikbfbbb672016-07-08 16:12:38 -0700450 * @allow_out_of_range_value : OFF
451 */
452#define VEHICLE_PROPERTY_HVAC_ACTUAL_FAN_SPEED_RPM (0x0000050F)
453
454
455/**
Keun-young Park418c7e82016-04-06 10:44:20 -0700456 * Represents power state for HVAC. Some HVAC properties will require matching power to be turned on
457 * to get out of OFF state. For non-zoned HVAC properties, VEHICLE_ALL_ZONE corresponds to
458 * global power state.
459 *
460 * @value_type VEHICLE_VALUE_TYPE_ZONED_BOOLEAN
461 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
462 * @access VEHICLE_PROP_ACCESS_READ_WRITE
463 * @config_string list of HVAC properties whose power is controlled by this property. Format is
464 * hexa-decimal number (0x...) separated by comma like "0x500,0x503". All zones
465 * defined in these affected properties should be available in the property.
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -0700466 * @zone_type VEHICLE_ZONE_TYPE_ZONE
Keun-young Park418c7e82016-04-06 10:44:20 -0700467 * @data_member hvac.power_on
468 */
469#define VEHICLE_PROPERTY_HVAC_POWER_ON (0x00000510)
470
471/**
Steve Paikbfbbb672016-07-08 16:12:38 -0700472 * Fan Positions Available
473 *
474 * This is a bit mask of fan positions available for the zone. Each entry in
475 * vehicle_hvac_fan_direction is selected by bit position. For instance, if
476 * only the FAN_DIRECTION_FACE (0x1) and FAN_DIRECTION_DEFROST (0x4) are available,
477 * then this value shall be set to 0x12.
478 *
479 * 0x12 = (1 << 1) | (1 << 4)
480 *
481 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
482 * @change_mode VEHICLE_PROP_CHANGE_MODE_STATIC
483 * @access VEHICLE_PROP_ACCESS_READ
484 * @data_member int32_value
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -0700485 * @zone_type VEHICLE_ZONE_TYPE_ZONE
Steve Paikbfbbb672016-07-08 16:12:38 -0700486 * @allow_out_of_range_value : OFF
487 */
488#define VEHICLE_PROPERTY_HVAC_FAN_DIRECTION_AVAILABLE (0x00000511)
489
490/**
Sanket Agarwalfb636682015-08-11 14:34:29 -0700491 * Outside temperature
492 * @value_type VEHICLE_VALUE_TYPE_FLOAT
493 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE|VEHICLE_PROP_CHANGE_MODE_CONTINUOUS
494 * @access VEHICLE_PROP_ACCESS_READ
495 * @data_member outside_temperature
496 * @unit VEHICLE_UNIT_TYPE_CELCIUS
497 */
Steve Paikcc9e2922016-04-21 11:40:17 -0700498#define VEHICLE_PROPERTY_ENV_OUTSIDE_TEMPERATURE (0x00000703)
Keun-young Parkcb354502016-02-08 18:15:55 -0800499
500
501/**
502 * Cabin temperature
503 * @value_type VEHICLE_VALUE_TYPE_FLOAT
504 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE|VEHICLE_PROP_CHANGE_MODE_CONTINUOUS
505 * @access VEHICLE_PROP_ACCESS_READ
506 * @data_member cabin_temperature
507 * @unit VEHICLE_UNIT_TYPE_CELCIUS
508 */
Steve Paikcc9e2922016-04-21 11:40:17 -0700509#define VEHICLE_PROPERTY_ENV_CABIN_TEMPERATURE (0x00000704)
Sanket Agarwalfb636682015-08-11 14:34:29 -0700510
511
512/*
513 * Radio features.
514 */
515/**
516 * Radio presets stored on the Car radio module. The data type used is int32
517 * array with the following fields:
518 * <ul>
519 * <li> int32_array[0]: Preset number </li>
520 * <li> int32_array[1]: Band type (see #RADIO_BAND_FM in
521 * system/core/include/system/radio.h).
522 * <li> int32_array[2]: Channel number </li>
523 * <li> int32_array[3]: Sub channel number </li>
524 * </ul>
525 *
526 * NOTE: When getting a current preset config ONLY set preset number (i.e.
527 * int32_array[0]). For setting a preset other fields are required.
528 *
529 * @value_type VEHICLE_VALUE_TYPE_INT32_VEC4
530 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
531 * @access VEHICLE_PROP_ACCESS_READ_WRITE
Keun-young Parkbf877a72015-12-21 14:16:05 -0800532 * @config_flags Number of presets supported
Sanket Agarwalfb636682015-08-11 14:34:29 -0700533 * @data_member int32_array
534 */
Steve Paik5052d312016-07-14 16:05:19 -0700535#define VEHICLE_PROPERTY_RADIO_PRESET (0x00000801)
Sanket Agarwalfb636682015-08-11 14:34:29 -0700536
537/**
538 * Constants relevant to radio.
539 */
540enum vehicle_radio_consts {
541 /** Minimum value for the radio preset */
542 VEHICLE_RADIO_PRESET_MIN_VALUE = 1,
543};
544
545/**
546 * Represents audio focus state of Android side. Note that car's audio module will own audio
547 * focus and grant audio focus to Android side when requested by Android side. The focus has both
548 * per stream characteristics and global characteristics.
549 *
550 * Focus request (get of this property) will take the following form in int32_vec4:
Keun-young Park08c255e2015-12-09 13:47:30 -0800551 * int32_array[0]: vehicle_audio_focus_request type
Sanket Agarwalfb636682015-08-11 14:34:29 -0700552 * int32_array[1]: bit flags of streams requested by this focus request. There can be up to
553 * 32 streams.
554 * int32_array[2]: External focus state flags. For request, only flag like
Keun-young Park418c7e82016-04-06 10:44:20 -0700555 * VEHICLE_AUDIO_EXT_FOCUS_CAR_PLAY_ONLY_FLAG or
556 * VEHICLE_AUDIO_EXT_FOCUS_CAR_MUTE_MEDIA_FLAG can be used.
557 * VEHICLE_AUDIO_EXT_FOCUS_CAR_PLAY_ONLY_FLAG is for case like radio where android
558 * side app still needs to hold focus but playback is done outside Android.
559 * VEHICLE_AUDIO_EXT_FOCUS_CAR_MUTE_MEDIA_FLAG is for muting media channel
560 * including radio. VEHICLE_AUDIO_EXT_FOCUS_CAR_MUTE_MEDIA_FLAG can be set even
561 * if android side releases focus (request type REQUEST_RELEASE). In that case,
562 * audio module should maintain mute state until user's explicit action to
563 * play some media.
Keun-young Park637fb202016-03-29 09:52:41 -0700564 * int32_array[3]: Currently active audio contexts. Use combination of flags from
Keun-young Parkfe599a82016-02-12 14:26:57 -0800565 * vehicle_audio_context_flag.
566 * This can be used as a hint to adjust audio policy or other policy decision.
567 * Note that there can be multiple context active at the same time. And android
568 * can send the same focus request type gain due to change in audio contexts.
Sanket Agarwalfb636682015-08-11 14:34:29 -0700569 * Note that each focus request can request multiple streams that is expected to be used for
570 * the current request. But focus request itself is global behavior as GAIN or GAIN_TRANSIENT
571 * expects all sounds played by car's audio module to stop. Note that stream already allocated to
572 * android before this focus request should not be affected by focus request.
573 *
574 * Focus response (set and subscription callback for this property) will take the following form:
Keun-young Park08c255e2015-12-09 13:47:30 -0800575 * int32_array[0]: vehicle_audio_focus_state type
Sanket Agarwalfb636682015-08-11 14:34:29 -0700576 * int32_array[1]: bit flags of streams allowed.
577 * int32_array[2]: External focus state: bit flags of currently active audio focus in car
578 * side (outside Android). Active audio focus does not necessarily mean currently
579 * playing, but represents the state of having focus or waiting for focus
580 * (pause state).
581 * One or combination of flags from vehicle_audio_ext_focus_flag.
582 * 0 means no active audio focus holder outside Android.
583 * The state will have following values for each vehicle_audio_focus_state_type:
584 * GAIN: 0 or VEHICLE_AUDIO_EXT_FOCUS_CAR_PLAY_ONLY when radio is active in
585 * Android side.
586 * GAIN_TRANSIENT: 0. Can be VEHICLE_AUDIO_EXT_FOCUS_CAR_PERMANENT or
587 * VEHICLE_AUDIO_EXT_FOCUS_CAR_TRANSIENT if android side has requested
588 * GAIN_TRANSIENT_MAY_DUCK and car side is ducking.
589 * LOSS: 0 when no focus is audio is active in car side.
590 * VEHICLE_AUDIO_EXT_FOCUS_CAR_PERMANENT when car side is playing something
591 * permanent.
592 * LOSS_TRANSIENT: always should be VEHICLE_AUDIO_EXT_FOCUS_CAR_TRANSIENT
Keun-young Parkda3cb912016-05-12 11:21:04 -0700593 * int32_array[3]: context requested by android side when responding to focus request.
594 * When car side is taking focus away, this should be zero.
Sanket Agarwalfb636682015-08-11 14:34:29 -0700595 *
Keun-young Park254dbce2016-03-28 09:37:04 -0700596 * A focus response should be sent per each focus request even if there is no change in
597 * focus state. This can happen in case like focus request only involving context change
598 * where android side still needs matching focus response to confirm that audio module
599 * has made necessary changes.
600 *
Sanket Agarwalfb636682015-08-11 14:34:29 -0700601 * If car does not support VEHICLE_PROPERTY_AUDIO_FOCUS, focus is assumed to be granted always.
602 *
Keun-young Parkfe599a82016-02-12 14:26:57 -0800603 * @value_type VEHICLE_VALUE_TYPE_INT32_VEC4
Sanket Agarwalfb636682015-08-11 14:34:29 -0700604 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
605 * @access VEHICLE_PROP_ACCESS_READ_WRITE
606 * @data_member int32_array
607 */
Steve Paikcc9e2922016-04-21 11:40:17 -0700608#define VEHICLE_PROPERTY_AUDIO_FOCUS (0x00000900)
Sanket Agarwalfb636682015-08-11 14:34:29 -0700609
610enum vehicle_audio_focus_request {
611 VEHICLE_AUDIO_FOCUS_REQUEST_GAIN = 0x1,
612 VEHICLE_AUDIO_FOCUS_REQUEST_GAIN_TRANSIENT = 0x2,
613 VEHICLE_AUDIO_FOCUS_REQUEST_GAIN_TRANSIENT_MAY_DUCK = 0x3,
Keun-young Parkcb354502016-02-08 18:15:55 -0800614 /**
615 * This is for the case where android side plays sound like UI feedback
616 * and car side does not need to duck existing playback as long as
617 * requested stream is available.
618 */
619 VEHICLE_AUDIO_FOCUS_REQUEST_GAIN_TRANSIENT_NO_DUCK = 0x4,
620 VEHICLE_AUDIO_FOCUS_REQUEST_RELEASE = 0x5,
Sanket Agarwalfb636682015-08-11 14:34:29 -0700621};
622
623enum vehicle_audio_focus_state {
624 /**
625 * Android side has permanent focus and can play allowed streams.
626 */
627 VEHICLE_AUDIO_FOCUS_STATE_GAIN = 0x1,
628 /**
629 * Android side has transient focus and can play allowed streams.
630 */
631 VEHICLE_AUDIO_FOCUS_STATE_GAIN_TRANSIENT = 0x2,
632 /**
633 * Car audio module is playing guidance kind of sound outside Android. Android side can
634 * still play through allowed streams with ducking.
635 */
636 VEHICLE_AUDIO_FOCUS_STATE_LOSS_TRANSIENT_CAN_DUCK = 0x3,
637 /**
638 * Car audio module is playing transient sound outside Android. Android side should stop
639 * playing any sounds.
640 */
641 VEHICLE_AUDIO_FOCUS_STATE_LOSS_TRANSIENT = 0x4,
642 /**
643 * Android side has lost focus and cannot play any sound.
644 */
645 VEHICLE_AUDIO_FOCUS_STATE_LOSS = 0x5,
646 /**
647 * car audio module is playing safety critical sound, and Android side cannot request focus
648 * until the current state is finished. car audio module should restore it to the previous
649 * state when it can allow Android to play.
650 */
651 VEHICLE_AUDIO_FOCUS_STATE_LOSS_TRANSIENT_EXLCUSIVE = 0x6,
652};
653
654/**
655 * Flags to represent multiple streams by combining these.
656 */
657enum vehicle_audio_stream_flag {
658 VEHICLE_AUDIO_STREAM_STREAM0_FLAG = (0x1<<0),
659 VEHICLE_AUDIO_STREAM_STREAM1_FLAG = (0x1<<1),
660 VEHICLE_AUDIO_STREAM_STREAM2_FLAG = (0x1<<2),
661};
662
663/**
664 * Represents stream number (always 0 to N -1 where N is max number of streams).
665 * Can be used for audio related property expecting one stream.
666 */
667enum vehicle_audio_stream {
668 VEHICLE_AUDIO_STREAM0 = 0,
669 VEHICLE_AUDIO_STREAM1 = 1,
670};
671
672/**
673 * Flag to represent external focus state (outside Android).
674 */
675enum vehicle_audio_ext_focus_flag {
676 /**
677 * No external focus holder.
678 */
679 VEHICLE_AUDIO_EXT_FOCUS_NONE_FLAG = 0x0,
680 /**
681 * Car side (outside Android) has component holding GAIN kind of focus state.
682 */
683 VEHICLE_AUDIO_EXT_FOCUS_CAR_PERMANENT_FLAG = 0x1,
684 /**
685 * Car side (outside Android) has component holding GAIN_TRANSIENT kind of focus state.
686 */
687 VEHICLE_AUDIO_EXT_FOCUS_CAR_TRANSIENT_FLAG = 0x2,
688 /**
689 * Car side is expected to play something while focus is held by Android side. One example
690 * can be radio attached in car side. But Android's radio app still should have focus,
691 * and Android side should be in GAIN state, but media stream will not be allocated to Android
692 * side and car side can play radio any time while this flag is active.
693 */
694 VEHICLE_AUDIO_EXT_FOCUS_CAR_PLAY_ONLY_FLAG = 0x4,
Keun-young Park418c7e82016-04-06 10:44:20 -0700695 /**
696 * Car side should mute any media including radio. This can be used with any focus request
697 * including GAIN* and RELEASE.
698 */
699 VEHICLE_AUDIO_EXT_FOCUS_CAR_MUTE_MEDIA_FLAG = 0x8,
Sanket Agarwalfb636682015-08-11 14:34:29 -0700700};
701
702/**
703 * Index in int32_array for VEHICLE_PROPERTY_AUDIO_FOCUS property.
704 */
705enum vehicle_audio_focus_index {
706 VEHICLE_AUDIO_FOCUS_INDEX_FOCUS = 0,
707 VEHICLE_AUDIO_FOCUS_INDEX_STREAMS = 1,
708 VEHICLE_AUDIO_FOCUS_INDEX_EXTERNAL_FOCUS_STATE = 2,
Keun-young Parkfe599a82016-02-12 14:26:57 -0800709 VEHICLE_AUDIO_FOCUS_INDEX_AUDIO_CONTEXTS = 3,
710};
711
712/**
713 * Flags to tell the current audio context.
714 */
715enum vehicle_audio_context_flag {
716 /** Music playback is currently active. */
717 VEHICLE_AUDIO_CONTEXT_MUSIC_FLAG = 0x1,
718 /** Navigation is currently running. */
719 VEHICLE_AUDIO_CONTEXT_NAVIGATION_FLAG = 0x2,
720 /** Voice command session is currently running. */
721 VEHICLE_AUDIO_CONTEXT_VOICE_COMMAND_FLAG = 0x4,
722 /** Voice call is currently active. */
723 VEHICLE_AUDIO_CONTEXT_CALL_FLAG = 0x8,
724 /** Alarm is active. This may be only used in VEHICLE_PROPERTY_AUDIO_ROUTING_POLICY. */
725 VEHICLE_AUDIO_CONTEXT_ALARM_FLAG = 0x10,
726 /**
727 * Notification sound is active. This may be only used in VEHICLE_PROPERTY_AUDIO_ROUTING_POLICY.
728 */
729 VEHICLE_AUDIO_CONTEXT_NOTIFICATION_FLAG = 0x20,
730 /**
731 * Context unknown. Only used for VEHICLE_PROPERTY_AUDIO_ROUTING_POLICY to represent default
732 * stream for unknown contents.
733 */
734 VEHICLE_AUDIO_CONTEXT_UNKNOWN_FLAG = 0x40,
735 /** Safety alert / warning is played. */
736 VEHICLE_AUDIO_CONTEXT_SAFETY_ALERT_FLAG = 0x80,
737 /** CD / DVD kind of audio is played */
Keun-young Park9f376f52016-03-03 17:47:18 -0800738 VEHICLE_AUDIO_CONTEXT_CD_ROM_FLAG = 0x100,
Keun-young Parkfe599a82016-02-12 14:26:57 -0800739 /** Aux audio input is played */
Keun-young Park9f376f52016-03-03 17:47:18 -0800740 VEHICLE_AUDIO_CONTEXT_AUX_AUDIO_FLAG = 0x200,
Keun-young Parkfe599a82016-02-12 14:26:57 -0800741 /** system sound like UI feedback */
Keun-young Park9f376f52016-03-03 17:47:18 -0800742 VEHICLE_AUDIO_CONTEXT_SYSTEM_SOUND_FLAG = 0x400,
Keun-young Parkfe599a82016-02-12 14:26:57 -0800743 /** Radio is played */
Keun-young Park9f376f52016-03-03 17:47:18 -0800744 VEHICLE_AUDIO_CONTEXT_RADIO_FLAG = 0x800,
Keun-young Park726122a2016-06-28 12:54:47 -0700745 /** Ext source is played. This is for tagging generic ext sources. */
746 VEHICLE_AUDIO_CONTEXT_EXT_SOURCE_FLAG = 0x1000,
Sanket Agarwalfb636682015-08-11 14:34:29 -0700747};
748
749/**
Keun-young Parkbf877a72015-12-21 14:16:05 -0800750 * Property to control audio volume of each audio context.
Sanket Agarwalfb636682015-08-11 14:34:29 -0700751 *
Keun-young Park12a3c012016-03-23 17:58:29 -0700752 * vehicle_prop_config_t
753 * config_array[0] : bit flags of all supported audio contexts. If this is 0,
754 * audio volume is controlled per physical stream
755 * config_array[1] : flags defined in vehicle_audio_volume_capability_flag to
756 * represent audio module's capability.
757 *
Sanket Agarwalfb636682015-08-11 14:34:29 -0700758 * Data type looks like:
Keun-young Park12a3c012016-03-23 17:58:29 -0700759 * int32_array[0] : stream context as defined in vehicle_audio_context_flag. If only physical
760 stream is supported (config_array[0] == 0), this will represent physical
761 stream number.
Sanket Agarwalfb636682015-08-11 14:34:29 -0700762 * int32_array[1] : volume level, valid range is 0 to int32_max_value defined in config.
763 * 0 will be mute state. int32_min_value in config should be always 0.
764 * int32_array[2] : One of vehicle_audio_volume_state.
765 *
766 * This property requires per stream based get. HAL implementation should check stream number
767 * in get call to return the right volume.
768 *
769 * @value_type VEHICLE_VALUE_TYPE_INT32_VEC3
770 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
771 * @access VEHICLE_PROP_ACCESS_READ_WRITE
Keun-young Parkbf877a72015-12-21 14:16:05 -0800772 * @config_flags all audio contexts supported.
Sanket Agarwalfb636682015-08-11 14:34:29 -0700773 * @data_member int32_array
774 */
Steve Paikcc9e2922016-04-21 11:40:17 -0700775#define VEHICLE_PROPERTY_AUDIO_VOLUME (0x00000901)
Sanket Agarwalfb636682015-08-11 14:34:29 -0700776
Keun-young Park12a3c012016-03-23 17:58:29 -0700777
778/**
779 * flags to represent capability of audio volume property.
780 * used in config_array[1] of vehicle_prop_config_t.
781 */
782enum vehicle_audio_volume_capability_flag {
783 /**
784 * External audio module or vehicle hal has persistent storage
785 * to keep the volume level. This should be set only when per context
786 * volume level is supproted. When this is set, audio volume level per
787 * each context will be retrieved from the property when systen starts up.
788 * And external audio module is also expected to adjust volume automatically
789 * whenever there is an audio context change.
790 * When this flag is not set, android side will assume that there is no
791 * persistent storage and stored value in android side will be used to
792 * initialize the volume level. And android side will set volume level
793 * of each physical streams whenever there is an audio context change.
794 */
795 VEHICLE_AUDIO_VOLUME_CAPABILITY_PERSISTENT_STORAGE = 0x1,
Keun-young Parke086bd72016-05-24 09:41:54 -0700796 /**
797 * When this flag is set, the H/W can support only single master volume for all streams.
798 * There is no way to set volume level differently per each stream or context.
799 */
800 VEHICLE_AUDIO_VOLUME_CAPABILITY_MASTER_VOLUME_ONLY = 0x2,
Keun-young Park12a3c012016-03-23 17:58:29 -0700801};
802
Steve Paikcc9e2922016-04-21 11:40:17 -0700803
Sanket Agarwalfb636682015-08-11 14:34:29 -0700804/**
805 * enum to represent audio volume state.
806 */
807enum vehicle_audio_volume_state {
808 VEHICLE_AUDIO_VOLUME_STATE_OK = 0,
809 /**
810 * Audio volume has reached volume limit set in VEHICLE_PROPERTY_AUDIO_VOLUME_LIMIT
811 * and user's request to increase volume further is not allowed.
812 */
813 VEHICLE_AUDIO_VOLUME_STATE_LIMIT_REACHED = 1,
814};
815
816/**
817 * Index in int32_array for VEHICLE_PROPERTY_AUDIO_VOLUME property.
818 */
819enum vehicle_audio_volume_index {
820 VEHICLE_AUDIO_VOLUME_INDEX_STREAM = 0,
821 VEHICLE_AUDIO_VOLUME_INDEX_VOLUME = 1,
822 VEHICLE_AUDIO_VOLUME_INDEX_STATE = 2,
823};
824
825/**
826 * Property for handling volume limit set by user. This limits maximum volume that can be set
Keun-young Park12a3c012016-03-23 17:58:29 -0700827 * per each context or physical stream.
828 *
829 * vehicle_prop_config_t
830 * config_array[0] : bit flags of all supported audio contexts. If this is 0,
831 * audio volume is controlled per physical stream
832 * config_array[1] : flags defined in vehicle_audio_volume_capability_flag to
833 * represent audio module's capability.
834 *
835 * Data type looks like:
836 * int32_array[0] : stream context as defined in vehicle_audio_context_flag. If only physical
837 * stream is supported (config_array[0] == 0), this will represent physical
838 * stream number.
Sanket Agarwalfb636682015-08-11 14:34:29 -0700839 * int32_array[1] : maximum volume set to the stream. If there is no restriction, this value
840 * will be bigger than VEHICLE_PROPERTY_AUDIO_VOLUME's max value.
841 *
842 * If car does not support this feature, this property should not be populated by HAL.
843 * This property requires per stream based get. HAL implementation should check stream number
844 * in get call to return the right volume.
845 *
846 * @value_type VEHICLE_VALUE_TYPE_INT32_VEC2
847 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
848 * @access VEHICLE_PROP_ACCESS_READ_WRITE
Keun-young Parkbf877a72015-12-21 14:16:05 -0800849 * @config_flags all audio contexts supported.
Sanket Agarwalfb636682015-08-11 14:34:29 -0700850 * @data_member int32_array
851 */
Steve Paikcc9e2922016-04-21 11:40:17 -0700852#define VEHICLE_PROPERTY_AUDIO_VOLUME_LIMIT (0x00000902)
Sanket Agarwalfb636682015-08-11 14:34:29 -0700853
854/**
855 * Index in int32_array for VEHICLE_PROPERTY_AUDIO_VOLUME_LIMIT property.
856 */
857enum vehicle_audio_volume_limit_index {
858 VEHICLE_AUDIO_VOLUME_LIMIT_INDEX_STREAM = 0,
859 VEHICLE_AUDIO_VOLUME_LIMIT_INDEX_MAX_VOLUME = 1,
860};
861
862/**
863 * Property to share audio routing policy of android side. This property is set at the beginning
864 * to pass audio policy in android side down to vehicle HAL and car audio module.
865 * This can be used as a hint to adjust audio policy or other policy decision.
866 *
867 * int32_array[0] : audio stream where the audio for the application context will be routed
868 * by default. Note that this is the default setting from system, but each app
869 * may still use different audio stream for whatever reason.
Keun-young Parkbf877a72015-12-21 14:16:05 -0800870 * int32_array[1] : All audio contexts that will be sent through the physical stream. Flag
871 * is defined in vehicle_audio_context_flag.
Sanket Agarwalfb636682015-08-11 14:34:29 -0700872
873 * Setting of this property will be done for all available physical streams based on audio H/W
874 * variant information acquired from VEHICLE_PROPERTY_AUDIO_HW_VARIANT property.
875 *
876 * @value_type VEHICLE_VALUE_TYPE_INT32_VEC2
877 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
878 * @access VEHICLE_PROP_ACCESS_WRITE
879 * @data_member int32_array
880 */
Steve Paikcc9e2922016-04-21 11:40:17 -0700881#define VEHICLE_PROPERTY_AUDIO_ROUTING_POLICY (0x00000903)
Sanket Agarwalfb636682015-08-11 14:34:29 -0700882
883/**
884 * Index in int32_array for VEHICLE_PROPERTY_AUDIO_ROUTING_POLICY property.
885 */
886enum vehicle_audio_routing_policy_index {
887 VEHICLE_AUDIO_ROUTING_POLICY_INDEX_STREAM = 0,
888 VEHICLE_AUDIO_ROUTING_POLICY_INDEX_CONTEXTS = 1,
889};
890
891/**
892* Property to return audio H/W variant type used in this car. This allows android side to
893* support different audio policy based on H/W variant used. Note that other components like
894* CarService may need overlay update to support additional variants. If this property does not
895* exist, default audio policy will be used.
896*
897* @value_type VEHICLE_VALUE_TYPE_INT32
898* @change_mode VEHICLE_PROP_CHANGE_MODE_STATIC
899* @access VEHICLE_PROP_ACCESS_READ
Keun-young Parkbf877a72015-12-21 14:16:05 -0800900* @config_flags Additional info on audio H/W. Should use vehicle_audio_hw_variant_config_flag for
901* this.
Sanket Agarwalfb636682015-08-11 14:34:29 -0700902* @data_member int32_value
903*/
Steve Paikcc9e2922016-04-21 11:40:17 -0700904#define VEHICLE_PROPERTY_AUDIO_HW_VARIANT (0x00000904)
Sanket Agarwalfb636682015-08-11 14:34:29 -0700905
906/**
907 * Flag to be used in vehicle_prop_config.config_flags for VEHICLE_PROPERTY_AUDIO_HW_VARIANT.
908 */
909enum vehicle_audio_hw_variant_config_flag {
910 /**
Keun-young Park637fb202016-03-29 09:52:41 -0700911 * Flag to tell that radio is internal to android and radio should
912 * be treated like other android stream like media.
913 * When this flag is not set or AUDIO_HW_VARIANT does not exist,
914 * radio is treated as external module. This brins some delta in audio focus
915 * handling as well.
Sanket Agarwalfb636682015-08-11 14:34:29 -0700916 */
Keun-young Park637fb202016-03-29 09:52:41 -0700917 VEHICLE_AUDIO_HW_VARIANT_FLAG_INTERNAL_RADIO_FLAG = 0x1,
Sanket Agarwalfb636682015-08-11 14:34:29 -0700918};
919
Keun-young Park726122a2016-06-28 12:54:47 -0700920/** audio routing for AM/FM. This should be also be the value when there is only one
921 radio module in the system. */
922#define VEHICLE_PROPERTY_AUDIO_EXT_ROUTING_SOURCE_RADIO_AM_FM "RADIO_AM_FM"
923/** Should be added only when there is a separate radio module with HD capability. */
924#define VEHICLE_PROPERTY_AUDIO_EXT_ROUTING_SOURCE_RADIO_AM_FM_HD "RADIO_AM_FM_HD"
925/** For digial audio broadcasting type of radio */
926#define VEHICLE_PROPERTY_AUDIO_EXT_ROUTING_SOURCE_RADIO_DAB "RADIO_DAB"
927/** For satellite type of radio */
928#define VEHICLE_PROPERTY_AUDIO_EXT_ROUTING_SOURCE_RADIO_SATELLITE "RADIO_SATELLITE"
929/** For CD or DVD */
930#define VEHICLE_PROPERTY_AUDIO_EXT_ROUTING_SOURCE_CD_DVD "CD_DVD"
931/** For 1st auxiliary input */
932#define VEHICLE_PROPERTY_AUDIO_EXT_ROUTING_SOURCE_AUX_IN0 "AUX_IN0"
933/** For 2nd auxiliary input */
934#define VEHICLE_PROPERTY_AUDIO_EXT_ROUTING_SOURCE_AUX_IN1 "AUX_IN1"
935/** For navigation guidance from outside android */
936#define VEHICLE_PROPERTY_AUDIO_EXT_ROUTING_SOURCE_EXT_NAV_GUIDANCE "EXT_NAV_GUIDANCE"
937/** For voice command from outside android */
938#define VEHICLE_PROPERTY_AUDIO_EXT_ROUTING_SOURCE_EXT_VOICE_COMMAND "EXT_VOICE_COMMAND"
939/** For voice call from outside android */
940#define VEHICLE_PROPERTY_AUDIO_EXT_ROUTING_SOURCE_EXT_VOICE_CALL "EXT_VOICE_CALL"
941/** For safety alert from outside android */
942#define VEHICLE_PROPERTY_AUDIO_EXT_ROUTING_SOURCE_EXT_SAFETY_ALERT "EXT_SAFETY_ALERT"
943
944/**
945* Property to pass hint on external audio routing. When android side request focus
946* with VEHICLE_AUDIO_EXT_FOCUS_CAR_PLAY_ONLY_FLAG flag, this property will be set
947* before setting AUDIO_FOCUS property as a hint for external audio source routing.
948* Note that setting this property alone should not trigger any change.
949* Audio routing should be changed only when AUDIO_FOCUS property is set. Note that
950* this property allows passing custom value as long as it is defined in config_string.
951* This allows supporting non-standard routing options through this property.
952* It is recommended to use separate name space for custom property to prevent conflict in future
953* android releases.
954* Enabling each external routing option is done by enabling each bit flag for the routing.
955* This property can support up to 128 external routings.
956* To give full flexibility, there is no standard definition for each bit flag and
957* assigning each big flag to specific routing type is decided by config_string.
958* config_string has format of each entry separated by ','
959* and each entry has format of bitFlagPositon:typeString[:physicalStreamNumber].
960* bitFlagPosition: represents which big flag will be set to enable this routing. 0 means
961* LSB in int32_array[0]. 31 will be MSB in int32_array[0]. 127 will MSB in int32_array[3].
962* typeString: string representation of external routing. Some types are already defined
963* in VEHICLE_PROPERTY_AUDIO_EXT_ROUTING_SOURCE_* and use them first before adding something
964* custom. Applications will find each routing using this string.
965* physicalStreamNumber: This part is optional and represents physical stream to android
966* which will be disabled when this routing is enabled. If not specified, this routing
967* should not affect physical streams to android.
968* As an example, let's assume a system with two physical streams, 0 for media and 1 for
969* nav guidance. And let's assume external routing option of am fm radio, external navigation
970* guidance, satellite radio, and one custom. Let's assume that radio and satellite replaces
971* physical stream 0 and external navigation replaces physical stream 1. And bit flag will be
972* assigned in the order listed above. This configuration will look like this in config_string:
973* "0:RADIO_AM_FM:0,1:EXT_NAV_GUIDANCE:1,2:RADIO_SATELLITE:0,3:com.test.SOMETHING_CUSTOM"
974* When android requests RADIO_AM_FM, int32_array[0] will be set to 0x1.
975* When android requests RADIO_SATELLITE + EXT_NAV_GUIDANCE, int32_array[0] will be set to 0x2|0x4.
976*
977* @value_type VEHICLE_VALUE_TYPE_INT32_VEC4
978* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
979* @access VEHICLE_PROP_ACCESS_WRITE|VEHICLE_PROP_ACCESS_READ_WRITE
980* @config_string List of all avaiable external source in the system.
981* @data_member int32_array
982*/
983#define VEHICLE_PROPERTY_AUDIO_EXT_ROUTING_HINT (0x00000905)
Keun-young Parkcb8c8872016-01-08 09:41:19 -0800984
985/**
Sanket Agarwalfb636682015-08-11 14:34:29 -0700986 * Property to control power state of application processor.
987 *
988 * It is assumed that AP's power state is controller by separate power controller.
989 *
990 * For configuration information, vehicle_prop_config.config_flags can have bit flag combining
991 * values in vehicle_ap_power_state_config_type.
992 *
993 * For get / notification, data type looks like this:
994 * int32_array[0] : vehicle_ap_power_state_type
995 * int32_array[1] : additional parameter relevant for each state. should be 0 if not used.
996 * For set, data type looks like this:
997 * int32_array[0] : vehicle_ap_power_state_set_type
998 * int32_array[1] : additional parameter relevant for each request. should be 0 if not used.
999 *
1000 * @value_type VEHICLE_VALUE_TYPE_INT32_VEC2
1001 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1002 * @access VEHICLE_PROP_ACCESS_READ_WRITE
Keun-young Parkbf877a72015-12-21 14:16:05 -08001003 * @config_flags Additional info on power state. Should use vehicle_ap_power_state_config_flag.
Sanket Agarwalfb636682015-08-11 14:34:29 -07001004 * @data_member int32_array
1005 */
Steve Paikcc9e2922016-04-21 11:40:17 -07001006#define VEHICLE_PROPERTY_AP_POWER_STATE (0x00000A00)
Sanket Agarwalfb636682015-08-11 14:34:29 -07001007
1008enum vehicle_ap_power_state_config_flag {
1009 /**
1010 * AP can enter deep sleep state. If not set, AP will always shutdown from
1011 * VEHICLE_AP_POWER_STATE_SHUTDOWN_PREPARE power state.
1012 */
1013 VEHICLE_AP_POWER_STATE_CONFIG_ENABLE_DEEP_SLEEP_FLAG = 0x1,
1014
1015 /**
1016 * The power controller can power on AP from off state after timeout specified in
1017 * VEHICLE_AP_POWER_SET_SHUTDOWN_READY message.
1018 */
1019 VEHICLE_AP_POWER_STATE_CONFIG_SUPPORT_TIMER_POWER_ON_FLAG = 0x2,
1020};
1021
1022enum vehicle_ap_power_state {
1023 /** vehicle HAL will never publish this state to AP */
1024 VEHICLE_AP_POWER_STATE_OFF = 0,
1025 /** vehicle HAL will never publish this state to AP */
1026 VEHICLE_AP_POWER_STATE_DEEP_SLEEP = 1,
1027 /** AP is on but display should be off. */
1028 VEHICLE_AP_POWER_STATE_ON_DISP_OFF = 2,
1029 /** AP is on with display on. This state allows full user interaction. */
1030 VEHICLE_AP_POWER_STATE_ON_FULL = 3,
1031 /**
1032 * The power controller has requested AP to shutdown. AP can either enter sleep state or start
1033 * full shutdown. AP can also request postponing shutdown by sending
1034 * VEHICLE_AP_POWER_SET_SHUTDOWN_POSTPONE message. The power controller should change power
1035 * state to this state to shutdown system.
1036 *
1037 * int32_array[1] : one of enum_vehicle_ap_power_state_shutdown_param_type
1038 */
1039 VEHICLE_AP_POWER_STATE_SHUTDOWN_PREPARE = 4,
1040};
1041
1042enum vehicle_ap_power_state_shutdown_param {
1043 /** AP should shutdown immediately. Postponing is not allowed. */
1044 VEHICLE_AP_POWER_SHUTDOWN_PARAM_SHUTDOWN_IMMEDIATELY = 1,
1045 /** AP can enter deep sleep instead of shutting down completely. */
1046 VEHICLE_AP_POWER_SHUTDOWN_PARAM_CAN_SLEEP = 2,
1047 /** AP can only shutdown with postponing allowed. */
1048 VEHICLE_AP_POWER_SHUTDOWN_PARAM_SHUTDOWN_ONLY = 3,
1049};
1050
1051enum vehicle_ap_power_set_state {
1052 /**
1053 * AP has finished boot up, and can start shutdown if requested by power controller.
1054 */
1055 VEHICLE_AP_POWER_SET_BOOT_COMPLETE = 0x1,
1056 /**
1057 * AP is entering deep sleep state. How this state is implemented may vary depending on
1058 * each H/W, but AP's power should be kept in this state.
1059 */
1060 VEHICLE_AP_POWER_SET_DEEP_SLEEP_ENTRY = 0x2,
1061 /**
1062 * AP is exiting from deep sleep state, and is in VEHICLE_AP_POWER_STATE_SHUTDOWN_PREPARE state.
1063 * The power controller may change state to other ON states based on the current state.
1064 */
1065 VEHICLE_AP_POWER_SET_DEEP_SLEEP_EXIT = 0x3,
1066 /**
1067 * int32_array[1]: Time to postpone shutdown in ms. Maximum value can be 5000 ms.
1068 * If AP needs more time, it will send another POSTPONE message before
1069 * the previous one expires.
1070 */
1071 VEHICLE_AP_POWER_SET_SHUTDOWN_POSTPONE = 0x4,
1072 /**
1073 * AP is starting shutting down. When system completes shutdown, everything will stop in AP
1074 * as kernel will stop all other contexts. It is responsibility of vehicle HAL or lower level
1075 * to synchronize that state with external power controller. As an example, some kind of ping
1076 * with timeout in power controller can be a solution.
1077 *
1078 * int32_array[1]: Time to turn on AP in secs. Power controller may turn on AP after specified
1079 * time so that AP can run tasks like update. If it is set to 0, there is no
1080 * wake up, and power controller may not necessarily support wake-up.
1081 * If power controller turns on AP due to timer, it should start with
1082 * VEHICLE_AP_POWER_STATE_ON_DISP_OFF state, and after receiving
1083 * VEHICLE_AP_POWER_SET_BOOT_COMPLETE, it shall do state transition to
1084 * VEHICLE_AP_POWER_STATE_SHUTDOWN_PREPARE.
1085 */
1086 VEHICLE_AP_POWER_SET_SHUTDOWN_START = 0x5,
1087 /**
1088 * User has requested to turn off headunit's display, which is detected in android side.
1089 * The power controller may change the power state to VEHICLE_AP_POWER_STATE_ON_DISP_OFF.
1090 */
1091 VEHICLE_AP_POWER_SET_DISPLAY_OFF = 0x6,
1092 /**
1093 * User has requested to turn on headunit's display, most probably from power key input which
1094 * is attached to headunit. The power controller may change the power state to
1095 * VEHICLE_AP_POWER_STATE_ON_FULL.
1096 */
1097 VEHICLE_AP_POWER_SET_DISPLAY_ON = 0x7,
1098};
1099
1100/**
1101 * Property to represent brightness of the display. Some cars have single control for
1102 * the brightness of all displays and this property is to share change in that control.
1103 *
1104 * If this is writable, android side can set this value when user changes display brightness
1105 * from Settings. If this is read only, user may still change display brightness from Settings,
1106 * but that will not be reflected to other displays.
1107 *
1108 * @value_type VEHICLE_VALUE_TYPE_INT32
1109 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1110 * @access VEHICLE_PROP_ACCESS_READ|VEHICLE_PROP_ACCESS_READ_WRITE
1111 * @data_member int32
1112 */
Steve Paikcc9e2922016-04-21 11:40:17 -07001113#define VEHICLE_PROPERTY_DISPLAY_BRIGHTNESS (0x00000A01)
Sanket Agarwalfb636682015-08-11 14:34:29 -07001114
1115
1116/**
1117 * Index in int32_array for VEHICLE_PROPERTY_AP_POWER_STATE property.
1118 */
1119enum vehicle_ap_power_state_index {
1120 VEHICLE_AP_POWER_STATE_INDEX_STATE = 0,
1121 VEHICLE_AP_POWER_STATE_INDEX_ADDITIONAL = 1,
1122};
1123
1124/**
1125* Property to report bootup reason for the current power on. This is a static property that will
1126* not change for the whole duration until power off. For example, even if user presses power on
1127* button after automatic power on with door unlock, bootup reason should stay with
1128* VEHICLE_AP_POWER_BOOTUP_REASON_USER_UNLOCK.
1129*
1130* int32_value should be vehicle_ap_power_bootup_reason.
1131*
1132* @value_type VEHICLE_VALUE_TYPE_INT32
1133* @change_mode VEHICLE_PROP_CHANGE_MODE_STATIC
1134* @access VEHICLE_PROP_ACCESS_READ
1135* @data_member int32_value
1136*/
1137#define VEHICLE_PROPERTY_AP_POWER_BOOTUP_REASON (0x00000A02)
1138
1139/**
1140 * Enum to represent bootup reason.
1141 */
1142enum vehicle_ap_power_bootup_reason {
1143 /**
1144 * Power on due to user's pressing of power key or rotating of ignition switch.
1145 */
1146 VEHICLE_AP_POWER_BOOTUP_REASON_USER_POWER_ON = 0,
1147 /**
1148 * Automatic power on triggered by door unlock or any other kind of automatic user detection.
1149 */
1150 VEHICLE_AP_POWER_BOOTUP_REASON_USER_UNLOCK = 1,
1151 /**
1152 * Automatic power on triggered by timer. This only happens when AP has asked wake-up after
1153 * certain time through time specified in VEHICLE_AP_POWER_SET_SHUTDOWN_START.
1154 */
1155 VEHICLE_AP_POWER_BOOTUP_REASON_TIMER = 2,
1156};
1157
Keun-young Parkcb354502016-02-08 18:15:55 -08001158
1159/**
1160 * Property to feed H/W input events to android
1161 *
1162 * int32_array[0] : action defined by vehicle_hw_key_input_action
1163 * int32_array[1] : key code, should use standard android key code
1164 * int32_array[2] : target display defined in vehicle_display. Events not tied
1165 * to specific display should be sent to DISPLAY_MAIN.
1166 * int32_array[3] : reserved for now. should be zero
1167 * @value_type VEHICLE_VALUE_TYPE_INT32_VEC4
1168 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1169 * @access VEHICLE_PROP_ACCESS_READ
1170 * @config_flags
1171 * @data_member int32_array
1172 */
1173#define VEHICLE_PROPERTY_HW_KEY_INPUT (0x00000A10)
1174
1175enum vehicle_hw_key_input_action {
1176 /** Key down */
1177 VEHICLE_HW_KEY_INPUT_ACTION_DOWN = 0,
1178 /** Key up */
1179 VEHICLE_HW_KEY_INPUT_ACTION_UP = 1,
1180};
1181
1182enum vehicle_display {
1183 /** center console */
1184 VEHICLE_DISPLAY_MAIN = 0,
1185 VEHICLE_DISPLAY_INSTRUMENT_CLUSTER = 1,
1186};
1187
Sanket Agarwalfb636682015-08-11 14:34:29 -07001188/**
Keun-young Parkfe599a82016-02-12 14:26:57 -08001189 * Property to define instrument cluster information.
1190 * For CLUSTER_TYPE_EXTERNAL_DISPLAY:
1191 * READ:
1192 * int32_array[0] : The current screen mode index. Screen mode is defined
1193 * as a configuration in car service and represents which
1194 * area of screen is renderable.
1195 * int32_array[1] : Android can render to instrument cluster (=1) or not(=0). When this is 0,
1196 * instrument cluster may be rendering some information in the area
1197 * allocated for android and android side rendering is invisible. *
1198 * int32_array[2..3] : should be zero
1199 * WRITE from android:
1200 * int32_array[0] : Preferred mode for android side. Depending on the app rendering to instrument
1201 * cluster, preferred mode can change. Instrument cluster still needs to send
1202 * event with new mode to trigger actual mode change.
1203 * int32_array[1] : The current app context relevant for instrument cluster. Use the same flag
1204 * with vehicle_audio_context_flag but this context represents active apps, not
1205 * active audio. Instrument cluster side may change mode depending on the
1206 * currently active contexts.
1207 * int32_array[2..3] : should be zero
1208 * When system boots up, Android side will write {0, 0, 0, 0} when it is ready to render to
1209 * instrument cluster. Before this message, rendering from android should not be visible in the
1210 * cluster.
1211 * @value_type VEHICLE_VALUE_TYPE_INT32_VEC4
1212 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1213 * @access VEHICLE_PROP_ACCESS_READ_WRITE
1214 * @config_array 0:vehicle_instument_cluster_type 1:hw type
1215 * @data_member int32_array
1216 */
Steve Paikcc9e2922016-04-21 11:40:17 -07001217#define VEHICLE_PROPERTY_INSTRUMENT_CLUSTER_INFO (0x00000A20)
Keun-young Parkfe599a82016-02-12 14:26:57 -08001218
1219/**
1220 * Represents instrument cluster type available in system
1221 */
1222enum vehicle_instument_cluster_type {
1223 /** Android has no access to instument cluster */
1224 VEHICLE_INSTRUMENT_CLUSTER_TYPE_NONE = 0,
1225 /**
1226 * Instrument cluster can communicate through vehicle hal with additional
1227 * properties to exchange meta-data
1228 */
1229 VEHICLE_INSTRUMENT_CLUSTER_TYPE_HAL_INTERFACE = 1,
1230 /**
1231 * Instrument cluster is external display where android can render contents
1232 */
1233 VEHICLE_INSTRUMENT_CLUSTER_TYPE_EXTERNAL_DISPLAY = 2,
1234};
1235
Steve Paikd432fc02016-05-11 16:25:33 -07001236/**
1237 * Current date and time, encoded as Unix time.
1238 * This value denotes the number of seconds that have elapsed since 1/1/1970.
1239 *
1240 * @value_type VEHICLE_VALUE_TYPE_INT64
Keun-young Parkda3cb912016-05-12 11:21:04 -07001241 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_SET
Steve Paikd432fc02016-05-11 16:25:33 -07001242 * @access VEHICLE_PROP_ACCESS_READ_WRITE
1243 * @data_member int64_value
1244 * @unit VEHICLE_UNIT_TYPE_SECS
1245 */
1246#define VEHICLE_PROPERTY_UNIX_TIME (0x00000A30)
1247
1248/**
1249 * Current time only.
1250 * Some vehicles may not keep track of date. This property only affects the current time, in
1251 * seconds during the day. Thus, the max value for this parameter is 86,400 (24 * 60 * 60)
1252 *
1253 * @value_type VEHICLE_VALUE_TYPE_INT32
Keun-young Parkda3cb912016-05-12 11:21:04 -07001254 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_SET
Steve Paikd432fc02016-05-11 16:25:33 -07001255 * @access VEHICLE_PROP_ACCESS_READ_WRITE
1256 * @data_member int32_value
1257 * @unit VEHICLE_UNIT_TYPE_SECS
1258 */
1259#define VEHICLE_PROPERTY_CURRENT_TIME_IN_SECONDS (0x00000A31)
Steve Paikcc9e2922016-04-21 11:40:17 -07001260
Steve Paike588bae2016-06-29 17:06:16 -07001261
1262//==== Car Cabin Properties ====
Steve Paikcc9e2922016-04-21 11:40:17 -07001263/**
Steve Paike588bae2016-06-29 17:06:16 -07001264 * Most Car Cabin properties have both a MOVE and POSITION parameter associated with them.
Steve Paikcc9e2922016-04-21 11:40:17 -07001265 *
Steve Paike588bae2016-06-29 17:06:16 -07001266 * The MOVE parameter will start moving the device in the indicated direction. The magnitude
1267 * indicates the relative speed. For instance, setting the WINDOW_MOVE parameter to +1 will roll
1268 * the window up. Setting it to +2 (if available) will roll it up faster.
Steve Paikcc9e2922016-04-21 11:40:17 -07001269 *
Steve Paike588bae2016-06-29 17:06:16 -07001270 * The POSITION parameter will move the device to the desired position. For instance, if the
1271 * WINDOW_POS has a range of 0-100, then setting this parameter to 50 will open the window halfway.
1272 * Depending upon the initial position, the window may move up or down to the 50% value.
Steve Paikcc9e2922016-04-21 11:40:17 -07001273 *
Steve Paike588bae2016-06-29 17:06:16 -07001274 * OEMs may choose to implement one or both of the MOVE/POSITION parameters depending upon the
1275 * capability of the hardware.
1276 */
1277
1278// Doors
1279/**
1280 * Door position
1281 *
1282 * This is an integer in case a door may be set to a particular position. Max
1283 * value indicates fully open, min value (0) indicates fully closed.
1284 *
1285 * Some vehicles (minivans) can open the door electronically. Hence, the ability
1286 * to write this property.
1287 *
Steve Paikada16692016-07-07 17:08:39 -07001288 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
Steve Paikcc9e2922016-04-21 11:40:17 -07001289 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
Steve Paike588bae2016-06-29 17:06:16 -07001290 * @access VEHICLE_PROP_ACCESS_READ|VEHICLE_PROP_ACCESS_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001291 * @zone_type VEHICLE_ZONE_TYPE_DOOR
Steve Paikd432fc02016-05-11 16:25:33 -07001292 * @data_member int32_value
Steve Paikcc9e2922016-04-21 11:40:17 -07001293 */
Steve Paike588bae2016-06-29 17:06:16 -07001294#define VEHICLE_PROPERTY_DOOR_POS (0x00000B00)
Steve Paikcc9e2922016-04-21 11:40:17 -07001295
1296/**
Steve Paike588bae2016-06-29 17:06:16 -07001297 * Door move
1298 *
Steve Paikada16692016-07-07 17:08:39 -07001299 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
Steve Paike588bae2016-06-29 17:06:16 -07001300 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1301 * @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001302 * @zone_type VEHICLE_ZONE_TYPE_DOOR
Steve Paike588bae2016-06-29 17:06:16 -07001303 * @data_member int32_value
1304 */
1305#define VEHICLE_PROPERTY_DOOR_MOVE (0x00000B01)
1306
1307
1308/**
1309 * Door lock
1310 *
1311 * 'true' indicates door is locked
1312 *
Steve Paikada16692016-07-07 17:08:39 -07001313 * @value_type VEHICLE_VALUE_TYPE_ZONED_BOOLEAN
Steve Paike588bae2016-06-29 17:06:16 -07001314 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1315 * @access VEHICLE_PROP_ACCESS_READ_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001316 * @zone_type VEHICLE_ZONE_TYPE_DOOR
Steve Paike588bae2016-06-29 17:06:16 -07001317 * @data_member boolean_value
1318 */
1319#define VEHICLE_PROPERTY_DOOR_LOCK (0x00000B02)
1320
1321// Mirrors
1322/**
1323 * Mirror Z Position
1324 *
1325 * Positive value indicates tilt upwards, negative value is downwards
1326 *
Steve Paikada16692016-07-07 17:08:39 -07001327 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
Steve Paike588bae2016-06-29 17:06:16 -07001328 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1329 * @access VEHICLE_PROP_ACCESS_READ_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001330 * @zone_type VEHICLE_ZONE_TYPE_MIRROR
Steve Paike588bae2016-06-29 17:06:16 -07001331 * @data_member int32_value
1332 */
1333#define VEHICLE_PROPERTY_MIRROR_Z_POS (0x00000B40)
1334
1335/**
1336 * Mirror Z Move
1337 *
1338 * Positive value indicates tilt upwards, negative value is downwards
1339 *
Steve Paikada16692016-07-07 17:08:39 -07001340 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
Steve Paike588bae2016-06-29 17:06:16 -07001341 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1342 * @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001343 * @zone_type VEHICLE_ZONE_TYPE_MIRROR
Steve Paike588bae2016-06-29 17:06:16 -07001344 * @data_member int32_value
1345 */
1346#define VEHICLE_PROPERTY_MIRROR_Z_MOVE (0x00000B41)
1347
1348/**
1349 * Mirror Y Position
1350 *
1351 * Positive value indicate tilt right, negative value is left
1352 *
Steve Paikada16692016-07-07 17:08:39 -07001353 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
Steve Paike588bae2016-06-29 17:06:16 -07001354 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1355 * @access VEHICLE_PROP_ACCESS_READ_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001356 * @zone_type VEHICLE_ZONE_TYPE_MIRROR
Steve Paike588bae2016-06-29 17:06:16 -07001357 * @data_member int32_value
1358 */
1359#define VEHICLE_PROPERTY_MIRROR_Y_POS (0x00000B42)
1360
1361/**
1362 * Mirror Y Move
1363 *
1364 * Positive value indicate tilt right, negative value is left
1365 *
Steve Paikada16692016-07-07 17:08:39 -07001366 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
Steve Paike588bae2016-06-29 17:06:16 -07001367 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1368 * @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001369 * @zone_type VEHICLE_ZONE_TYPE_MIRROR
Steve Paike588bae2016-06-29 17:06:16 -07001370 * @data_member int32_value
1371 */
1372#define VEHICLE_PROPERTY_MIRROR_Y_MOVE (0x00000B43)
1373
1374/**
1375 * Mirror Lock
1376 *
1377 * True indicates mirror positions are locked and not changeable
1378 *
Steve Paikada16692016-07-07 17:08:39 -07001379 * @value_type VEHICLE_VALUE_TYPE_BOOLEAN
Steve Paike588bae2016-06-29 17:06:16 -07001380 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1381 * @access VEHICLE_PROP_ACCESS_READ_WRITE
1382 * @data_member boolean_value
1383 */
1384#define VEHICLE_PROPERTY_MIRROR_LOCK (0x00000B44)
1385
1386/**
Steve Paike588bae2016-06-29 17:06:16 -07001387 * Mirror Fold
1388 *
1389 * True indicates mirrors are folded
1390 *
Steve Paikada16692016-07-07 17:08:39 -07001391 * @value_type VEHICLE_VALUE_TYPE_BOOLEAN
Steve Paike588bae2016-06-29 17:06:16 -07001392 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1393 * @access VEHICLE_PROP_ACCESS_READ_WRITE
1394 * @data_member boolean_value
1395 */
Steve Paikbfbbb672016-07-08 16:12:38 -07001396#define VEHICLE_PROPERTY_MIRROR_FOLD (0x00000B45)
Steve Paike588bae2016-06-29 17:06:16 -07001397
1398// Seats
1399/**
1400 * Seat memory select
Steve Paikcc9e2922016-04-21 11:40:17 -07001401 *
1402 * This parameter selects the memory preset to use to select the seat position.
1403 * The minValue is always 0, and the maxValue determines the number of seat
1404 * positions available.
1405 *
1406 * For instance, if the driver's seat has 3 memory presets, the maxValue will be 3.
1407 * When the user wants to select a preset, the desired preset number (1, 2, or 3)
1408 * is set.
1409 *
Keun-young Park7cb258e2016-04-25 18:37:28 -07001410 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
Steve Paikcc9e2922016-04-21 11:40:17 -07001411 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1412 * @access VEHICLE_PROP_ACCESS_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001413 * @zone_type VEHICLE_ZONE_TYPE_SEAT
Steve Paikd432fc02016-05-11 16:25:33 -07001414 * @data_member int32_value
Steve Paikcc9e2922016-04-21 11:40:17 -07001415 */
Steve Paike588bae2016-06-29 17:06:16 -07001416#define VEHICLE_PROPERTY_SEAT_MEMORY_SELECT (0x00000B80)
Steve Paikcc9e2922016-04-21 11:40:17 -07001417
1418/**
1419 * Seat memory set
1420 *
1421 * This setting allows the user to save the current seat position settings into
1422 * the selected preset slot. The maxValue for each seat position shall match
1423 * the maxValue for VEHICLE_PROPERTY_SEAT_MEMORY_SELECT.
1424 *
Keun-young Park7cb258e2016-04-25 18:37:28 -07001425 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
Steve Paikcc9e2922016-04-21 11:40:17 -07001426 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1427 * @access VEHICLE_PROP_ACCESS_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001428 * @zone_type VEHICLE_ZONE_TYPE_SEAT
Steve Paikd432fc02016-05-11 16:25:33 -07001429 * @data_member int32_value
Steve Paikcc9e2922016-04-21 11:40:17 -07001430 */
Steve Paike588bae2016-06-29 17:06:16 -07001431#define VEHICLE_PROPERTY_SEAT_MEMORY_SET (0x00000B81)
1432
1433/**
1434 * Seatbelt buckled
1435 *
1436 * True indicates belt is buckled.
1437 *
1438 * Write access indicates automatic seat buckling capabilities. There are no known cars at this
1439 * time, but you never know...
1440 *
1441 * @value_type VEHICLE_VALUE_TYPE_ZONED_BOOLEAN
1442 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1443 * @access VEHICLE_PROP_ACCESS_READ|VEHICLE_PROP_ACCESS_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001444 * @zone_type VEHICLE_ZONE_TYPE_SEAT
Steve Paike588bae2016-06-29 17:06:16 -07001445 * @data_member boolean_value
1446 */
1447#define VEHICLE_PROPERTY_SEAT_BELT_BUCKLED (0x00000B82)
1448
1449/**
1450 * Seatbelt height position
1451 *
1452 * Adjusts the shoulder belt anchor point.
1453 * Max value indicates highest position
1454 * Min value indicates lowest position
1455 *
1456 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
1457 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1458 * @access VEHICLE_PROP_ACCESS_READ_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001459 * @zone_type VEHICLE_ZONE_TYPE_SEAT
Steve Paike588bae2016-06-29 17:06:16 -07001460 * @data_member int32_value
1461 */
1462#define VEHICLE_PROPERTY_SEAT_BELT_HEIGHT_POS (0x00000B83)
1463
1464/**
1465 * Seatbelt height move
1466 *
1467 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
1468 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1469 * @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001470 * @zone_type VEHICLE_ZONE_TYPE_SEAT
Steve Paike588bae2016-06-29 17:06:16 -07001471 * @data_member int32_value
1472 */
1473#define VEHICLE_PROPERTY_SEAT_BELT_HEIGHT_MOVE (0x00000B84)
1474
1475/**
1476 * Seat fore/aft position
1477 *
1478 * Sets the seat position forward (closer to steering wheel) and backwards.
1479 * Max value indicates closest to wheel, min value indicates most rearward
1480 * position.
1481 *
1482 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
1483 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1484 * @access VEHICLE_PROP_ACCESS_READ_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001485 * @zone_type VEHICLE_ZONE_TYPE_SEAT
Steve Paike588bae2016-06-29 17:06:16 -07001486 * @data_member int32_value
1487 */
1488#define VEHICLE_PROPERTY_SEAT_FORE_AFT_POS (0x00000B85)
1489
1490/**
1491 * Seat fore/aft move
1492 *
1493 * Moves the seat position forward and aft.
1494 *
1495 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
1496 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1497 * @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001498 * @zone_type VEHICLE_ZONE_TYPE_SEAT
Steve Paike588bae2016-06-29 17:06:16 -07001499 * @data_member int32_value
1500 */
1501#define VEHICLE_PROPERTY_SEAT_FORE_AFT_MOVE (0x00000B86)
1502
1503/**
1504 * Seat backrest angle 1 position
1505 *
1506 * Backrest angle 1 is the actuator closest to the bottom of the seat.
1507 * Max value indicates angling forward towards the steering wheel.
1508 * Min value indicates full recline.
1509 *
1510 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
1511 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1512 * @access VEHICLE_PROP_ACCESS_READ_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001513 * @zone_type VEHICLE_ZONE_TYPE_SEAT
Steve Paike588bae2016-06-29 17:06:16 -07001514 * @data_member int32_value
1515 */
1516#define VEHICLE_PROPERTY_SEAT_BACKREST_ANGLE_1_POS (0x00000B87)
1517
1518/**
1519 * Seat backrest angle 1 move
1520 *
1521 * Moves the backrest forward or recline.
1522 *
1523 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
1524 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1525 * @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001526 * @zone_type VEHICLE_ZONE_TYPE_SEAT
Steve Paike588bae2016-06-29 17:06:16 -07001527 * @data_member int32_value
1528 */
1529#define VEHICLE_PROPERTY_SEAT_BACKREST_ANGLE_1_MOVE (0x00000B88)
1530
1531/**
1532 * Seat backrest angle 2 position
1533 *
1534 * Backrest angle 2 is the next actuator up from the bottom of the seat.
1535 * Max value indicates angling forward towards the steering wheel.
1536 * Min value indicates full recline.
1537 *
1538 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
1539 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1540 * @access VEHICLE_PROP_ACCESS_READ_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001541 * @zone_type VEHICLE_ZONE_TYPE_SEAT
Steve Paike588bae2016-06-29 17:06:16 -07001542 * @data_member int32_value
1543 */
1544#define VEHICLE_PROPERTY_SEAT_BACKREST_ANGLE_2_POS (0x00000B89)
1545
1546/**
1547 * Seat backrest angle 2 move
1548 *
1549 * Moves the backrest forward or recline.
1550 *
1551 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
1552 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1553 * @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001554 * @zone_type VEHICLE_ZONE_TYPE_SEAT
Steve Paike588bae2016-06-29 17:06:16 -07001555 * @data_member int32_value
1556 */
1557#define VEHICLE_PROPERTY_SEAT_BACKREST_ANGLE_2_MOVE (0x00000B8A)
1558
1559/**
1560 * Seat height position
1561 *
1562 * Sets the seat height.
1563 * Max value indicates highest position.
1564 * Min value indicates lowest position.
1565 *
1566 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
1567 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1568 * @access VEHICLE_PROP_ACCESS_READ_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001569 * @zone_type VEHICLE_ZONE_TYPE_SEAT
Steve Paike588bae2016-06-29 17:06:16 -07001570 * @data_member int32_value
1571 */
1572#define VEHICLE_PROPERTY_SEAT_HEIGHT_POS (0x00000B8B)
1573
1574/**
1575 * Seat height move
1576 *
1577 * Moves the seat height.
1578 *
1579 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
1580 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1581 * @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001582 * @zone_type VEHICLE_ZONE_TYPE_SEAT
Steve Paike588bae2016-06-29 17:06:16 -07001583 * @data_member int32_value
1584 */
1585#define VEHICLE_PROPERTY_SEAT_HEIGHT_MOVE (0x00000B8C)
1586
1587/**
1588 * Seat depth position
1589 *
1590 * Sets the seat depth, distance from back rest to front edge of seat.
1591 * Max value indicates longest depth position.
1592 * Min value indicates shortest position.
1593 *
1594 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
1595 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1596 * @access VEHICLE_PROP_ACCESS_READ_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001597 * @zone_type VEHICLE_ZONE_TYPE_SEAT
Steve Paike588bae2016-06-29 17:06:16 -07001598 * @data_member int32_value
1599 */
1600#define VEHICLE_PROPERTY_SEAT_DEPTH_POS (0x00000B8D)
1601
1602/**
1603 * Seat depth move
1604 *
1605 * Adjusts the seat depth.
1606 *
1607 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
1608 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1609 * @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001610 * @zone_type VEHICLE_ZONE_TYPE_SEAT
Steve Paike588bae2016-06-29 17:06:16 -07001611 * @data_member int32_value
1612 */
1613#define VEHICLE_PROPERTY_SEAT_DEPTH_MOVE (0x00000B8E)
1614
1615/**
1616 * Seat tilt position
1617 *
1618 * Sets the seat tilt.
1619 * Max value indicates front edge of seat higher than back edge.
1620 * Min value indicates front edge of seat lower than back edge.
1621 *
1622 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
1623 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1624 * @access VEHICLE_PROP_ACCESS_READ_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001625 * @zone_type VEHICLE_ZONE_TYPE_SEAT
Steve Paike588bae2016-06-29 17:06:16 -07001626 * @data_member int32_value
1627 */
1628#define VEHICLE_PROPERTY_SEAT_TILT_POS (0x00000B8F)
1629
1630/**
1631 * Seat tilt move
1632 *
1633 * Tilts the seat.
1634 *
1635 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
1636 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1637 * @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001638 * @zone_type VEHICLE_ZONE_TYPE_SEAT
Steve Paike588bae2016-06-29 17:06:16 -07001639 * @data_member int32_value
1640 */
1641#define VEHICLE_PROPERTY_SEAT_TILT_MOVE (0x00000B90)
1642
1643/**
1644 * Lumber fore/aft position
1645 *
1646 * Pushes the lumbar support forward and backwards
1647 * Max value indicates most forward position.
1648 * Min value indicates most rearward position.
1649 *
1650 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
1651 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1652 * @access VEHICLE_PROP_ACCESS_READ_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001653 * @zone_type VEHICLE_ZONE_TYPE_SEAT
Steve Paike588bae2016-06-29 17:06:16 -07001654 * @data_member int32_value
1655 */
1656#define VEHICLE_PROPERTY_SEAT_LUMBAR_FORE_AFT_POS (0x00000B91)
1657
1658/**
1659 * Lumbar fore/aft move
1660 *
1661 * Adjusts the lumbar support.
1662 *
1663 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
1664 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1665 * @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001666 * @zone_type VEHICLE_ZONE_TYPE_SEAT
Steve Paike588bae2016-06-29 17:06:16 -07001667 * @data_member int32_value
1668 */
1669#define VEHICLE_PROPERTY_SEAT_LUMBAR_FORE_AFT_MOVE (0x00000B92)
1670
1671/**
1672 * Lumbar side support position
1673 *
1674 * Sets the amount of lateral lumbar support.
1675 * Max value indicates widest lumbar setting (i.e. least support)
1676 * Min value indicates thinnest lumbar setting.
1677 *
1678 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
1679 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1680 * @access VEHICLE_PROP_ACCESS_READ_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001681 * @zone_type VEHICLE_ZONE_TYPE_SEAT
Steve Paike588bae2016-06-29 17:06:16 -07001682 * @data_member int32_value
1683 */
1684#define VEHICLE_PROPERTY_SEAT_LUMBAR_SIDE_SUPPORT_POS (0x00000B93)
1685
1686/**
1687 * Lumbar side support move
1688 *
1689 * Adjusts the amount of lateral lumbar support.
1690 *
1691 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
1692 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1693 * @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001694 * @zone_type VEHICLE_ZONE_TYPE_SEAT
Steve Paike588bae2016-06-29 17:06:16 -07001695 * @data_member int32_value
1696 */
1697#define VEHICLE_PROPERTY_SEAT_LUMBAR_SIDE_SUPPORT_MOVE (0x00000B94)
1698
1699/**
1700 * Headrest height position
1701 *
1702 * Sets the headrest height.
1703 * Max value indicates tallest setting.
1704 * Min value indicates shortest setting.
1705 *
1706 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
1707 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1708 * @access VEHICLE_PROP_ACCESS_READ_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001709 * @zone_type VEHICLE_ZONE_TYPE_SEAT
Steve Paike588bae2016-06-29 17:06:16 -07001710 * @data_member int32_value
1711 */
1712#define VEHICLE_PROPERTY_SEAT_HEADREST_HEIGHT_POS (0x00000B95)
1713
1714/**
Steve Paik5052d312016-07-14 16:05:19 -07001715 * Headrest height move
Steve Paike588bae2016-06-29 17:06:16 -07001716 *
1717 * Moves the headrest up and down.
1718 *
1719 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
1720 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1721 * @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001722 * @zone_type VEHICLE_ZONE_TYPE_SEAT
Steve Paike588bae2016-06-29 17:06:16 -07001723 * @data_member int32_value
1724 */
1725#define VEHICLE_PROPERTY_SEAT_HEADREST_HEIGHT_MOVE (0x00000B96)
1726
1727/**
1728 * Headrest angle position
1729 *
1730 * Sets the angle of the headrest.
1731 * Max value indicates most upright angle.
1732 * Min value indicates shallowest headrest angle.
1733 *
1734 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
1735 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1736 * @access VEHICLE_PROP_ACCESS_READ_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001737 * @zone_type VEHICLE_ZONE_TYPE_SEAT
Steve Paike588bae2016-06-29 17:06:16 -07001738 * @data_member int32_value
1739 */
1740#define VEHICLE_PROPERTY_SEAT_HEADREST_ANGLE_POS (0x00000B97)
1741
1742/**
1743 * Headrest angle move
1744 *
1745 * Adjusts the angle of the headrest
1746 *
1747 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
1748 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1749 * @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001750 * @zone_type VEHICLE_ZONE_TYPE_SEAT
Steve Paike588bae2016-06-29 17:06:16 -07001751 * @data_member int32_value
1752 */
1753#define VEHICLE_PROPERTY_SEAT_HEADREST_ANGLE_MOVE (0x00000B98)
1754
1755/**
Steve Paik5052d312016-07-14 16:05:19 -07001756 * Headrest fore/aft position
1757 *
1758 * Adjusts the headrest forwards and backwards.
1759 * Max value indicates position closest to front of car.
1760 * Min value indicates position closest to rear of car.
Steve Paike588bae2016-06-29 17:06:16 -07001761 *
1762 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
1763 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1764 * @access VEHICLE_PROP_ACCESS_READ_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001765 * @zone_type VEHICLE_ZONE_TYPE_SEAT
Steve Paike588bae2016-06-29 17:06:16 -07001766 * @data_member int32_value
1767 */
1768#define VEHICLE_PROPERTY_SEAT_HEADREST_FORE_AFT_POS (0x00000B99)
1769
1770/**
Steve Paik5052d312016-07-14 16:05:19 -07001771 * Headrest fore/aft move
Steve Paike588bae2016-06-29 17:06:16 -07001772 *
1773 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
1774 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1775 * @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07001776 * @zone_type VEHICLE_ZONE_TYPE_SEAT
Steve Paike588bae2016-06-29 17:06:16 -07001777 * @data_member int32_value
1778 */
1779#define VEHICLE_PROPERTY_SEAT_HEADREST_FORE_AFT_MOVE (0x00000B9A)
1780
1781
1782// Windows
1783/**
1784 * Window Position
1785 *
1786 * Max = window up / closed
1787 * Min = window down / open
1788 *
Steve Paikada16692016-07-07 17:08:39 -07001789 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
Steve Paike588bae2016-06-29 17:06:16 -07001790 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1791 * @access VEHICLE_PROP_ACCESS_READ_WRITE
1792 * @data_member int32_value
1793 */
1794#define VEHICLE_PROPERTY_WINDOW_POS (0x00000BC0)
1795
1796/**
1797 * Window Move
1798 *
1799 * Max = window up / closed
1800 * Min = window down / open
1801 * Magnitude denotes relative speed. I.e. +2 is faster than +1 in raising the window.
1802 *
Steve Paikada16692016-07-07 17:08:39 -07001803 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
Steve Paike588bae2016-06-29 17:06:16 -07001804 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1805 * @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
1806 * @data_member int32_value
1807 */
1808#define VEHICLE_PROPERTY_WINDOW_MOVE (0x00000BC1)
1809
1810/**
1811 * Window Vent Position
1812 *
1813 * This feature is used to control the vent feature on a sunroof.
1814 *
1815 * Max = vent open
1816 * Min = vent closed
1817 *
Steve Paikada16692016-07-07 17:08:39 -07001818 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
Steve Paike588bae2016-06-29 17:06:16 -07001819 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1820 * @access VEHICLE_PROP_ACCESS_READ_WRITE
1821 * @data_member int32_value
1822 */
1823#define VEHICLE_PROPERTY_WINDOW_VENT_POS (0x00000BC2)
1824
1825/**
1826 * Window Vent Move
1827 *
1828 * This feature is used to control the vent feature on a sunroof.
1829 *
1830 * Max = vent open
1831 * Min = vent closed
1832 *
Steve Paikada16692016-07-07 17:08:39 -07001833 * @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
Steve Paike588bae2016-06-29 17:06:16 -07001834 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1835 * @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
1836 * @data_member int32_value
1837 */
1838#define VEHICLE_PROPERTY_WINDOW_VENT_MOVE (0x00000BC3)
1839
1840/**
1841 * Window Lock
1842 *
1843 * True indicates windows are locked and can't be moved.
1844 *
Steve Paikada16692016-07-07 17:08:39 -07001845 * @value_type VEHICLE_VALUE_TYPE_BOOLEAN
Steve Paike588bae2016-06-29 17:06:16 -07001846 * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
1847 * @access VEHICLE_PROP_ACCESS_READ_WRITE
1848 * @data_member boolean_value
1849 */
1850#define VEHICLE_PROPERTY_WINDOW_LOCK (0x00000BC4)
1851
1852
Steve Paikcc9e2922016-04-21 11:40:17 -07001853
Keun-young Parkfe599a82016-02-12 14:26:57 -08001854/**
Sanket Agarwalfb636682015-08-11 14:34:29 -07001855 * H/W specific, non-standard property can be added as necessary. Such property should use
1856 * property number in range of [VEHICLE_PROPERTY_CUSTOM_START, VEHICLE_PROPERTY_CUSTOM_END].
1857 * Definition of property in this range is completely up to each HAL implementation.
1858 * For such property, it is recommended to fill vehicle_prop_config.config_string with some
1859 * additional information to help debugging. For example, company XYZ's custom extension may
1860 * include config_string of "com.XYZ.some_further_details".
1861 * @range_start
1862 */
Steve Paikcc9e2922016-04-21 11:40:17 -07001863#define VEHICLE_PROPERTY_CUSTOM_START (0x70000000)
Sanket Agarwalfb636682015-08-11 14:34:29 -07001864/** @range_end */
Steve Paikcc9e2922016-04-21 11:40:17 -07001865#define VEHICLE_PROPERTY_CUSTOM_END (0x73ffffff)
Sanket Agarwalfb636682015-08-11 14:34:29 -07001866
1867/**
1868 * Property range allocated for system's internal usage like testing. HAL should never declare
1869 * property in this range.
1870 * @range_start
1871 */
Steve Paikcc9e2922016-04-21 11:40:17 -07001872#define VEHICLE_PROPERTY_INTERNAL_START (0x74000000)
Sanket Agarwalfb636682015-08-11 14:34:29 -07001873/**
1874 * @range_end
1875 */
Steve Paikcc9e2922016-04-21 11:40:17 -07001876#define VEHICLE_PROPERTY_INTERNAL_END (0x74ffffff)
Sanket Agarwalfb636682015-08-11 14:34:29 -07001877
1878/**
1879 * Value types for various properties.
1880 */
1881enum vehicle_value_type {
1882 VEHICLE_VALUE_TYPE_SHOUD_NOT_USE = 0x00, // value_type should never set to 0.
1883 VEHICLE_VALUE_TYPE_STRING = 0x01,
1884 VEHICLE_VALUE_TYPE_BYTES = 0x02,
1885 VEHICLE_VALUE_TYPE_BOOLEAN = 0x03,
Keun-young Park73d7f222016-01-14 11:02:38 -08001886 VEHICLE_VALUE_TYPE_ZONED_BOOLEAN = 0x04,
1887 VEHICLE_VALUE_TYPE_INT64 = 0x05,
Sanket Agarwalfb636682015-08-11 14:34:29 -07001888 VEHICLE_VALUE_TYPE_FLOAT = 0x10,
1889 VEHICLE_VALUE_TYPE_FLOAT_VEC2 = 0x11,
1890 VEHICLE_VALUE_TYPE_FLOAT_VEC3 = 0x12,
1891 VEHICLE_VALUE_TYPE_FLOAT_VEC4 = 0x13,
1892 VEHICLE_VALUE_TYPE_INT32 = 0x20,
1893 VEHICLE_VALUE_TYPE_INT32_VEC2 = 0x21,
1894 VEHICLE_VALUE_TYPE_INT32_VEC3 = 0x22,
1895 VEHICLE_VALUE_TYPE_INT32_VEC4 = 0x23,
Keun-young Park73d7f222016-01-14 11:02:38 -08001896 VEHICLE_VALUE_TYPE_ZONED_FLOAT = 0x30,
1897 VEHICLE_VALUE_TYPE_ZONED_FLOAT_VEC2 = 0x31,
1898 VEHICLE_VALUE_TYPE_ZONED_FLOAT_VEC3 = 0x32,
Keun-young Parkab68e372016-03-10 16:28:42 -08001899 VEHICLE_VALUE_TYPE_ZONED_FLOAT_VEC4 = 0x33,
Keun-young Park73d7f222016-01-14 11:02:38 -08001900 VEHICLE_VALUE_TYPE_ZONED_INT32 = 0x40,
1901 VEHICLE_VALUE_TYPE_ZONED_INT32_VEC2 = 0x41,
1902 VEHICLE_VALUE_TYPE_ZONED_INT32_VEC3 = 0x42,
Keun-young Parkab68e372016-03-10 16:28:42 -08001903 VEHICLE_VALUE_TYPE_ZONED_INT32_VEC4 = 0x43,
Sanket Agarwalfb636682015-08-11 14:34:29 -07001904};
1905
1906/**
1907 * Units used for int or float type with no attached enum types.
1908 */
1909enum vehicle_unit_type {
1910 VEHICLE_UNIT_TYPE_SHOULD_NOT_USE = 0x00000000,
1911 // speed related items
1912 VEHICLE_UNIT_TYPE_METER_PER_SEC = 0x00000001,
1913 VEHICLE_UNIT_TYPE_RPM = 0x00000002,
1914 VEHICLE_UNIT_TYPE_HZ = 0x00000003,
1915 // kind of ratio
1916 VEHICLE_UNIT_TYPE_PERCENTILE = 0x00000010,
1917 // length
1918 VEHICLE_UNIT_TYPE_MILLIMETER = 0x00000020,
1919 VEHICLE_UNIT_TYPE_METER = 0x00000021,
1920 VEHICLE_UNIT_TYPE_KILOMETER = 0x00000023,
1921 // temperature
Steve Paikbfbbb672016-07-08 16:12:38 -07001922 VEHICLE_UNIT_TYPE_CELSIUS = 0x00000030,
1923 VEHICLE_UNIT_TYPE_FAHRENHEIT = 0x00000031,
1924 VEHICLE_UNIT_TYPE_KELVIN = 0x00000032,
Sanket Agarwalfb636682015-08-11 14:34:29 -07001925 // volume
1926 VEHICLE_UNIT_TYPE_MILLILITER = 0x00000040,
1927 // time
1928 VEHICLE_UNIT_TYPE_NANO_SECS = 0x00000050,
Steve Paikd432fc02016-05-11 16:25:33 -07001929 VEHICLE_UNIT_TYPE_SECS = 0x00000053,
Sanket Agarwalfb636682015-08-11 14:34:29 -07001930 VEHICLE_UNIT_TYPE_YEAR = 0x00000059,
1931};
1932
1933/**
Sanket Agarwalfb636682015-08-11 14:34:29 -07001934 * This describes how value of property can change.
1935 */
1936enum vehicle_prop_change_mode {
1937 /**
1938 * Property of this type will *never* change. This property will not support subscription, but
1939 * will support get
1940 */
1941 VEHICLE_PROP_CHANGE_MODE_STATIC = 0x00,
1942 /**
Keun-young Parkda3cb912016-05-12 11:21:04 -07001943 * Property of this type will be reported when there is a change.
1944 * get call should return the current value.
1945 * Set operation for this property is assumed to be asynchronous. When the property is read
Keun-young Parke086bd72016-05-24 09:41:54 -07001946 * (get) after set, it may still return old value until underlying H/W backing this property
Keun-young Parkda3cb912016-05-12 11:21:04 -07001947 * has actually changed the state. Once state is changed, the property will dispatch changed
1948 * value as event.
Sanket Agarwalfb636682015-08-11 14:34:29 -07001949 */
1950 VEHICLE_PROP_CHANGE_MODE_ON_CHANGE = 0x01,
1951 /**
1952 * Property of this type change continuously and requires fixed rate of sampling to retrieve
1953 * the data.
1954 */
1955 VEHICLE_PROP_CHANGE_MODE_CONTINUOUS = 0x02,
Steve Paikd432fc02016-05-11 16:25:33 -07001956 /**
1957 * Property of this type may be polled to get the current value.
1958 */
1959 VEHICLE_PROP_CHANGE_MODE_POLL = 0x03,
Keun-young Parkda3cb912016-05-12 11:21:04 -07001960 /**
1961 * This is for property where change event should be sent only when the value is
1962 * set from external component. Normal value change will not trigger event.
1963 * For example, clock property can send change event only when it is set, outside android,
1964 * for case like user setting time or time getting update. There is no need to send it
1965 * per every value change.
1966 */
1967 VEHICLE_PROP_CHANGE_MODE_ON_SET = 0x04,
Sanket Agarwalfb636682015-08-11 14:34:29 -07001968};
1969
1970/**
1971 * Property config defines the capabilities of it. User of the API
1972 * should first get the property config to understand the output from get()
1973 * commands and also to ensure that set() or events commands are in sync with
1974 * the expected output.
1975 */
1976enum vehicle_prop_access {
1977 VEHICLE_PROP_ACCESS_READ = 0x01,
1978 VEHICLE_PROP_ACCESS_WRITE = 0x02,
1979 VEHICLE_PROP_ACCESS_READ_WRITE = 0x03
1980};
1981
1982/**
1983 * These permissions define how the OEMs want to distribute their information and security they
1984 * want to apply. On top of these restrictions, android will have additional
1985 * 'app-level' permissions that the apps will need to ask the user before the apps have the
1986 * information.
1987 * This information should be kept in vehicle_prop_config.permission_model.
1988 */
1989enum vehicle_permission_model {
1990 /**
1991 * No special restriction, but each property can still require specific android app-level
1992 * permission.
1993 */
1994 VEHICLE_PERMISSION_NO_RESTRICTION = 0,
1995 /** Signature only. Only APKs signed with OEM keys are allowed. */
1996 VEHICLE_PERMISSION_OEM_ONLY = 0x1,
1997 /** System only. APKs built-in to system can access the property. */
1998 VEHICLE_PERMISSION_SYSTEM_APP_ONLY = 0x2,
1999 /** Equivalent to “system|signature” */
2000 VEHICLE_PERMISSION_OEM_OR_SYSTEM_APP = 0x3
2001};
2002
Keun-young Park418c7e82016-04-06 10:44:20 -07002003
2004/**
2005 * Special values for INT32/FLOAT (including ZONED types)
2006 * These values represent special state, which is outside MIN/MAX range but can happen.
2007 * For example, HVAC temperature may use out of range min / max to represent that
2008 * it is working in full power although target temperature has separate min / max.
2009 * OUT_OF_RANGE_OFF can represent a state where the property is powered off.
2010 * Usually such property will have separate property to control power.
2011 */
2012
2013#define VEHICLE_INT_OUT_OF_RANGE_MAX (INT32_MAX)
2014#define VEHICLE_INT_OUT_OF_RANGE_MIN (INT32_MIN)
2015#define VEHICLE_INT_OUT_OF_RANGE_OFF (INT32_MIN + 1)
2016
2017#define VEHICLE_FLOAT_OUT_OF_RANGE_MAX (INFINITY)
2018#define VEHICLE_FLOAT_OUT_OF_RANGE_MIN (-INFINITY)
Keun-young Parkf1ccec12016-04-22 13:19:53 -07002019#define VEHICLE_FLOAT_OUT_OF_RANGE_OFF (NAN)
Keun-young Park418c7e82016-04-06 10:44:20 -07002020
Sanket Agarwalfb636682015-08-11 14:34:29 -07002021/**
2022 * Car states.
2023 *
2024 * The driving states determine what features of the UI will be accessible.
2025 */
2026enum vehicle_driving_status {
2027 VEHICLE_DRIVING_STATUS_UNRESTRICTED = 0x00,
2028 VEHICLE_DRIVING_STATUS_NO_VIDEO = 0x01,
2029 VEHICLE_DRIVING_STATUS_NO_KEYBOARD_INPUT = 0x02,
2030 VEHICLE_DRIVING_STATUS_NO_VOICE_INPUT = 0x04,
2031 VEHICLE_DRIVING_STATUS_NO_CONFIG = 0x08,
2032 VEHICLE_DRIVING_STATUS_LIMIT_MESSAGE_LEN = 0x10
2033};
2034
2035/**
2036 * Various gears which can be selected by user and chosen in system.
2037 */
2038enum vehicle_gear {
2039 // Gear selections present in both automatic and manual cars.
2040 VEHICLE_GEAR_NEUTRAL = 0x0001,
2041 VEHICLE_GEAR_REVERSE = 0x0002,
2042
2043 // Gear selections (mostly) present only in automatic cars.
Keun-young Park77761e22016-03-08 15:02:44 -08002044 VEHICLE_GEAR_PARK = 0x0004,
Sanket Agarwalfb636682015-08-11 14:34:29 -07002045 VEHICLE_GEAR_DRIVE = 0x0008,
Keun-young Park77761e22016-03-08 15:02:44 -08002046 VEHICLE_GEAR_LOW = 0x0010,
Sanket Agarwalfb636682015-08-11 14:34:29 -07002047
2048 // Other possible gear selections (maybe present in manual or automatic
2049 // cars).
2050 VEHICLE_GEAR_1 = 0x0010,
2051 VEHICLE_GEAR_2 = 0x0020,
2052 VEHICLE_GEAR_3 = 0x0040,
2053 VEHICLE_GEAR_4 = 0x0080,
2054 VEHICLE_GEAR_5 = 0x0100,
2055 VEHICLE_GEAR_6 = 0x0200,
2056 VEHICLE_GEAR_7 = 0x0400,
2057 VEHICLE_GEAR_8 = 0x0800,
2058 VEHICLE_GEAR_9 = 0x1000
2059};
2060
2061
2062/**
2063 * Various zones in the car.
2064 *
2065 * Zones are used for Air Conditioning purposes and divide the car into physical
2066 * area zones.
2067 */
2068enum vehicle_zone {
2069 VEHICLE_ZONE_ROW_1_LEFT = 0x00000001,
2070 VEHICLE_ZONE_ROW_1_CENTER = 0x00000002,
2071 VEHICLE_ZONE_ROW_1_RIGHT = 0x00000004,
2072 VEHICLE_ZONE_ROW_1_ALL = 0x00000008,
2073 VEHICLE_ZONE_ROW_2_LEFT = 0x00000010,
2074 VEHICLE_ZONE_ROW_2_CENTER = 0x00000020,
2075 VEHICLE_ZONE_ROW_2_RIGHT = 0x00000040,
2076 VEHICLE_ZONE_ROW_2_ALL = 0x00000080,
2077 VEHICLE_ZONE_ROW_3_LEFT = 0x00000100,
2078 VEHICLE_ZONE_ROW_3_CENTER = 0x00000200,
2079 VEHICLE_ZONE_ROW_3_RIGHT = 0x00000400,
2080 VEHICLE_ZONE_ROW_3_ALL = 0x00000800,
2081 VEHICLE_ZONE_ROW_4_LEFT = 0x00001000,
2082 VEHICLE_ZONE_ROW_4_CENTER = 0x00002000,
2083 VEHICLE_ZONE_ROW_4_RIGHT = 0x00004000,
2084 VEHICLE_ZONE_ROW_4_ALL = 0x00008000,
2085 VEHICLE_ZONE_ALL = 0x80000000,
2086};
2087
2088/**
2089 * Various Seats in the car.
2090 */
2091enum vehicle_seat {
Steve Paik76c9c0f2016-10-06 20:26:03 -07002092 VEHICLE_SEAT_ROW_1_LEFT = 0x0001,
2093 VEHICLE_SEAT_ROW_1_CENTER = 0x0002,
2094 VEHICLE_SEAT_ROW_1_RIGHT = 0x0004,
2095 VEHICLE_SEAT_ROW_2_LEFT = 0x0010,
2096 VEHICLE_SEAT_ROW_2_CENTER = 0x0020,
2097 VEHICLE_SEAT_ROW_2_RIGHT = 0x0040,
2098 VEHICLE_SEAT_ROW_3_LEFT = 0x0100,
2099 VEHICLE_SEAT_ROW_3_CENTER = 0x0200,
2100 VEHICLE_SEAT_ROW_3_RIGHT = 0x0400
Sanket Agarwalfb636682015-08-11 14:34:29 -07002101};
2102
2103/**
2104 * Various windshields/windows in the car.
2105 */
2106enum vehicle_window {
2107 VEHICLE_WINDOW_FRONT_WINDSHIELD = 0x0001,
2108 VEHICLE_WINDOW_REAR_WINDSHIELD = 0x0002,
2109 VEHICLE_WINDOW_ROOF_TOP = 0x0004,
2110 VEHICLE_WINDOW_ROW_1_LEFT = 0x0010,
2111 VEHICLE_WINDOW_ROW_1_RIGHT = 0x0020,
2112 VEHICLE_WINDOW_ROW_2_LEFT = 0x0100,
2113 VEHICLE_WINDOW_ROW_2_RIGHT = 0x0200,
2114 VEHICLE_WINDOW_ROW_3_LEFT = 0x1000,
2115 VEHICLE_WINDOW_ROW_3_RIGHT = 0x2000,
2116};
2117
Keun-young Parkcb354502016-02-08 18:15:55 -08002118enum vehicle_door {
2119 VEHICLE_DOOR_ROW_1_LEFT = 0x00000001,
2120 VEHICLE_DOOR_ROW_1_RIGHT = 0x00000004,
2121 VEHICLE_DOOR_ROW_2_LEFT = 0x00000010,
2122 VEHICLE_DOOR_ROW_2_RIGHT = 0x00000040,
2123 VEHICLE_DOOR_ROW_3_LEFT = 0x00000100,
2124 VEHICLE_DOOR_ROW_3_RIGHT = 0x00000400,
2125 VEHICLE_DOOR_HOOD = 0x10000000,
2126 VEHICLE_DOOR_REAR = 0x20000000,
2127};
2128
2129enum vehicle_mirror {
2130 VEHICLE_MIRROR_DRIVER_LEFT = 0x00000001,
2131 VEHICLE_MIRROR_DRIVER_RIGHT = 0x00000002,
2132 VEHICLE_MIRROR_DRIVER_CENTER = 0x00000004,
2133};
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07002134
Sanket Agarwalfb636682015-08-11 14:34:29 -07002135enum vehicle_turn_signal {
2136 VEHICLE_SIGNAL_NONE = 0x00,
2137 VEHICLE_SIGNAL_RIGHT = 0x01,
2138 VEHICLE_SIGNAL_LEFT = 0x02,
2139 VEHICLE_SIGNAL_EMERGENCY = 0x04
2140};
2141
Vitalii Tomkiv0ca8f0e2016-10-11 11:01:20 -07002142enum vehicle_zone_type {
2143 VEHICLE_ZONE_TYPE_NONE = 0x00,
2144 VEHICLE_ZONE_TYPE_ZONE = 0x01,
2145 VEHICLE_ZONE_TYPE_SEAT = 0x02,
2146 VEHICLE_ZONE_TYPE_DOOR = 0x04,
2147 VEHICLE_ZONE_TYPE_WINDOW = 0x10,
2148 VEHICLE_ZONE_TYPE_MIRROR = 0x20,
2149};
2150
Sanket Agarwalfb636682015-08-11 14:34:29 -07002151/*
2152 * Boolean type.
2153 */
2154enum vehicle_boolean {
2155 VEHICLE_FALSE = 0x00,
2156 VEHICLE_TRUE = 0x01
2157};
2158
2159typedef int32_t vehicle_boolean_t;
2160
2161/**
2162 * Vehicle string.
2163 *
2164 * Defines a UTF8 encoded sequence of bytes that should be used for string
2165 * representation throughout.
2166 */
2167typedef struct vehicle_str {
2168 uint8_t* data;
2169 int32_t len;
2170} vehicle_str_t;
2171
2172/**
2173 * Vehicle byte array.
2174 * This is for passing generic raw data.
2175 */
2176typedef vehicle_str_t vehicle_bytes_t;
2177
Sanket Agarwalfb636682015-08-11 14:34:29 -07002178typedef struct vehicle_prop_config {
2179 int32_t prop;
2180
2181 /**
2182 * Defines if the property is read or write. Value should be one of
2183 * enum vehicle_prop_access.
2184 */
2185 int32_t access;
2186
2187 /**
2188 * Defines if the property is continuous or on-change. Value should be one
2189 * of enum vehicle_prop_change_mode.
2190 */
2191 int32_t change_mode;
2192
2193 /**
2194 * Type of data used for this property. This type is fixed per each property.
2195 * Check vehicle_value_type for allowed value.
2196 */
2197 int32_t value_type;
2198
2199 /**
2200 * Define necessary permission model to access the data.
2201 */
2202 int32_t permission_model;
Keun-young Parkab68e372016-03-10 16:28:42 -08002203
Sanket Agarwalfb636682015-08-11 14:34:29 -07002204 /**
2205 * Some of the properties may have associated zones (such as hvac), in these
2206 * cases the config should contain an ORed value for the associated zone.
2207 */
2208 union {
2209 /**
Sanket Agarwalfb636682015-08-11 14:34:29 -07002210 * The value is derived by ORing one or more of enum vehicle_zone members.
2211 */
2212 int32_t vehicle_zone_flags;
2213 /** The value is derived by ORing one or more of enum vehicle_seat members. */
2214 int32_t vehicle_seat_flags;
2215 /** The value is derived by ORing one or more of enum vehicle_window members. */
2216 int32_t vehicle_window_flags;
Keun-young Parkab68e372016-03-10 16:28:42 -08002217 };
Sanket Agarwalfb636682015-08-11 14:34:29 -07002218
Keun-young Parkab68e372016-03-10 16:28:42 -08002219 /**
2220 * Property specific configuration information. Usage of this will be defined per each property.
2221 */
2222 union {
2223 /**
2224 * For generic configuration information
2225 */
2226 int32_t config_flags;
Sanket Agarwalfb636682015-08-11 14:34:29 -07002227 /** The number of presets that are stored by the radio module. Pass 0 if
2228 * there are no presets available. The range of presets is defined to be
2229 * from 1 (see VEHICLE_RADIO_PRESET_MIN_VALUE) to vehicle_radio_num_presets.
2230 */
2231 int32_t vehicle_radio_num_presets;
Keun-young Parkbf877a72015-12-21 14:16:05 -08002232 int32_t config_array[4];
Sanket Agarwalfb636682015-08-11 14:34:29 -07002233 };
2234
2235 /**
2236 * Some properties may require additional information passed over this string. Most properties
2237 * do not need to set this and in that case, config_string.data should be NULL and
2238 * config_string.len should be 0.
2239 */
2240 vehicle_str_t config_string;
2241
2242 /**
2243 * Specify minimum allowed value for the property. This is necessary for property which does
2244 * not have specified enum.
2245 */
2246 union {
2247 float float_min_value;
2248 int32_t int32_min_value;
2249 int64_t int64_min_value;
2250 };
2251
2252 /**
2253 * Specify maximum allowed value for the property. This is necessary for property which does
2254 * not have specified enum.
2255 */
2256 union {
2257 float float_max_value;
2258 int32_t int32_max_value;
2259 int64_t int64_max_value;
2260 };
2261
2262 /**
Keun-young Parkfe599a82016-02-12 14:26:57 -08002263 * Array of min values for zoned properties. Zoned property can specify min / max value in two
2264 * different ways:
2265 * 1. All zones having the same min / max value: *_min/max_value should be set and this
2266 * array should be set to NULL.
2267 * 2. All zones having separate min / max value: *_min/max_values array should be populated
2268 * and its length should be the same as number of active zones specified by *_zone_flags.
Keun-young Parkab68e372016-03-10 16:28:42 -08002269 *
2270 * Should be NULL if each zone does not have separate max values.
Keun-young Parkfe599a82016-02-12 14:26:57 -08002271 */
2272 union {
2273 float* float_min_values;
2274 int32_t* int32_min_values;
2275 int64_t* int64_min_values;
2276 };
2277
2278 /**
2279 * Array of max values for zoned properties. See above for its usage.
Keun-young Parkab68e372016-03-10 16:28:42 -08002280 * Should be NULL if each zone does not have separate max values.
2281 * If not NULL, length of array should match that of min_values.
Keun-young Parkfe599a82016-02-12 14:26:57 -08002282 */
2283 union {
2284 float* float_max_values;
2285 int32_t* int32_max_values;
2286 int64_t* int64_max_values;
2287 };
2288
2289 /**
Sanket Agarwalfb636682015-08-11 14:34:29 -07002290 * Min sample rate in Hz. Should be 0 for sensor type of VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
2291 */
2292 float min_sample_rate;
2293 /**
2294 * Max sample rate in Hz. Should be 0 for sensor type of VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
2295 */
2296 float max_sample_rate;
2297 /**
2298 * Place holder for putting HAL implementation specific data. Usage is wholly up to HAL
2299 * implementation.
2300 */
2301 void* hal_data;
2302} vehicle_prop_config_t;
2303
2304/**
2305 * HVAC property fields.
2306 *
2307 * Defines various HVAC properties which are packed into vehicle_hvac_t (see
2308 * below). We define these properties outside in global scope so that HAL
2309 * implementation and HAL users (JNI) can typecast vehicle_hvac correctly.
2310 */
Sanket Agarwalfb636682015-08-11 14:34:29 -07002311typedef struct vehicle_hvac {
2312 /**
2313 * Define one structure for each possible HVAC property.
2314 * NOTES:
Keun-young Parkab68e372016-03-10 16:28:42 -08002315 * a) Fan speed is a number from (0 - 6) where 6 is the highest speed. (TODO define enum)
2316 * b) Temperature is a floating point Celcius scale.
2317 * c) Direction is defined in enum vehicle_fan_direction.
Sanket Agarwalfb636682015-08-11 14:34:29 -07002318 *
2319 * The HAL should create #entries number of vehicle_hvac_properties and
2320 * assign it to "properties" variable below.
2321 */
2322 union {
Keun-young Parkab68e372016-03-10 16:28:42 -08002323 int32_t fan_speed;
2324 int32_t fan_direction;
2325 vehicle_boolean_t ac_on;
2326 vehicle_boolean_t max_ac_on;
2327 vehicle_boolean_t max_defrost_on;
2328 vehicle_boolean_t recirc_on;
2329 vehicle_boolean_t dual_on;
Steve Paik670e7ab2016-04-29 16:32:02 -07002330 vehicle_boolean_t auto_on;
Keun-young Park418c7e82016-04-06 10:44:20 -07002331 vehicle_boolean_t power_on;
Sanket Agarwalfb636682015-08-11 14:34:29 -07002332
Keun-young Parkab68e372016-03-10 16:28:42 -08002333 float temperature_current;
2334 float temperature_set;
Sanket Agarwalfb636682015-08-11 14:34:29 -07002335
Keun-young Parkab68e372016-03-10 16:28:42 -08002336 vehicle_boolean_t defrost_on;
Sanket Agarwalfb636682015-08-11 14:34:29 -07002337 };
2338} vehicle_hvac_t;
2339
2340/*
2341 * Defines how the values for various properties are represented.
2342 *
2343 * There are two ways to populate and access the fields:
2344 * a) Using the individual fields. Use this mechanism (see
2345 * info_manufacture_date, fuel_capacity fields etc).
2346 * b) Using the union accessors (see uint32_value, float_value etc).
2347 *
2348 * To add a new field make sure that it does not exceed the total union size
2349 * (defined in int_array) and it is one of the vehicle_value_type. Then add the
2350 * field name with its unit to union. If the field type is not yet defined (as
2351 * of this draft, we don't use int64_t) then add that type to vehicle_value_type
2352 * and have an accessor (so for int64_t it will be int64_t int64_value).
2353 */
2354typedef union vehicle_value {
2355 /** Define the max size of this structure. */
2356 int32_t int32_array[4];
2357 float float_array[4];
2358
2359 // Easy accessors for union members (HAL implementation SHOULD NOT USE these
2360 // fields while populating, use the property specific fields below instead).
2361 int32_t int32_value;
2362 int64_t int64_value;
2363 float float_value;
2364 vehicle_str_t str_value;
2365 vehicle_bytes_t bytes_value;
2366 vehicle_boolean_t boolean_value;
Sanket Agarwalfb636682015-08-11 14:34:29 -07002367
2368 // Vehicle Information.
2369 vehicle_str_t info_vin;
2370 vehicle_str_t info_make;
2371 vehicle_str_t info_model;
2372 int32_t info_model_year;
2373
2374 // Represented in milliliters.
2375 float info_fuel_capacity;
2376
2377 float vehicle_speed;
2378 float odometer;
2379
2380 // Engine sensors.
2381
2382 // Represented in milliliters.
2383 //float engine_coolant_level;
2384 // Represented in celcius.
2385 float engine_coolant_temperature;
2386 // Represented in a percentage value.
2387 //float engine_oil_level;
2388 // Represented in celcius.
2389 float engine_oil_temperature;
2390 float engine_rpm;
2391
2392 // Event sensors.
2393 // Value should be one of enum vehicle_gear_selection.
2394 int32_t gear_selection;
2395 // Value should be one of enum vehicle_gear.
2396 int32_t gear_current_gear;
2397 // Value should be one of enum vehicle_boolean.
2398 int32_t parking_brake;
2399 // If cruise_set_speed > 0 then cruise is ON otherwise cruise is OFF.
2400 // Unit: meters / second (m/s).
2401 //int32_t cruise_set_speed;
2402 // Value should be one of enum vehicle_boolean.
2403 int32_t is_fuel_level_low;
2404 // Value should be one of enum vehicle_driving_status.
2405 int32_t driving_status;
2406 int32_t night_mode;
2407 // Value should be one of emum vehicle_turn_signal.
2408 int32_t turn_signals;
2409 // Value should be one of enum vehicle_boolean.
2410 //int32_t engine_on;
2411
2412 // HVAC properties.
2413 vehicle_hvac_t hvac;
2414
2415 float outside_temperature;
Keun-young Parkcb354502016-02-08 18:15:55 -08002416 float cabin_temperature;
2417
Sanket Agarwalfb636682015-08-11 14:34:29 -07002418} vehicle_value_t;
2419
2420/*
2421 * Encapsulates the property name and the associated value. It
2422 * is used across various API calls to set values, get values or to register for
2423 * events.
2424 */
2425typedef struct vehicle_prop_value {
2426 /* property identifier */
2427 int32_t prop;
2428
2429 /* value type of property for quick conversion from union to appropriate
2430 * value. The value must be one of enum vehicle_value_type.
2431 */
2432 int32_t value_type;
2433
2434 /** time is elapsed nanoseconds since boot */
2435 int64_t timestamp;
2436
Keun-young Parkab68e372016-03-10 16:28:42 -08002437 /**
2438 * Zone information for zoned property. For non-zoned property, this should be ignored.
2439 */
2440 union {
2441 int32_t zone;
2442 int32_t seat;
2443 int32_t window;
2444 };
2445
Sanket Agarwalfb636682015-08-11 14:34:29 -07002446 vehicle_value_t value;
2447} vehicle_prop_value_t;
2448
2449/*
2450 * Event callback happens whenever a variable that the API user has subscribed
2451 * to needs to be reported. This may be based purely on threshold and frequency
2452 * (a regular subscription, see subscribe call's arguments) or when the set()
2453 * command is executed and the actual change needs to be reported.
2454 *
2455 * event_data is OWNED by the HAL and should be copied before the callback
2456 * finishes.
2457 */
2458typedef int (*vehicle_event_callback_fn)(const vehicle_prop_value_t *event_data);
2459
2460
2461/**
2462 * Represent the operation where the current error has happened.
2463 */
2464enum vehicle_property_operation {
2465 /** Generic error to this property which is not tied to any operation. */
2466 VEHICLE_OPERATION_GENERIC = 0,
2467 /** Error happened while handling property set. */
2468 VEHICLE_OPERATION_SET = 1,
2469 /** Error happened while handling property get. */
2470 VEHICLE_OPERATION_GET = 2,
2471 /** Error happened while handling property subscription. */
2472 VEHICLE_OPERATION_SUBSCRIBE = 3,
2473};
2474
2475/*
Keun-young Parkab68e372016-03-10 16:28:42 -08002476 * Suggests that an error condition has occurred.
Sanket Agarwalfb636682015-08-11 14:34:29 -07002477 *
Keun-young Parkab68e372016-03-10 16:28:42 -08002478 * @param error_code Error code. error_code should be standard error code with
2479 * negative value like -EINVAL.
Sanket Agarwalfb636682015-08-11 14:34:29 -07002480 * @parm property Note a property where error has happened. If this is generic error, property
2481 * should be VEHICLE_PROPERTY_INVALID.
2482 * @param operation Represent the operation where the error has happened. Should be one of
2483 * vehicle_property_operation.
2484 */
2485typedef int (*vehicle_error_callback_fn)(int32_t error_code, int32_t property, int32_t operation);
2486
2487/************************************************************************************/
2488
2489/*
2490 * Every hardware module must have a data structure named HAL_MODULE_INFO_SYM
2491 * and the fields of this data structure must begin with hw_module_t
2492 * followed by module specific information.
2493 */
2494typedef struct vehicle_module {
2495 struct hw_module_t common;
2496} vehicle_module_t;
2497
2498
2499typedef struct vehicle_hw_device {
2500 struct hw_device_t common;
2501
2502 /**
2503 * After calling open on device the user should register callbacks for event and error
2504 * functions.
2505 */
2506 int (*init)(struct vehicle_hw_device* device,
2507 vehicle_event_callback_fn event_fn, vehicle_error_callback_fn err_fn);
2508 /**
2509 * Before calling close the user should destroy the registered callback
2510 * functions.
2511 * In case the unsubscribe() call is not called on all properties before
2512 * release() then release() will unsubscribe the properties itself.
2513 */
2514 int (*release)(struct vehicle_hw_device* device);
2515
2516 /**
2517 * Enumerate all available properties. The list is returned in "list".
2518 * @param num_properties number of properties contained in the retuned array.
2519 * @return array of property configs supported by this car. Note that returned data is const
2520 * and caller cannot modify it. HAL implementation should keep this memory until HAL
2521 * is released to avoid copying this again.
2522 */
2523 vehicle_prop_config_t const *(*list_properties)(struct vehicle_hw_device* device,
2524 int* num_properties);
2525
2526 /**
2527 * Get a vehicle property value immediately. data should be allocated
2528 * properly.
2529 * The caller of the API OWNS the data field.
Keun-young Park08c255e2015-12-09 13:47:30 -08002530 * Caller will set data->prop, data->value_type, and optionally zone value for zoned property.
2531 * But HAL implementation needs to fill all entries properly when returning.
Sanket Agarwalfb636682015-08-11 14:34:29 -07002532 * For pointer type, HAL implementation should allocate necessary memory and caller is
Keun-young Parkab68e372016-03-10 16:28:42 -08002533 * responsible for calling release_memory_from_get, which allows HAL to release allocated
2534 * memory.
Sanket Agarwalfb636682015-08-11 14:34:29 -07002535 * For VEHICLE_PROP_CHANGE_MODE_STATIC type of property, get should return the same value
2536 * always.
2537 * For VEHICLE_PROP_CHANGE_MODE_ON_CHANGE type of property, it should return the latest value.
Keun-young Parkab68e372016-03-10 16:28:42 -08002538 * If there is no data available yet, which can happen during initial stage, this call should
2539 * return immediately with error code of -EAGAIN.
Sanket Agarwalfb636682015-08-11 14:34:29 -07002540 */
2541 int (*get)(struct vehicle_hw_device* device, vehicle_prop_value_t *data);
2542
2543 /**
Keun-young Parkab68e372016-03-10 16:28:42 -08002544 * Release memory allocated to data in previous get call. get call for byte or string involves
2545 * allocating necessary memory from vehicle hal.
2546 * To be safe, memory allocated by vehicle hal should be released by vehicle hal and vehicle
2547 * network service will call this when data from vehicle hal is no longer necessary.
2548 * vehicle hal implementation should only release member of vehicle_prop_value_t like
2549 * data->str_value.data or data->bytes_value.data but not data itself as data itself is
2550 * allocated from vehicle network service. Once memory is freed, corresponding pointer should
2551 * be set to NULL bu vehicle hal.
2552 */
2553 void (*release_memory_from_get)(struct vehicle_hw_device* device, vehicle_prop_value_t *data);
2554
2555 /**
Sanket Agarwalfb636682015-08-11 14:34:29 -07002556 * Set a vehicle property value. data should be allocated properly and not
2557 * NULL.
2558 * The caller of the API OWNS the data field.
2559 * timestamp of data will be ignored for set operation.
Keun-young Park418c7e82016-04-06 10:44:20 -07002560 * Setting some properties require having initial state available. Depending on the vehicle hal,
2561 * such initial data may not be available for short time after init. In such case, set call
2562 * can return -EAGAIN like get call.
Keun-young Parkf7097582016-04-25 18:10:45 -07002563 * For a property with separate power control, set can fail if the property is not powered on.
2564 * In such case, hal should return -ESHUTDOWN error.
Sanket Agarwalfb636682015-08-11 14:34:29 -07002565 */
2566 int (*set)(struct vehicle_hw_device* device, const vehicle_prop_value_t *data);
2567
2568 /**
2569 * Subscribe to events.
2570 * Depending on output of list_properties if the property is:
2571 * a) on-change: sample_rate should be set to 0.
2572 * b) supports frequency: sample_rate should be set from min_sample_rate to
2573 * max_sample_rate.
Keun-young Park418c7e82016-04-06 10:44:20 -07002574 * For on-change type of properties, vehicle network service will make another get call to check
2575 * the initial state. Due to this, vehicle hal implementation does not need to send initial
2576 * state for on-change type of properties.
Sanket Agarwalfb636682015-08-11 14:34:29 -07002577 * @param device
2578 * @param prop
2579 * @param sample_rate
Keun-young Parkbf877a72015-12-21 14:16:05 -08002580 * @param zones All subscribed zones for zoned property. can be ignored for non-zoned property.
2581 * 0 means all zones supported instead of no zone.
Sanket Agarwalfb636682015-08-11 14:34:29 -07002582 */
Keun-young Parkbf877a72015-12-21 14:16:05 -08002583 int (*subscribe)(struct vehicle_hw_device* device, int32_t prop, float sample_rate,
2584 int32_t zones);
Sanket Agarwalfb636682015-08-11 14:34:29 -07002585
2586 /** Cancel subscription on a property. */
2587 int (*unsubscribe)(struct vehicle_hw_device* device, int32_t prop);
Keun-young Park418c7e82016-04-06 10:44:20 -07002588
2589 /**
2590 * Print out debugging state for the vehicle hal. This will be called by
2591 * the vehicle network service and will be included into the service' dump.
2592 *
2593 * The passed-in file descriptor can be used to write debugging text using
2594 * dprintf() or write(). The text should be in ASCII encoding only.
2595 *
2596 * Performance requirements:
2597 *
2598 * This must be a non-blocking call. The HAL should return from this call
2599 * in 1ms, must return from this call in 10ms. This call must avoid
2600 * deadlocks, as it may be called at any point of operation.
2601 * Any synchronization primitives used (such as mutex locks or semaphores)
2602 * should be acquired with a timeout.
2603 */
2604 int (*dump)(struct vehicle_hw_device* device, int fd);
2605
Sanket Agarwalfb636682015-08-11 14:34:29 -07002606} vehicle_hw_device_t;
2607
2608__END_DECLS
2609
2610#endif // ANDROID_VEHICLE_INTERFACE_H