• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2016 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_hardware_automotive_vehicle_V2_0_impl_DefaultConfig_H_
18 #define android_hardware_automotive_vehicle_V2_0_impl_DefaultConfig_H_
19 
20 #include "PropertyUtils.h"
21 
22 #include <map>
23 
24 namespace android {
25 namespace hardware {
26 namespace automotive {
27 namespace vehicle {
28 namespace V2_0 {
29 
30 namespace impl {
31 
32 struct ConfigDeclaration {
33     VehiclePropConfig config;
34 
35     /* This value will be used as an initial value for the property. If this field is specified for
36      * property that supports multiple areas then it will be used for all areas unless particular
37      * area is overridden in initialAreaValue field. */
38     VehiclePropValue::RawValue initialValue;
39     /* Use initialAreaValues if it is necessary to specify different values per each area. */
40     std::map<int32_t, VehiclePropValue::RawValue> initialAreaValues;
41 };
42 
43 const ConfigDeclaration kVehicleProperties[]{
44         {.config =
45                  {
46                          .prop = toInt(VehicleProperty::INFO_FUEL_CAPACITY),
47                          .access = VehiclePropertyAccess::READ,
48                          .changeMode = VehiclePropertyChangeMode::STATIC,
49                  },
50          .initialValue = {.floatValues = {15000.0f}}},
51 
52         {.config =
53                  {
54                          .prop = toInt(VehicleProperty::INFO_FUEL_TYPE),
55                          .access = VehiclePropertyAccess::READ,
56                          .changeMode = VehiclePropertyChangeMode::STATIC,
57                  },
58          .initialValue = {.int32Values = {(int)FuelType::FUEL_TYPE_UNLEADED}}},
59 
60         {.config =
61                  {
62                          .prop = toInt(VehicleProperty::INFO_EV_BATTERY_CAPACITY),
63                          .access = VehiclePropertyAccess::READ,
64                          .changeMode = VehiclePropertyChangeMode::STATIC,
65                  },
66          .initialValue = {.floatValues = {150000.0f}}},
67 
68         {.config =
69                  {
70                          .prop = toInt(VehicleProperty::INFO_EV_CONNECTOR_TYPE),
71                          .access = VehiclePropertyAccess::READ,
72                          .changeMode = VehiclePropertyChangeMode::STATIC,
73                  },
74          .initialValue = {.int32Values = {(int)EvConnectorType::IEC_TYPE_1_AC}}},
75 
76         {.config =
77                  {
78                          .prop = toInt(VehicleProperty::INFO_FUEL_DOOR_LOCATION),
79                          .access = VehiclePropertyAccess::READ,
80                          .changeMode = VehiclePropertyChangeMode::STATIC,
81                  },
82          .initialValue = {.int32Values = {FUEL_DOOR_REAR_LEFT}}},
83 
84         {.config =
85                  {
86                          .prop = toInt(VehicleProperty::INFO_EV_PORT_LOCATION),
87                          .access = VehiclePropertyAccess::READ,
88                          .changeMode = VehiclePropertyChangeMode::STATIC,
89                  },
90          .initialValue = {.int32Values = {CHARGE_PORT_FRONT_LEFT}}},
91 
92         {.config =
93                  {
94                          .prop = toInt(VehicleProperty::INFO_MULTI_EV_PORT_LOCATIONS),
95                          .access = VehiclePropertyAccess::READ,
96                          .changeMode = VehiclePropertyChangeMode::STATIC,
97                  },
98          .initialValue = {.int32Values = {CHARGE_PORT_FRONT_LEFT, CHARGE_PORT_REAR_LEFT}}},
99 
100         {.config =
101                  {
102                          .prop = toInt(VehicleProperty::INFO_MAKE),
103                          .access = VehiclePropertyAccess::READ,
104                          .changeMode = VehiclePropertyChangeMode::STATIC,
105                  },
106          .initialValue = {.stringValue = "Toy Vehicle"}},
107         {.config =
108                  {
109                          .prop = toInt(VehicleProperty::INFO_MODEL),
110                          .access = VehiclePropertyAccess::READ,
111                          .changeMode = VehiclePropertyChangeMode::STATIC,
112                  },
113          .initialValue = {.stringValue = "Speedy Model"}},
114         {.config =
115                  {
116                          .prop = toInt(VehicleProperty::INFO_MODEL_YEAR),
117                          .access = VehiclePropertyAccess::READ,
118                          .changeMode = VehiclePropertyChangeMode::STATIC,
119                  },
120          .initialValue = {.int32Values = {2020}}},
121         {.config =
122                  {
123                          .prop = toInt(VehicleProperty::INFO_EXTERIOR_DIMENSIONS),
124                          .access = VehiclePropertyAccess::READ,
125                          .changeMode = VehiclePropertyChangeMode::STATIC,
126                  },
127          .initialValue = {.int32Values = {1776, 4950, 2008, 2140, 2984, 1665, 1667, 11800}}},
128         {.config =
129                  {
130                          .prop = toInt(VehicleProperty::PERF_VEHICLE_SPEED),
131                          .access = VehiclePropertyAccess::READ,
132                          .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
133                          .minSampleRate = 1.0f,
134                          .maxSampleRate = 10.0f,
135                  },
136          .initialValue = {.floatValues = {0.0f}}},
137 
138         {.config =
139                  {
140                          .prop = toInt(VehicleProperty::VEHICLE_SPEED_DISPLAY_UNITS),
141                          .access = VehiclePropertyAccess::READ_WRITE,
142                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
143                          .configArray = {(int)VehicleUnit::METER_PER_SEC,
144                                          (int)VehicleUnit::MILES_PER_HOUR,
145                                          (int)VehicleUnit::KILOMETERS_PER_HOUR},
146                  },
147          .initialValue = {.int32Values = {(int)VehicleUnit::KILOMETERS_PER_HOUR}}},
148 
149         {.config =
150                  {
151                          .prop = toInt(VehicleProperty::SEAT_OCCUPANCY),
152                          .access = VehiclePropertyAccess::READ,
153                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
154                          .areaConfigs = {VehicleAreaConfig{.areaId = (SEAT_1_LEFT)},
155                                          VehicleAreaConfig{.areaId = (SEAT_1_RIGHT)}},
156                  },
157          .initialAreaValues = {{SEAT_1_LEFT,
158                                 {.int32Values = {(int)VehicleSeatOccupancyState::VACANT}}},
159                                {SEAT_1_RIGHT,
160                                 {.int32Values = {(int)VehicleSeatOccupancyState::VACANT}}}}},
161 
162         {.config =
163                  {
164                          .prop = toInt(VehicleProperty::INFO_DRIVER_SEAT),
165                          .access = VehiclePropertyAccess::READ,
166                          .changeMode = VehiclePropertyChangeMode::STATIC,
167                          // this was a zoned property on an old vhal, but it is meant to be global
168                          .areaConfigs = {VehicleAreaConfig{.areaId = (0)}},
169                  },
170          .initialValue = {.int32Values = {SEAT_1_LEFT}}},
171 
172         {.config =
173                  {
174                          .prop = toInt(VehicleProperty::PERF_ODOMETER),
175                          .access = VehiclePropertyAccess::READ,
176                          .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
177                          .minSampleRate = 1.0f,
178                          .maxSampleRate = 10.0f,
179                  },
180          .initialValue = {.floatValues = {0.0f}}},
181         {.config =
182                  {
183                          .prop = toInt(VehicleProperty::PERF_STEERING_ANGLE),
184                          .access = VehiclePropertyAccess::READ,
185                          .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
186                          .minSampleRate = 1.0f,
187                          .maxSampleRate = 10.0f,
188                  },
189          .initialValue = {.floatValues = {0.0f}}},
190         {.config =
191                  {
192                          .prop = toInt(VehicleProperty::PERF_REAR_STEERING_ANGLE),
193                          .access = VehiclePropertyAccess::READ,
194                          .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
195                          .minSampleRate = 1.0f,
196                          .maxSampleRate = 10.0f,
197                  },
198          .initialValue = {.floatValues = {0.0f}}},
199         {
200                 .config =
201                         {
202                                 .prop = toInt(VehicleProperty::ENGINE_RPM),
203                                 .access = VehiclePropertyAccess::READ,
204                                 .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
205                                 .minSampleRate = 1.0f,
206                                 .maxSampleRate = 10.0f,
207                         },
208                 .initialValue = {.floatValues = {0.0f}},
209         },
210 
211         {.config =
212                  {
213                          .prop = toInt(VehicleProperty::FUEL_LEVEL),
214                          .access = VehiclePropertyAccess::READ,
215                          .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
216                          .minSampleRate = 1.0f,
217                          .maxSampleRate = 100.0f,
218                  },
219          .initialValue = {.floatValues = {15000.0f}}},
220 
221         {.config =
222                  {
223                          .prop = toInt(VehicleProperty::FUEL_DOOR_OPEN),
224                          .access = VehiclePropertyAccess::READ_WRITE,
225                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
226                  },
227          .initialValue = {.int32Values = {0}}},
228 
229         {.config =
230                  {
231                          .prop = toInt(VehicleProperty::EV_BATTERY_LEVEL),
232                          .access = VehiclePropertyAccess::READ,
233                          .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
234                          .minSampleRate = 1.0f,
235                          .maxSampleRate = 100.0f,
236                  },
237          .initialValue = {.floatValues = {150000.0f}}},
238 
239         {.config =
240                  {
241                          .prop = toInt(VehicleProperty::EV_CHARGE_PORT_OPEN),
242                          .access = VehiclePropertyAccess::READ_WRITE,
243                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
244                  },
245          .initialValue = {.int32Values = {0}}},
246 
247         {.config =
248                  {
249                          .prop = toInt(VehicleProperty::EV_CHARGE_PORT_CONNECTED),
250                          .access = VehiclePropertyAccess::READ,
251                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
252                  },
253          .initialValue = {.int32Values = {0}}},
254 
255         {.config =
256                  {
257                          .prop = toInt(VehicleProperty::EV_BATTERY_INSTANTANEOUS_CHARGE_RATE),
258                          .access = VehiclePropertyAccess::READ,
259                          .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
260                          .minSampleRate = 1.0f,
261                          .maxSampleRate = 10.0f,
262                  },
263          .initialValue = {.floatValues = {0.0f}}},
264 
265         {.config =
266                  {
267                          .prop = toInt(VehicleProperty::RANGE_REMAINING),
268                          .access = VehiclePropertyAccess::READ_WRITE,
269                          .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
270                          .minSampleRate = 1.0f,
271                          .maxSampleRate = 2.0f,
272                  },
273          .initialValue = {.floatValues = {50000.0f}}},  // units in meters
274 
275         {.config =
276                  {
277                          .prop = toInt(VehicleProperty::TIRE_PRESSURE),
278                          .access = VehiclePropertyAccess::READ,
279                          .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
280                          .areaConfigs = {VehicleAreaConfig{
281                                                  .areaId = WHEEL_FRONT_LEFT,
282                                                  .minFloatValue = 193.0f,
283                                                  .maxFloatValue = 300.0f,
284                                          },
285                                          VehicleAreaConfig{
286                                                  .areaId = WHEEL_FRONT_RIGHT,
287                                                  .minFloatValue = 193.0f,
288                                                  .maxFloatValue = 300.0f,
289                                          },
290                                          VehicleAreaConfig{
291                                                  .areaId = WHEEL_REAR_LEFT,
292                                                  .minFloatValue = 193.0f,
293                                                  .maxFloatValue = 300.0f,
294                                          },
295                                          VehicleAreaConfig{
296                                                  .areaId = WHEEL_REAR_RIGHT,
297                                                  .minFloatValue = 193.0f,
298                                                  .maxFloatValue = 300.0f,
299                                          }},
300                          .minSampleRate = 1.0f,
301                          .maxSampleRate = 2.0f,
302                  },
303          .initialValue = {.floatValues = {200.0f}}},  // units in kPa
304 
305         {.config =
306                  {
307                          .prop = toInt(VehicleProperty::CRITICALLY_LOW_TIRE_PRESSURE),
308                          .access = VehiclePropertyAccess::READ,
309                          .changeMode = VehiclePropertyChangeMode::STATIC,
310                          .areaConfigs = {VehicleAreaConfig{
311                                                  .areaId = WHEEL_FRONT_LEFT,
312                                          },
313                                          VehicleAreaConfig{
314                                                  .areaId = WHEEL_FRONT_RIGHT,
315                                          },
316                                          VehicleAreaConfig{
317                                                  .areaId = WHEEL_REAR_LEFT,
318                                          },
319                                          VehicleAreaConfig{
320                                                  .areaId = WHEEL_REAR_RIGHT,
321                                          }},
322                  },
323          .initialAreaValues = {{WHEEL_FRONT_LEFT, {.floatValues = {137.0f}}},
324                                {WHEEL_FRONT_RIGHT, {.floatValues = {137.0f}}},
325                                {WHEEL_REAR_RIGHT, {.floatValues = {137.0f}}},
326                                {WHEEL_REAR_LEFT, {.floatValues = {137.0f}}}}},
327 
328         {.config =
329                  {
330                          .prop = toInt(VehicleProperty::TIRE_PRESSURE_DISPLAY_UNITS),
331                          .access = VehiclePropertyAccess::READ_WRITE,
332                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
333                          .configArray = {(int)VehicleUnit::KILOPASCAL, (int)VehicleUnit::PSI,
334                                          (int)VehicleUnit::BAR},
335                  },
336          .initialValue = {.int32Values = {toInt(VehicleUnit::PSI)}}},
337 
338         {.config =
339                  {
340                          .prop = toInt(VehicleProperty::CURRENT_GEAR),
341                          .access = VehiclePropertyAccess::READ,
342                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
343                          .configArray = {(int)VehicleGear::GEAR_PARK,
344                                          (int)VehicleGear::GEAR_NEUTRAL,
345                                          (int)VehicleGear::GEAR_REVERSE, (int)VehicleGear::GEAR_1,
346                                          (int)VehicleGear::GEAR_2, (int)VehicleGear::GEAR_3,
347                                          (int)VehicleGear::GEAR_4, (int)VehicleGear::GEAR_5},
348                  },
349          .initialValue = {.int32Values = {toInt(VehicleGear::GEAR_PARK)}}},
350 
351         {.config =
352                  {
353                          .prop = toInt(VehicleProperty::PARKING_BRAKE_ON),
354                          .access = VehiclePropertyAccess::READ,
355                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
356                  },
357          .initialValue = {.int32Values = {1}}},
358 
359         {.config =
360                  {
361                          .prop = toInt(VehicleProperty::PARKING_BRAKE_AUTO_APPLY),
362                          .access = VehiclePropertyAccess::READ,
363                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
364                  },
365          .initialValue = {.int32Values = {1}}},
366 
367         {.config =
368                  {
369                          .prop = toInt(VehicleProperty::FUEL_LEVEL_LOW),
370                          .access = VehiclePropertyAccess::READ,
371                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
372                  },
373          .initialValue = {.int32Values = {0}}},
374 
375         {.config =
376                  {
377                          .prop = toInt(VehicleProperty::HW_KEY_INPUT),
378                          .access = VehiclePropertyAccess::READ,
379                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
380                  },
381          .initialValue = {.int32Values = {0, 0, 0}}},
382 
383         {.config =
384                  {
385                          .prop = toInt(VehicleProperty::HW_ROTARY_INPUT),
386                          .access = VehiclePropertyAccess::READ,
387                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
388                  },
389          .initialValue = {.int32Values = {0, 0, 0}}},
390 
391         {.config =
392                  {
393                          .prop = toInt(VehicleProperty::HW_CUSTOM_INPUT),
394                          .access = VehiclePropertyAccess::READ,
395                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
396                          .configArray = {0, 0, 0, 3, 0, 0, 0, 0, 0},
397                  },
398          .initialValue =
399                  {
400                          .int32Values = {0, 0, 0},
401                  }},
402 
403         {.config = {.prop = toInt(VehicleProperty::HVAC_POWER_ON),
404                     .access = VehiclePropertyAccess::READ_WRITE,
405                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
406                     .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}},
407                     // TODO(bryaneyler): Ideally, this is generated dynamically from
408                     // kHvacPowerProperties.
409                     .configArray = {toInt(VehicleProperty::HVAC_FAN_SPEED),
410                                     toInt(VehicleProperty::HVAC_FAN_DIRECTION)}},
411          .initialValue = {.int32Values = {1}}},
412 
413         {
414                 .config = {.prop = toInt(VehicleProperty::HVAC_DEFROSTER),
415                            .access = VehiclePropertyAccess::READ_WRITE,
416                            .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
417                            .areaConfigs =
418                                    {VehicleAreaConfig{
419                                             .areaId = toInt(VehicleAreaWindow::FRONT_WINDSHIELD)},
420                                     VehicleAreaConfig{
421                                             .areaId = toInt(VehicleAreaWindow::REAR_WINDSHIELD)}}},
422                 .initialValue = {.int32Values = {0}}  // Will be used for all areas.
423         },
424         {
425                 .config = {.prop = toInt(VehicleProperty::HVAC_ELECTRIC_DEFROSTER_ON),
426                            .access = VehiclePropertyAccess::READ_WRITE,
427                            .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
428                            .areaConfigs =
429                                    {VehicleAreaConfig{
430                                             .areaId = toInt(VehicleAreaWindow::FRONT_WINDSHIELD)},
431                                     VehicleAreaConfig{
432                                             .areaId = toInt(VehicleAreaWindow::REAR_WINDSHIELD)}}},
433                 .initialValue = {.int32Values = {0}}  // Will be used for all areas.
434         },
435 
436         {.config = {.prop = toInt(VehicleProperty::HVAC_MAX_DEFROST_ON),
437                     .access = VehiclePropertyAccess::READ_WRITE,
438                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
439                     .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
440          .initialValue = {.int32Values = {0}}},
441 
442         {.config = {.prop = toInt(VehicleProperty::HVAC_RECIRC_ON),
443                     .access = VehiclePropertyAccess::READ_WRITE,
444                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
445                     .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
446          .initialValue = {.int32Values = {1}}},
447 
448         {.config = {.prop = toInt(VehicleProperty::HVAC_AUTO_RECIRC_ON),
449                     .access = VehiclePropertyAccess::READ_WRITE,
450                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
451                     .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
452          .initialValue = {.int32Values = {0}}},
453 
454         {.config = {.prop = toInt(VehicleProperty::HVAC_AC_ON),
455                     .access = VehiclePropertyAccess::READ_WRITE,
456                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
457                     .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
458          .initialValue = {.int32Values = {1}}},
459 
460         {.config = {.prop = toInt(VehicleProperty::HVAC_MAX_AC_ON),
461                     .access = VehiclePropertyAccess::READ_WRITE,
462                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
463                     .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
464          .initialValue = {.int32Values = {0}}},
465 
466         {.config = {.prop = toInt(VehicleProperty::HVAC_AUTO_ON),
467                     .access = VehiclePropertyAccess::READ_WRITE,
468                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
469                     .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
470          .initialValue = {.int32Values = {1}}},
471 
472         {.config = {.prop = toInt(VehicleProperty::HVAC_DUAL_ON),
473                     .access = VehiclePropertyAccess::READ_WRITE,
474                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
475                     .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
476          .initialValue = {.int32Values = {0}}},
477 
478         {.config = {.prop = toInt(VehicleProperty::HVAC_FAN_SPEED),
479                     .access = VehiclePropertyAccess::READ_WRITE,
480                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
481                     .areaConfigs = {VehicleAreaConfig{
482                             .areaId = HVAC_ALL, .minInt32Value = 1, .maxInt32Value = 7}}},
483          .initialValue = {.int32Values = {3}}},
484 
485         {.config = {.prop = toInt(VehicleProperty::HVAC_FAN_DIRECTION),
486                     .access = VehiclePropertyAccess::READ_WRITE,
487                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
488                     .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
489          .initialValue = {.int32Values = {toInt(VehicleHvacFanDirection::FACE)}}},
490 
491         {.config = {.prop = toInt(VehicleProperty::HVAC_FAN_DIRECTION_AVAILABLE),
492                     .access = VehiclePropertyAccess::READ,
493                     .changeMode = VehiclePropertyChangeMode::STATIC,
494                     .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
495          .initialValue = {.int32Values = {FAN_DIRECTION_FACE, FAN_DIRECTION_FLOOR,
496                                           FAN_DIRECTION_FACE | FAN_DIRECTION_FLOOR,
497                                           FAN_DIRECTION_DEFROST,
498                                           FAN_DIRECTION_FACE | FAN_DIRECTION_DEFROST,
499                                           FAN_DIRECTION_FLOOR | FAN_DIRECTION_DEFROST,
500                                           FAN_DIRECTION_FLOOR | FAN_DIRECTION_DEFROST |
501                                                   FAN_DIRECTION_FACE}}},
502         {.config = {.prop = toInt(VehicleProperty::HVAC_SEAT_VENTILATION),
503                     .access = VehiclePropertyAccess::READ_WRITE,
504                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
505                     .areaConfigs = {VehicleAreaConfig{
506                                             .areaId = SEAT_1_LEFT,
507                                             .minInt32Value = 0,
508                                             .maxInt32Value = 3,
509                                     },
510                                     VehicleAreaConfig{
511                                             .areaId = SEAT_1_RIGHT,
512                                             .minInt32Value = 0,
513                                             .maxInt32Value = 3,
514                                     }}},
515          .initialValue =
516                  {.int32Values = {0}}},  // 0 is off and +ve values indicate ventilation level.
517 
518         {.config = {.prop = toInt(VehicleProperty::HVAC_STEERING_WHEEL_HEAT),
519                     .access = VehiclePropertyAccess::READ_WRITE,
520                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
521                     .areaConfigs = {VehicleAreaConfig{
522                             .areaId = (0), .minInt32Value = -2, .maxInt32Value = 2}}},
523          .initialValue = {.int32Values = {0}}},  // +ve values for heating and -ve for cooling
524 
525         {.config = {.prop = toInt(VehicleProperty::HVAC_SEAT_TEMPERATURE),
526                     .access = VehiclePropertyAccess::READ_WRITE,
527                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
528                     .areaConfigs = {VehicleAreaConfig{
529                                             .areaId = SEAT_1_LEFT,
530                                             .minInt32Value = -2,
531                                             .maxInt32Value = 2,
532                                     },
533                                     VehicleAreaConfig{
534                                             .areaId = SEAT_1_RIGHT,
535                                             .minInt32Value = -2,
536                                             .maxInt32Value = 2,
537                                     }}},
538          .initialValue = {.int32Values = {0}}},  // +ve values for heating and -ve for cooling
539 
540         {.config = {.prop = toInt(VehicleProperty::HVAC_TEMPERATURE_SET),
541                     .access = VehiclePropertyAccess::READ_WRITE,
542                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
543                     .configArray = {160, 280, 5, 605, 825, 10},
544                     .areaConfigs = {VehicleAreaConfig{
545                                             .areaId = HVAC_LEFT,
546                                             .minFloatValue = 16,
547                                             .maxFloatValue = 32,
548                                     },
549                                     VehicleAreaConfig{
550                                             .areaId = HVAC_RIGHT,
551                                             .minFloatValue = 16,
552                                             .maxFloatValue = 32,
553                                     }}},
554          .initialAreaValues = {{HVAC_LEFT, {.floatValues = {16}}},
555                                {HVAC_RIGHT, {.floatValues = {20}}}}},
556 
557         {.config =
558                  {
559                          .prop = toInt(VehicleProperty::HVAC_TEMPERATURE_VALUE_SUGGESTION),
560                          .access = VehiclePropertyAccess::READ_WRITE,
561                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
562                  },
563          .initialValue = {.floatValues = {66.2f, (float)VehicleUnit::FAHRENHEIT, 19.0f, 66.5f}}},
564 
565         {.config =
566                  {
567                          .prop = toInt(VehicleProperty::ENV_OUTSIDE_TEMPERATURE),
568                          .access = VehiclePropertyAccess::READ,
569                          // TODO(bryaneyler): Support ON_CHANGE as well.
570                          .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
571                          .minSampleRate = 1.0f,
572                          .maxSampleRate = 2.0f,
573                  },
574          .initialValue = {.floatValues = {25.0f}}},
575 
576         {.config = {.prop = toInt(VehicleProperty::HVAC_TEMPERATURE_DISPLAY_UNITS),
577                     .access = VehiclePropertyAccess::READ_WRITE,
578                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
579                     .configArray = {(int)VehicleUnit::FAHRENHEIT, (int)VehicleUnit::CELSIUS}},
580          .initialValue = {.int32Values = {(int)VehicleUnit::FAHRENHEIT}}},
581 
582         {.config =
583                  {
584                          .prop = toInt(VehicleProperty::DISTANCE_DISPLAY_UNITS),
585                          .access = VehiclePropertyAccess::READ_WRITE,
586                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
587                          .areaConfigs = {VehicleAreaConfig{.areaId = (0)}},
588                          .configArray = {(int)VehicleUnit::KILOMETER, (int)VehicleUnit::MILE},
589                  },
590          .initialValue = {.int32Values = {(int)VehicleUnit::MILE}}},
591 
592         {.config =
593                  {
594                          .prop = toInt(VehicleProperty::NIGHT_MODE),
595                          .access = VehiclePropertyAccess::READ,
596                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
597                  },
598          .initialValue = {.int32Values = {0}}},
599 
600         {.config =
601                  {
602                          .prop = toInt(VehicleProperty::GEAR_SELECTION),
603                          .access = VehiclePropertyAccess::READ,
604                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
605                          .configArray = {(int)VehicleGear::GEAR_PARK,
606                                          (int)VehicleGear::GEAR_NEUTRAL,
607                                          (int)VehicleGear::GEAR_REVERSE,
608                                          (int)VehicleGear::GEAR_DRIVE, (int)VehicleGear::GEAR_1,
609                                          (int)VehicleGear::GEAR_2, (int)VehicleGear::GEAR_3,
610                                          (int)VehicleGear::GEAR_4, (int)VehicleGear::GEAR_5},
611                  },
612          .initialValue = {.int32Values = {toInt(VehicleGear::GEAR_PARK)}}},
613 
614         {.config =
615                  {
616                          .prop = toInt(VehicleProperty::TURN_SIGNAL_STATE),
617                          .access = VehiclePropertyAccess::READ,
618                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
619                  },
620          .initialValue = {.int32Values = {toInt(VehicleTurnSignal::NONE)}}},
621 
622         {.config =
623                  {
624                          .prop = toInt(VehicleProperty::IGNITION_STATE),
625                          .access = VehiclePropertyAccess::READ,
626                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
627                  },
628          .initialValue = {.int32Values = {toInt(VehicleIgnitionState::ON)}}},
629 
630         {.config =
631                  {
632                          .prop = toInt(VehicleProperty::ENGINE_OIL_LEVEL),
633                          .access = VehiclePropertyAccess::READ,
634                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
635                  },
636          .initialValue = {.int32Values = {toInt(VehicleOilLevel::NORMAL)}}},
637 
638         {.config =
639                  {
640                          .prop = toInt(VehicleProperty::ENGINE_OIL_TEMP),
641                          .access = VehiclePropertyAccess::READ,
642                          .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
643                          .minSampleRate = 0.1,  // 0.1 Hz, every 10 seconds
644                          .maxSampleRate = 10,   // 10 Hz, every 100 ms
645                  },
646          .initialValue = {.floatValues = {101.0f}}},
647 
648         {
649                 .config = {.prop = kMixedTypePropertyForTest,
650                            .access = VehiclePropertyAccess::READ_WRITE,
651                            .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
652                            .configArray = {1, 1, 0, 2, 0, 0, 1, 0, 0}},
653                 .initialValue =
654                         {
655                                 .int32Values = {1 /* indicate TRUE boolean value */, 2, 3},
656                                 .floatValues = {4.5f},
657                                 .stringValue = "MIXED property",
658                         },
659         },
660 
661         {.config = {.prop = toInt(VehicleProperty::DOOR_LOCK),
662                     .access = VehiclePropertyAccess::READ_WRITE,
663                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
664                     .areaConfigs = {VehicleAreaConfig{.areaId = DOOR_1_LEFT},
665                                     VehicleAreaConfig{.areaId = DOOR_1_RIGHT},
666                                     VehicleAreaConfig{.areaId = DOOR_2_LEFT},
667                                     VehicleAreaConfig{.areaId = DOOR_2_RIGHT}}},
668          .initialAreaValues = {{DOOR_1_LEFT, {.int32Values = {1}}},
669                                {DOOR_1_RIGHT, {.int32Values = {1}}},
670                                {DOOR_2_LEFT, {.int32Values = {1}}},
671                                {DOOR_2_RIGHT, {.int32Values = {1}}}}},
672 
673         {.config = {.prop = toInt(VehicleProperty::DOOR_POS),
674                     .access = VehiclePropertyAccess::READ_WRITE,
675                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
676                     .areaConfigs =
677                             {VehicleAreaConfig{
678                                      .areaId = DOOR_1_LEFT, .minInt32Value = 0, .maxInt32Value = 1},
679                              VehicleAreaConfig{.areaId = DOOR_1_RIGHT,
680                                                .minInt32Value = 0,
681                                                .maxInt32Value = 1},
682                              VehicleAreaConfig{
683                                      .areaId = DOOR_2_LEFT, .minInt32Value = 0, .maxInt32Value = 1},
684                              VehicleAreaConfig{.areaId = DOOR_2_RIGHT,
685                                                .minInt32Value = 0,
686                                                .maxInt32Value = 1},
687                              VehicleAreaConfig{
688                                      .areaId = DOOR_REAR, .minInt32Value = 0, .maxInt32Value = 1}}},
689          .initialValue = {.int32Values = {0}}},
690 
691         {.config = {.prop = toInt(VehicleProperty::WINDOW_LOCK),
692                     .access = VehiclePropertyAccess::READ_WRITE,
693                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
694                     .areaConfigs = {VehicleAreaConfig{.areaId = WINDOW_1_RIGHT | WINDOW_2_LEFT |
695                                                                 WINDOW_2_RIGHT}}},
696          .initialAreaValues = {{WINDOW_1_RIGHT | WINDOW_2_LEFT | WINDOW_2_RIGHT,
697                                 {.int32Values = {0}}}}},
698 
699         {.config = {.prop = toInt(VehicleProperty::WINDOW_POS),
700                     .access = VehiclePropertyAccess::READ_WRITE,
701                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
702                     .areaConfigs = {VehicleAreaConfig{.areaId = WINDOW_1_LEFT,
703                                                       .minInt32Value = 0,
704                                                       .maxInt32Value = 10},
705                                     VehicleAreaConfig{.areaId = WINDOW_1_RIGHT,
706                                                       .minInt32Value = 0,
707                                                       .maxInt32Value = 10},
708                                     VehicleAreaConfig{.areaId = WINDOW_2_LEFT,
709                                                       .minInt32Value = 0,
710                                                       .maxInt32Value = 10},
711                                     VehicleAreaConfig{.areaId = WINDOW_2_RIGHT,
712                                                       .minInt32Value = 0,
713                                                       .maxInt32Value = 10},
714                                     VehicleAreaConfig{.areaId = WINDOW_ROOF_TOP_1,
715                                                       .minInt32Value = -10,
716                                                       .maxInt32Value = 10}}},
717          .initialValue = {.int32Values = {0}}},
718 
719         {.config =
720                  {
721                          .prop = WHEEL_TICK,
722                          .access = VehiclePropertyAccess::READ,
723                          .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
724                          .configArray = {ALL_WHEELS, 50000, 50000, 50000, 50000},
725                          .minSampleRate = 1.0f,
726                          .maxSampleRate = 10.0f,
727                  },
728          .initialValue = {.int64Values = {0, 100000, 200000, 300000, 400000}}},
729 
730         {.config = {.prop = ABS_ACTIVE,
731                     .access = VehiclePropertyAccess::READ,
732                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE},
733          .initialValue = {.int32Values = {0}}},
734 
735         {.config = {.prop = TRACTION_CONTROL_ACTIVE,
736                     .access = VehiclePropertyAccess::READ,
737                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE},
738          .initialValue = {.int32Values = {0}}},
739 
740         {.config = {.prop = toInt(VehicleProperty::AP_POWER_STATE_REQ),
741                     .access = VehiclePropertyAccess::READ,
742                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
743                     .configArray = {3}},
744          .initialValue = {.int32Values = {toInt(VehicleApPowerStateReq::ON), 0}}},
745 
746         {.config = {.prop = toInt(VehicleProperty::AP_POWER_STATE_REPORT),
747                     .access = VehiclePropertyAccess::READ_WRITE,
748                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE},
749          .initialValue = {.int32Values = {toInt(VehicleApPowerStateReport::WAIT_FOR_VHAL), 0}}},
750 
751         {.config = {.prop = toInt(VehicleProperty::DISPLAY_BRIGHTNESS),
752                     .access = VehiclePropertyAccess::READ_WRITE,
753                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
754                     .areaConfigs = {VehicleAreaConfig{.minInt32Value = 0, .maxInt32Value = 100}}},
755          .initialValue = {.int32Values = {100}}},
756 
757         {
758                 .config = {.prop = OBD2_LIVE_FRAME,
759                            .access = VehiclePropertyAccess::READ,
760                            .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
761                            .configArray = {0, 0}},
762         },
763 
764         {
765                 .config = {.prop = OBD2_FREEZE_FRAME,
766                            .access = VehiclePropertyAccess::READ,
767                            .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
768                            .configArray = {0, 0}},
769         },
770 
771         {
772                 .config = {.prop = OBD2_FREEZE_FRAME_INFO,
773                            .access = VehiclePropertyAccess::READ,
774                            .changeMode = VehiclePropertyChangeMode::ON_CHANGE},
775         },
776 
777         {
778                 .config = {.prop = OBD2_FREEZE_FRAME_CLEAR,
779                            .access = VehiclePropertyAccess::WRITE,
780                            .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
781                            .configArray = {1}},
782         },
783 
784         {.config =
785                  {
786                          .prop = toInt(VehicleProperty::HEADLIGHTS_STATE),
787                          .access = VehiclePropertyAccess::READ,
788                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
789                  },
790          .initialValue = {.int32Values = {LIGHT_STATE_ON}}},
791 
792         {.config =
793                  {
794                          .prop = toInt(VehicleProperty::HIGH_BEAM_LIGHTS_STATE),
795                          .access = VehiclePropertyAccess::READ,
796                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
797                  },
798          .initialValue = {.int32Values = {LIGHT_STATE_ON}}},
799 
800         {.config =
801                  {
802                          .prop = toInt(VehicleProperty::FOG_LIGHTS_STATE),
803                          .access = VehiclePropertyAccess::READ,
804                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
805                  },
806          .initialValue = {.int32Values = {LIGHT_STATE_ON}}},
807 
808         {.config =
809                  {
810                          .prop = toInt(VehicleProperty::HAZARD_LIGHTS_STATE),
811                          .access = VehiclePropertyAccess::READ,
812                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
813                  },
814          .initialValue = {.int32Values = {LIGHT_STATE_ON}}},
815 
816         {.config =
817                  {
818                          .prop = toInt(VehicleProperty::HEADLIGHTS_SWITCH),
819                          .access = VehiclePropertyAccess::READ_WRITE,
820                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
821                  },
822          .initialValue = {.int32Values = {LIGHT_SWITCH_AUTO}}},
823 
824         {.config =
825                  {
826                          .prop = toInt(VehicleProperty::HIGH_BEAM_LIGHTS_SWITCH),
827                          .access = VehiclePropertyAccess::READ_WRITE,
828                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
829                  },
830          .initialValue = {.int32Values = {LIGHT_SWITCH_AUTO}}},
831 
832         {.config =
833                  {
834                          .prop = toInt(VehicleProperty::FOG_LIGHTS_SWITCH),
835                          .access = VehiclePropertyAccess::READ_WRITE,
836                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
837                  },
838          .initialValue = {.int32Values = {LIGHT_SWITCH_AUTO}}},
839 
840         {.config =
841                  {
842                          .prop = toInt(VehicleProperty::HAZARD_LIGHTS_SWITCH),
843                          .access = VehiclePropertyAccess::READ_WRITE,
844                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
845                  },
846          .initialValue = {.int32Values = {LIGHT_SWITCH_AUTO}}},
847 
848         {.config =
849                  {
850                          .prop = toInt(VehicleProperty::EVS_SERVICE_REQUEST),
851                          .access = VehiclePropertyAccess::READ,
852                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
853                  },
854          .initialValue = {.int32Values = {toInt(EvsServiceType::REARVIEW),
855                                           toInt(EvsServiceState::OFF)}}},
856 
857         {.config = {.prop = VEHICLE_MAP_SERVICE,
858                     .access = VehiclePropertyAccess::READ_WRITE,
859                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE}},
860 
861         // Example Vendor Extension properties for testing
862         {.config = {.prop = VENDOR_EXTENSION_BOOLEAN_PROPERTY,
863                     .access = VehiclePropertyAccess::READ_WRITE,
864                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
865                     .areaConfigs = {VehicleAreaConfig{.areaId = DOOR_1_LEFT},
866                                     VehicleAreaConfig{.areaId = DOOR_1_RIGHT},
867                                     VehicleAreaConfig{.areaId = DOOR_2_LEFT},
868                                     VehicleAreaConfig{.areaId = DOOR_2_RIGHT}}},
869          .initialAreaValues = {{DOOR_1_LEFT, {.int32Values = {1}}},
870                                {DOOR_1_RIGHT, {.int32Values = {1}}},
871                                {DOOR_2_LEFT, {.int32Values = {0}}},
872                                {DOOR_2_RIGHT, {.int32Values = {0}}}}},
873 
874         {.config = {.prop = VENDOR_EXTENSION_FLOAT_PROPERTY,
875                     .access = VehiclePropertyAccess::READ_WRITE,
876                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
877                     .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_LEFT,
878                                                       .minFloatValue = -10,
879                                                       .maxFloatValue = 10},
880                                     VehicleAreaConfig{.areaId = HVAC_RIGHT,
881                                                       .minFloatValue = -10,
882                                                       .maxFloatValue = 10}}},
883          .initialAreaValues = {{HVAC_LEFT, {.floatValues = {1}}},
884                                {HVAC_RIGHT, {.floatValues = {2}}}}},
885 
886         {.config = {.prop = VENDOR_EXTENSION_INT_PROPERTY,
887                     .access = VehiclePropertyAccess::READ_WRITE,
888                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
889                     .areaConfigs =
890                             {VehicleAreaConfig{.areaId = (int)VehicleAreaWindow::FRONT_WINDSHIELD,
891                                                .minInt32Value = -100,
892                                                .maxInt32Value = 100},
893                              VehicleAreaConfig{.areaId = (int)VehicleAreaWindow::REAR_WINDSHIELD,
894                                                .minInt32Value = -100,
895                                                .maxInt32Value = 100},
896                              VehicleAreaConfig{.areaId = (int)VehicleAreaWindow::ROOF_TOP_1,
897                                                .minInt32Value = -100,
898                                                .maxInt32Value = 100}}},
899          .initialAreaValues = {{(int)VehicleAreaWindow::FRONT_WINDSHIELD, {.int32Values = {1}}},
900                                {(int)VehicleAreaWindow::REAR_WINDSHIELD, {.int32Values = {0}}},
901                                {(int)VehicleAreaWindow::ROOF_TOP_1, {.int32Values = {-1}}}}},
902 
903         {.config = {.prop = VENDOR_EXTENSION_STRING_PROPERTY,
904                     .access = VehiclePropertyAccess::READ_WRITE,
905                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE},
906          .initialValue = {.stringValue = "Vendor String Property"}},
907 
908         {.config = {.prop = toInt(VehicleProperty::ELECTRONIC_TOLL_COLLECTION_CARD_TYPE),
909                     .access = VehiclePropertyAccess::READ,
910                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE},
911          .initialValue = {.int32Values = {0}}},
912 
913         {.config = {.prop = toInt(VehicleProperty::ELECTRONIC_TOLL_COLLECTION_CARD_STATUS),
914                     .access = VehiclePropertyAccess::READ,
915                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE},
916          .initialValue = {.int32Values = {0}}},
917 
918         {.config =
919                  {
920                          .prop = toInt(VehicleProperty::SUPPORT_CUSTOMIZE_VENDOR_PERMISSION),
921                          .access = VehiclePropertyAccess::READ,
922                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
923                          .configArray =
924                                  {kMixedTypePropertyForTest,
925                                   (int)VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_INFO,
926                                   (int)VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_INFO,
927                                   VENDOR_EXTENSION_INT_PROPERTY,
928                                   (int)VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_SEAT,
929                                   (int)VehicleVendorPermission::PERMISSION_NOT_ACCESSIBLE,
930                                   VENDOR_EXTENSION_FLOAT_PROPERTY,
931                                   (int)VehicleVendorPermission::PERMISSION_DEFAULT,
932                                   (int)VehicleVendorPermission::PERMISSION_DEFAULT},
933                  },
934          .initialValue = {.int32Values = {1}}},
935 
936         {
937                 .config =
938                         {
939                                 .prop = toInt(VehicleProperty::INITIAL_USER_INFO),
940                                 .access = VehiclePropertyAccess::READ_WRITE,
941                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
942                         },
943         },
944         {
945                 .config =
946                         {
947                                 .prop = toInt(VehicleProperty::SWITCH_USER),
948                                 .access = VehiclePropertyAccess::READ_WRITE,
949                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
950                         },
951         },
952         {
953                 .config =
954                         {
955                                 .prop = toInt(VehicleProperty::CREATE_USER),
956                                 .access = VehiclePropertyAccess::READ_WRITE,
957                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
958                         },
959         },
960         {
961                 .config =
962                         {
963                                 .prop = toInt(VehicleProperty::REMOVE_USER),
964                                 .access = VehiclePropertyAccess::READ_WRITE,
965                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
966                         },
967         },
968         {
969                 .config =
970                         {
971                                 .prop = toInt(VehicleProperty::USER_IDENTIFICATION_ASSOCIATION),
972                                 .access = VehiclePropertyAccess::READ_WRITE,
973                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
974                         },
975         },
976         {
977                 .config =
978                         {
979                                 .prop = toInt(VehicleProperty::POWER_POLICY_REQ),
980                                 .access = VehiclePropertyAccess::READ,
981                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
982                         },
983         },
984         {
985                 .config =
986                         {
987                                 .prop = toInt(VehicleProperty::POWER_POLICY_GROUP_REQ),
988                                 .access = VehiclePropertyAccess::READ,
989                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
990                         },
991         },
992         {
993                 .config =
994                         {
995                                 .prop = toInt(VehicleProperty::CURRENT_POWER_POLICY),
996                                 .access = VehiclePropertyAccess::READ_WRITE,
997                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
998                         },
999         },
1000         {
1001                 .config =
1002                         {
1003                                 .prop = toInt(VehicleProperty::EPOCH_TIME),
1004                                 .access = VehiclePropertyAccess::WRITE,
1005                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1006                         },
1007         },
1008         {
1009                 .config =
1010                         {
1011                                 .prop = toInt(VehicleProperty::WATCHDOG_ALIVE),
1012                                 .access = VehiclePropertyAccess::WRITE,
1013                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1014                         },
1015         },
1016         {
1017                 .config =
1018                         {
1019                                 .prop = toInt(VehicleProperty::WATCHDOG_TERMINATED_PROCESS),
1020                                 .access = VehiclePropertyAccess::WRITE,
1021                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1022                         },
1023         },
1024         {
1025                 .config =
1026                         {
1027                                 .prop = toInt(VehicleProperty::VHAL_HEARTBEAT),
1028                                 .access = VehiclePropertyAccess::READ,
1029                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1030                         },
1031         },
1032         {
1033                 .config =
1034                         {
1035                                 .prop = toInt(VehicleProperty::CLUSTER_SWITCH_UI),
1036                                 .access = VehiclePropertyAccess::READ,
1037                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1038                         },
1039                 .initialValue = {.int32Values = {0 /* ClusterHome */}},
1040         },
1041         {
1042                 .config =
1043                         {
1044                                 .prop = toInt(VehicleProperty::CLUSTER_DISPLAY_STATE),
1045                                 .access = VehiclePropertyAccess::READ,
1046                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1047                         },
1048                 .initialValue = {.int32Values = {0 /* Off */, -1, -1, -1, -1 /* Bounds */, -1, -1,
1049                                                  -1, -1 /* Insets */}},
1050         },
1051         {
1052                 .config =
1053                         {
1054                                 .prop = toInt(VehicleProperty::CLUSTER_REPORT_STATE),
1055                                 .access = VehiclePropertyAccess::WRITE,
1056                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1057                                 .configArray = {0, 0, 0, 11, 0, 0, 0, 0, 16},
1058                         },
1059         },
1060         {
1061                 .config =
1062                         {
1063                                 .prop = toInt(VehicleProperty::CLUSTER_REQUEST_DISPLAY),
1064                                 .access = VehiclePropertyAccess::WRITE,
1065                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1066                         },
1067         },
1068         {
1069                 .config =
1070                         {
1071                                 .prop = toInt(VehicleProperty::CLUSTER_NAVIGATION_STATE),
1072                                 .access = VehiclePropertyAccess::WRITE,
1073                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1074                         },
1075         },
1076         {
1077                 .config =
1078                         {
1079                                 .prop = PLACEHOLDER_PROPERTY_INT,
1080                                 .access = VehiclePropertyAccess::READ_WRITE,
1081                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1082                         },
1083                 .initialValue = {.int32Values = {0}},
1084         },
1085         {
1086                 .config =
1087                         {
1088                                 .prop = PLACEHOLDER_PROPERTY_FLOAT,
1089                                 .access = VehiclePropertyAccess::READ_WRITE,
1090                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1091                         },
1092                 .initialValue = {.floatValues = {0.0f}},
1093         },
1094         {
1095                 .config =
1096                         {
1097                                 .prop = PLACEHOLDER_PROPERTY_BOOLEAN,
1098                                 .access = VehiclePropertyAccess::READ_WRITE,
1099                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1100                         },
1101                 .initialValue = {.int32Values = {0 /* false */}},
1102         },
1103         {
1104                 .config =
1105                         {
1106                                 .prop = PLACEHOLDER_PROPERTY_STRING,
1107                                 .access = VehiclePropertyAccess::READ_WRITE,
1108                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1109                         },
1110                 .initialValue = {.stringValue = {"Test"}},
1111         },
1112         // This property is later defined in the AIDL VHAL interface. However, HIDL VHAL might
1113         // require support for this property to meet EU regulation.
1114         {
1115                 .config =
1116                         {
1117                                 // GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT
1118                                 .prop = 0x11400F47,
1119                                 .access = VehiclePropertyAccess::READ,
1120                                 .changeMode = VehiclePropertyChangeMode::STATIC,
1121                         },
1122                 // GsrComplianceRequirementType::GSR_COMPLIANCE_REQUIRED_V1
1123                 .initialValue = {.int32Values = {1}},
1124         },
1125 #ifdef ENABLE_VENDOR_CLUSTER_PROPERTY_FOR_TESTING
1126         // Vendor propetry for E2E ClusterHomeService testing.
1127         {
1128                 .config =
1129                         {
1130                                 .prop = VENDOR_CLUSTER_SWITCH_UI,
1131                                 .access = VehiclePropertyAccess::WRITE,
1132                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1133                         },
1134         },
1135         {
1136                 .config =
1137                         {
1138                                 .prop = VENDOR_CLUSTER_DISPLAY_STATE,
1139                                 .access = VehiclePropertyAccess::WRITE,
1140                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1141                         },
1142         },
1143         {
1144                 .config =
1145                         {
1146                                 .prop = VENDOR_CLUSTER_REPORT_STATE,
1147                                 .access = VehiclePropertyAccess::READ,
1148                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1149                                 .configArray = {0, 0, 0, 11, 0, 0, 0, 0, 16},
1150                         },
1151                 .initialValue = {.int32Values = {0 /* Off */, -1, -1, -1, -1 /* Bounds */, -1, -1,
1152                                                  -1, -1 /* Insets */, 0 /* ClusterHome */,
1153                                                  -1 /* ClusterNone */}},
1154         },
1155         {
1156                 .config =
1157                         {
1158                                 .prop = VENDOR_CLUSTER_REQUEST_DISPLAY,
1159                                 .access = VehiclePropertyAccess::READ,
1160                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1161                         },
1162                 .initialValue = {.int32Values = {0 /* ClusterHome */}},
1163         },
1164         {
1165                 .config =
1166                         {
1167                                 .prop = VENDOR_CLUSTER_NAVIGATION_STATE,
1168                                 .access = VehiclePropertyAccess::READ,
1169                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1170                         },
1171         },
1172 #endif  // ENABLE_VENDOR_CLUSTER_PROPERTY_FOR_TESTING
1173 #ifdef ENABLE_GET_PROP_CONFIGS_BY_MULTIPLE_REQUESTS
1174         {
1175                 .config =
1176                         {
1177                                 // VHAL_SUPPORTED_PROPERTY_IDS
1178                                 .prop = 289476424,
1179                                 .access = VehiclePropertyAccess::READ,
1180                                 .changeMode = VehiclePropertyChangeMode::STATIC,
1181                                 // Fetch 100 configs in one request. This number is just arbitrarily
1182                                 // chosen here. But some HAL impl with bigger config data may need a
1183                                 // smaller number.
1184                                 .configArray = {100},
1185                         },
1186                 // All supported property IDs. This list is checked by
1187                 // DefaultConfigSupportedPropertyIds_test.
1188                 .initialValue =
1189                         {.int32Values =
1190                                  {291504388, 289472773, 291504390, 289472775, 289407240, 289407241,
1191                                   289472780, 286261505, 286261506, 289407235, 289472779, 291504647,
1192                                   289408517, 356518832, 356516106, 291504644, 291504649, 291504656,
1193                                   291504901, 291504903, 287310600, 291504905, 287310602, 287310603,
1194                                   291504908, 291504904, 392168201, 392168202, 289408514, 289408001,
1195                                   287310850, 287310851, 287310853, 289475088, 289475104, 289475120,
1196                                   354419984, 320865540, 320865556, 354419975, 354419976, 354419986,
1197                                   354419973, 354419974, 354419978, 354419977, 356517120, 356517121,
1198                                   356582673, 356517139, 289408269, 356517131, 358614275, 291570965,
1199                                   291505923, 289408270, 289408512, 287310855, 289408000, 289408008,
1200                                   289408009, 289407747, 291504900, 568332561, 371198722, 373295872,
1201                                   320867268, 322964416, 290521862, 287310858, 287310859, 289475072,
1202                                   289475073, 289409539, 299896064, 299896065, 299896066, 299896067,
1203                                   289410560, 289410561, 289410562, 289410563, 289410576, 289410577,
1204                                   289410578, 289410579, 289476368, 299895808, 639631617, 627048706,
1205                                   591397123, 554696964, 289410873, 289410874, 287313669, 299896583,
1206                                   299896584, 299896585, 299896586, 299896587, 286265121, 286265122,
1207                                   286265123, 290457094, 290459441, 299896626, 290459443, 289410868,
1208                                   289476405, 299896630, 289410871, 292556600, 557853201, 559950353,
1209                                   555756049, 554707473, 289410887, 557846324, 557911861, 568332086,
1210                                   557846327, 560992056, 289476424}},
1211         },
1212 #endif  // ENABLE_GET_PROP_CONFIGS_BY_MULTIPLE_REQUESTS
1213 };
1214 
1215 }  // impl
1216 
1217 }  // namespace V2_0
1218 }  // namespace vehicle
1219 }  // namespace automotive
1220 }  // namespace hardware
1221 }  // namespace android
1222 
1223 #endif // android_hardware_automotive_vehicle_V2_0_impl_DefaultConfig_H_
1224