• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2021 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_aidl_impl_default_config_include_DefaultConfig_H_
18 #define android_hardware_automotive_vehicle_aidl_impl_default_config_include_DefaultConfig_H_
19 
20 #include <PropertyUtils.h>
21 #include <TestPropertyUtils.h>
22 #include <VehicleHalTypes.h>
23 
24 #include <map>
25 #include <vector>
26 
27 namespace android {
28 namespace hardware {
29 namespace automotive {
30 namespace vehicle {
31 
32 // Types used in configs, not to be exposed as public API.
33 namespace defaultconfig_impl {
34 
35 using ::aidl::android::hardware::automotive::vehicle::EvConnectorType;
36 using ::aidl::android::hardware::automotive::vehicle::EvsServiceState;
37 using ::aidl::android::hardware::automotive::vehicle::EvsServiceType;
38 using ::aidl::android::hardware::automotive::vehicle::FuelType;
39 using ::aidl::android::hardware::automotive::vehicle::RawPropValues;
40 using ::aidl::android::hardware::automotive::vehicle::VehicleApPowerStateReport;
41 using ::aidl::android::hardware::automotive::vehicle::VehicleApPowerStateReq;
42 using ::aidl::android::hardware::automotive::vehicle::VehicleAreaConfig;
43 using ::aidl::android::hardware::automotive::vehicle::VehicleAreaMirror;
44 using ::aidl::android::hardware::automotive::vehicle::VehicleAreaWindow;
45 using ::aidl::android::hardware::automotive::vehicle::VehicleGear;
46 using ::aidl::android::hardware::automotive::vehicle::VehicleHvacFanDirection;
47 using ::aidl::android::hardware::automotive::vehicle::VehicleIgnitionState;
48 using ::aidl::android::hardware::automotive::vehicle::VehicleOilLevel;
49 using ::aidl::android::hardware::automotive::vehicle::VehiclePropConfig;
50 using ::aidl::android::hardware::automotive::vehicle::VehicleProperty;
51 using ::aidl::android::hardware::automotive::vehicle::VehiclePropertyAccess;
52 using ::aidl::android::hardware::automotive::vehicle::VehiclePropertyChangeMode;
53 using ::aidl::android::hardware::automotive::vehicle::VehicleSeatOccupancyState;
54 using ::aidl::android::hardware::automotive::vehicle::VehicleTurnSignal;
55 using ::aidl::android::hardware::automotive::vehicle::VehicleUnit;
56 using ::aidl::android::hardware::automotive::vehicle::VehicleVendorPermission;
57 
58 struct ConfigDeclaration {
59     VehiclePropConfig config;
60 
61     // This value will be used as an initial value for the property. If this field is specified for
62     // property that supports multiple areas then it will be used for all areas unless particular
63     // area is overridden in initialAreaValue field.
64     RawPropValues initialValue;
65     // Use initialAreaValues if it is necessary to specify different values per each area.
66     std::map<int32_t, RawPropValues> initialAreaValues;
67 };
68 
69 const std::vector<ConfigDeclaration> kVehicleProperties = {
70         {.config =
71                  {
72                          .prop = toInt(VehicleProperty::INFO_FUEL_CAPACITY),
73                          .access = VehiclePropertyAccess::READ,
74                          .changeMode = VehiclePropertyChangeMode::STATIC,
75                  },
76          .initialValue = {.floatValues = {15000.0f}}},
77 
78         {.config =
79                  {
80                          .prop = toInt(VehicleProperty::INFO_FUEL_TYPE),
81                          .access = VehiclePropertyAccess::READ,
82                          .changeMode = VehiclePropertyChangeMode::STATIC,
83                  },
84          .initialValue = {.int32Values = {toInt(FuelType::FUEL_TYPE_UNLEADED)}}},
85 
86         {.config =
87                  {
88                          .prop = toInt(VehicleProperty::INFO_EV_BATTERY_CAPACITY),
89                          .access = VehiclePropertyAccess::READ,
90                          .changeMode = VehiclePropertyChangeMode::STATIC,
91                  },
92          .initialValue = {.floatValues = {150000.0f}}},
93 
94         {.config =
95                  {
96                          .prop = toInt(VehicleProperty::INFO_EV_CONNECTOR_TYPE),
97                          .access = VehiclePropertyAccess::READ,
98                          .changeMode = VehiclePropertyChangeMode::STATIC,
99                  },
100          .initialValue = {.int32Values = {toInt(EvConnectorType::IEC_TYPE_1_AC)}}},
101 
102         {.config =
103                  {
104                          .prop = toInt(VehicleProperty::INFO_FUEL_DOOR_LOCATION),
105                          .access = VehiclePropertyAccess::READ,
106                          .changeMode = VehiclePropertyChangeMode::STATIC,
107                  },
108          .initialValue = {.int32Values = {FUEL_DOOR_REAR_LEFT}}},
109 
110         {.config =
111                  {
112                          .prop = toInt(VehicleProperty::INFO_EV_PORT_LOCATION),
113                          .access = VehiclePropertyAccess::READ,
114                          .changeMode = VehiclePropertyChangeMode::STATIC,
115                  },
116          .initialValue = {.int32Values = {CHARGE_PORT_FRONT_LEFT}}},
117 
118         {.config =
119                  {
120                          .prop = toInt(VehicleProperty::INFO_MULTI_EV_PORT_LOCATIONS),
121                          .access = VehiclePropertyAccess::READ,
122                          .changeMode = VehiclePropertyChangeMode::STATIC,
123                  },
124          .initialValue = {.int32Values = {CHARGE_PORT_FRONT_LEFT, CHARGE_PORT_REAR_LEFT}}},
125 
126         {.config =
127                  {
128                          .prop = toInt(VehicleProperty::INFO_VIN),
129                          .access = VehiclePropertyAccess::READ,
130                          .changeMode = VehiclePropertyChangeMode::STATIC,
131                  },
132          .initialValue = {.stringValue = "1GCARVIN123456789"}},
133         {.config =
134                  {
135                          .prop = toInt(VehicleProperty::INFO_MAKE),
136                          .access = VehiclePropertyAccess::READ,
137                          .changeMode = VehiclePropertyChangeMode::STATIC,
138                  },
139          .initialValue = {.stringValue = "Toy Vehicle"}},
140         {.config =
141                  {
142                          .prop = toInt(VehicleProperty::INFO_MODEL),
143                          .access = VehiclePropertyAccess::READ,
144                          .changeMode = VehiclePropertyChangeMode::STATIC,
145                  },
146          .initialValue = {.stringValue = "Speedy Model"}},
147         {.config =
148                  {
149                          .prop = toInt(VehicleProperty::INFO_MODEL_YEAR),
150                          .access = VehiclePropertyAccess::READ,
151                          .changeMode = VehiclePropertyChangeMode::STATIC,
152                  },
153          .initialValue = {.int32Values = {2020}}},
154         {.config =
155                  {
156                          .prop = toInt(VehicleProperty::INFO_EXTERIOR_DIMENSIONS),
157                          .access = VehiclePropertyAccess::READ,
158                          .changeMode = VehiclePropertyChangeMode::STATIC,
159                  },
160          .initialValue = {.int32Values = {1776, 4950, 2008, 2140, 2984, 1665, 1667, 11800}}},
161         {.config =
162                  {
163                          .prop = toInt(VehicleProperty::PERF_VEHICLE_SPEED),
164                          .access = VehiclePropertyAccess::READ,
165                          .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
166                          .minSampleRate = 1.0f,
167                          .maxSampleRate = 10.0f,
168                  },
169          .initialValue = {.floatValues = {0.0f}}},
170         {.config =
171                  {
172                          .prop = toInt(VehicleProperty::PERF_VEHICLE_SPEED_DISPLAY),
173                          .access = VehiclePropertyAccess::READ,
174                          .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
175                          .minSampleRate = 1.0f,
176                          .maxSampleRate = 10.0f,
177                  },
178          .initialValue = {.floatValues = {0.0f}}},
179         {.config =
180                  {
181                          .prop = toInt(VehicleProperty::VEHICLE_SPEED_DISPLAY_UNITS),
182                          .access = VehiclePropertyAccess::READ_WRITE,
183                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
184                          .configArray = {toInt(VehicleUnit::METER_PER_SEC),
185                                          toInt(VehicleUnit::MILES_PER_HOUR),
186                                          toInt(VehicleUnit::KILOMETERS_PER_HOUR)},
187                  },
188          .initialValue = {.int32Values = {toInt(VehicleUnit::MILES_PER_HOUR)}}},
189 
190         {.config =
191                  {
192                          .prop = toInt(VehicleProperty::EV_BATTERY_DISPLAY_UNITS),
193                          .access = VehiclePropertyAccess::READ_WRITE,
194                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
195                          .configArray = {toInt(VehicleUnit::WATT_HOUR),
196                                          toInt(VehicleUnit::AMPERE_HOURS),
197                                          toInt(VehicleUnit::KILOWATT_HOUR)},
198                  },
199          .initialValue = {.int32Values = {toInt(VehicleUnit::KILOWATT_HOUR)}}},
200 
201         {.config = {.prop = toInt(VehicleProperty::SEAT_MEMORY_SELECT),
202                     .access = VehiclePropertyAccess::WRITE,
203                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
204                     .areaConfigs = {VehicleAreaConfig{.areaId = SEAT_1_LEFT,
205                                                       .minInt32Value = 0,
206                                                       .maxInt32Value = 3},
207                                     VehicleAreaConfig{.areaId = SEAT_1_RIGHT,
208                                                       .minInt32Value = 0,
209                                                       .maxInt32Value = 3},
210                                     VehicleAreaConfig{.areaId = SEAT_2_LEFT,
211                                                       .minInt32Value = 0,
212                                                       .maxInt32Value = 3},
213                                     VehicleAreaConfig{.areaId = SEAT_2_RIGHT,
214                                                       .minInt32Value = 0,
215                                                       .maxInt32Value = 3}}},
216          .initialValue = {.int32Values = {1}}},
217 
218         {.config = {.prop = toInt(VehicleProperty::SEAT_MEMORY_SET),
219                     .access = VehiclePropertyAccess::WRITE,
220                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
221                     .areaConfigs = {VehicleAreaConfig{.areaId = SEAT_1_LEFT,
222                                                       .minInt32Value = 0,
223                                                       .maxInt32Value = 3},
224                                     VehicleAreaConfig{.areaId = SEAT_1_RIGHT,
225                                                       .minInt32Value = 0,
226                                                       .maxInt32Value = 3},
227                                     VehicleAreaConfig{.areaId = SEAT_2_LEFT,
228                                                       .minInt32Value = 0,
229                                                       .maxInt32Value = 3},
230                                     VehicleAreaConfig{.areaId = SEAT_2_RIGHT,
231                                                       .minInt32Value = 0,
232                                                       .maxInt32Value = 3}}},
233          .initialValue = {.int32Values = {1}}},
234 
235         {.config = {.prop = toInt(VehicleProperty::SEAT_BELT_BUCKLED),
236                     .access = VehiclePropertyAccess::READ_WRITE,
237                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
238                     .areaConfigs = {VehicleAreaConfig{.areaId = SEAT_1_LEFT},
239                                     VehicleAreaConfig{.areaId = SEAT_1_RIGHT},
240                                     VehicleAreaConfig{.areaId = SEAT_2_LEFT},
241                                     VehicleAreaConfig{.areaId = SEAT_2_RIGHT},
242                                     VehicleAreaConfig{.areaId = SEAT_2_CENTER}}},
243          .initialAreaValues = {{SEAT_1_LEFT, {.int32Values = {0}}},
244                                {SEAT_1_RIGHT, {.int32Values = {0}}},
245                                {SEAT_2_LEFT, {.int32Values = {0}}},
246                                {SEAT_2_RIGHT, {.int32Values = {0}}},
247                                {SEAT_2_CENTER, {.int32Values = {0}}}}},
248 
249         {.config = {.prop = toInt(VehicleProperty::SEAT_BELT_HEIGHT_POS),
250                     .access = VehiclePropertyAccess::READ_WRITE,
251                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
252                     .areaConfigs = {VehicleAreaConfig{.areaId = SEAT_1_LEFT,
253                                                       .minInt32Value = 0,
254                                                       .maxInt32Value = 10},
255                                     VehicleAreaConfig{.areaId = SEAT_1_RIGHT,
256                                                       .minInt32Value = 0,
257                                                       .maxInt32Value = 10},
258                                     VehicleAreaConfig{.areaId = SEAT_2_LEFT,
259                                                       .minInt32Value = 0,
260                                                       .maxInt32Value = 10},
261                                     VehicleAreaConfig{.areaId = SEAT_2_RIGHT,
262                                                       .minInt32Value = 0,
263                                                       .maxInt32Value = 10},
264                                     VehicleAreaConfig{.areaId = SEAT_2_CENTER,
265                                                       .minInt32Value = 0,
266                                                       .maxInt32Value = 10}}},
267          .initialAreaValues = {{SEAT_1_LEFT, {.int32Values = {10}}},
268                                {SEAT_1_RIGHT, {.int32Values = {10}}},
269                                {SEAT_2_LEFT, {.int32Values = {10}}},
270                                {SEAT_2_RIGHT, {.int32Values = {10}}},
271                                {SEAT_2_CENTER, {.int32Values = {10}}}}},
272 
273         {.config = {.prop = toInt(VehicleProperty::SEAT_BELT_HEIGHT_MOVE),
274                     .access = VehiclePropertyAccess::READ_WRITE,
275                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
276                     .areaConfigs = {VehicleAreaConfig{.areaId = SEAT_1_LEFT,
277                                                       .minInt32Value = -1,
278                                                       .maxInt32Value = 1},
279                                     VehicleAreaConfig{.areaId = SEAT_1_RIGHT,
280                                                       .minInt32Value = -1,
281                                                       .maxInt32Value = 1},
282                                     VehicleAreaConfig{.areaId = SEAT_2_LEFT,
283                                                       .minInt32Value = -1,
284                                                       .maxInt32Value = 1},
285                                     VehicleAreaConfig{.areaId = SEAT_2_RIGHT,
286                                                       .minInt32Value = -1,
287                                                       .maxInt32Value = 1},
288                                     VehicleAreaConfig{.areaId = SEAT_2_CENTER,
289                                                       .minInt32Value = -1,
290                                                       .maxInt32Value = 1}}},
291          .initialAreaValues = {{SEAT_1_LEFT, {.int32Values = {0}}},
292                                {SEAT_1_RIGHT, {.int32Values = {0}}},
293                                {SEAT_2_LEFT, {.int32Values = {0}}},
294                                {SEAT_2_RIGHT, {.int32Values = {0}}},
295                                {SEAT_2_CENTER, {.int32Values = {0}}}}},
296 
297         {.config = {.prop = toInt(VehicleProperty::SEAT_FORE_AFT_POS),
298                     .access = VehiclePropertyAccess::READ_WRITE,
299                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
300                     .areaConfigs = {VehicleAreaConfig{.areaId = SEAT_1_LEFT,
301                                                       .minInt32Value = -10,
302                                                       .maxInt32Value = 10},
303                                     VehicleAreaConfig{.areaId = SEAT_1_RIGHT,
304                                                       .minInt32Value = -10,
305                                                       .maxInt32Value = 10},
306                                     VehicleAreaConfig{.areaId = SEAT_2_LEFT,
307                                                       .minInt32Value = -10,
308                                                       .maxInt32Value = 10},
309                                     VehicleAreaConfig{.areaId = SEAT_2_RIGHT,
310                                                       .minInt32Value = -10,
311                                                       .maxInt32Value = 10},
312                                     VehicleAreaConfig{.areaId = SEAT_2_CENTER,
313                                                       .minInt32Value = -10,
314                                                       .maxInt32Value = 10}}},
315          .initialAreaValues = {{SEAT_1_LEFT, {.int32Values = {0}}},
316                                {SEAT_1_RIGHT, {.int32Values = {0}}},
317                                {SEAT_2_LEFT, {.int32Values = {0}}},
318                                {SEAT_2_RIGHT, {.int32Values = {0}}},
319                                {SEAT_2_CENTER, {.int32Values = {0}}}}},
320 
321         {.config = {.prop = toInt(VehicleProperty::SEAT_FORE_AFT_MOVE),
322                     .access = VehiclePropertyAccess::READ_WRITE,
323                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
324                     .areaConfigs = {VehicleAreaConfig{.areaId = SEAT_1_LEFT,
325                                                       .minInt32Value = -1,
326                                                       .maxInt32Value = 1},
327                                     VehicleAreaConfig{.areaId = SEAT_1_RIGHT,
328                                                       .minInt32Value = -1,
329                                                       .maxInt32Value = 1},
330                                     VehicleAreaConfig{.areaId = SEAT_2_LEFT,
331                                                       .minInt32Value = -1,
332                                                       .maxInt32Value = 1},
333                                     VehicleAreaConfig{.areaId = SEAT_2_RIGHT,
334                                                       .minInt32Value = -1,
335                                                       .maxInt32Value = 1},
336                                     VehicleAreaConfig{.areaId = SEAT_2_CENTER,
337                                                       .minInt32Value = -1,
338                                                       .maxInt32Value = 1}}},
339          .initialAreaValues = {{SEAT_1_LEFT, {.int32Values = {0}}},
340                                {SEAT_1_RIGHT, {.int32Values = {0}}},
341                                {SEAT_2_LEFT, {.int32Values = {0}}},
342                                {SEAT_2_RIGHT, {.int32Values = {0}}},
343                                {SEAT_2_CENTER, {.int32Values = {0}}}}},
344 
345         {.config = {.prop = toInt(VehicleProperty::SEAT_BACKREST_ANGLE_1_POS),
346                     .access = VehiclePropertyAccess::READ_WRITE,
347                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
348                     .areaConfigs = {VehicleAreaConfig{.areaId = SEAT_1_LEFT,
349                                                       .minInt32Value = -10,
350                                                       .maxInt32Value = 10},
351                                     VehicleAreaConfig{.areaId = SEAT_1_RIGHT,
352                                                       .minInt32Value = -10,
353                                                       .maxInt32Value = 10},
354                                     VehicleAreaConfig{.areaId = SEAT_2_LEFT,
355                                                       .minInt32Value = -10,
356                                                       .maxInt32Value = 10},
357                                     VehicleAreaConfig{.areaId = SEAT_2_RIGHT,
358                                                       .minInt32Value = -10,
359                                                       .maxInt32Value = 10},
360                                     VehicleAreaConfig{.areaId = SEAT_2_CENTER,
361                                                       .minInt32Value = -10,
362                                                       .maxInt32Value = 10}}},
363          .initialAreaValues = {{SEAT_1_LEFT, {.int32Values = {0}}},
364                                {SEAT_1_RIGHT, {.int32Values = {0}}},
365                                {SEAT_2_LEFT, {.int32Values = {0}}},
366                                {SEAT_2_RIGHT, {.int32Values = {0}}},
367                                {SEAT_2_CENTER, {.int32Values = {0}}}}},
368 
369         {.config = {.prop = toInt(VehicleProperty::SEAT_BACKREST_ANGLE_1_MOVE),
370                     .access = VehiclePropertyAccess::READ_WRITE,
371                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
372                     .areaConfigs = {VehicleAreaConfig{.areaId = SEAT_1_LEFT,
373                                                       .minInt32Value = -1,
374                                                       .maxInt32Value = 1},
375                                     VehicleAreaConfig{.areaId = SEAT_1_RIGHT,
376                                                       .minInt32Value = -1,
377                                                       .maxInt32Value = 1},
378                                     VehicleAreaConfig{.areaId = SEAT_2_LEFT,
379                                                       .minInt32Value = -1,
380                                                       .maxInt32Value = 1},
381                                     VehicleAreaConfig{.areaId = SEAT_2_RIGHT,
382                                                       .minInt32Value = -1,
383                                                       .maxInt32Value = 1},
384                                     VehicleAreaConfig{.areaId = SEAT_2_CENTER,
385                                                       .minInt32Value = -1,
386                                                       .maxInt32Value = 1}}},
387          .initialAreaValues = {{SEAT_1_LEFT, {.int32Values = {0}}},
388                                {SEAT_1_RIGHT, {.int32Values = {0}}},
389                                {SEAT_2_LEFT, {.int32Values = {0}}},
390                                {SEAT_2_RIGHT, {.int32Values = {0}}},
391                                {SEAT_2_CENTER, {.int32Values = {0}}}}},
392 
393         {.config = {.prop = toInt(VehicleProperty::SEAT_BACKREST_ANGLE_2_POS),
394                     .access = VehiclePropertyAccess::READ_WRITE,
395                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
396                     .areaConfigs = {VehicleAreaConfig{.areaId = SEAT_1_LEFT,
397                                                       .minInt32Value = -10,
398                                                       .maxInt32Value = 10},
399                                     VehicleAreaConfig{.areaId = SEAT_1_RIGHT,
400                                                       .minInt32Value = -10,
401                                                       .maxInt32Value = 10},
402                                     VehicleAreaConfig{.areaId = SEAT_2_LEFT,
403                                                       .minInt32Value = -10,
404                                                       .maxInt32Value = 10},
405                                     VehicleAreaConfig{.areaId = SEAT_2_RIGHT,
406                                                       .minInt32Value = -10,
407                                                       .maxInt32Value = 10},
408                                     VehicleAreaConfig{.areaId = SEAT_2_CENTER,
409                                                       .minInt32Value = -10,
410                                                       .maxInt32Value = 10}}},
411          .initialAreaValues = {{SEAT_1_LEFT, {.int32Values = {0}}},
412                                {SEAT_1_RIGHT, {.int32Values = {0}}},
413                                {SEAT_2_LEFT, {.int32Values = {0}}},
414                                {SEAT_2_RIGHT, {.int32Values = {0}}},
415                                {SEAT_2_CENTER, {.int32Values = {0}}}}},
416 
417         {.config = {.prop = toInt(VehicleProperty::SEAT_BACKREST_ANGLE_2_MOVE),
418                     .access = VehiclePropertyAccess::READ_WRITE,
419                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
420                     .areaConfigs = {VehicleAreaConfig{.areaId = SEAT_1_LEFT,
421                                                       .minInt32Value = -1,
422                                                       .maxInt32Value = 1},
423                                     VehicleAreaConfig{.areaId = SEAT_1_RIGHT,
424                                                       .minInt32Value = -1,
425                                                       .maxInt32Value = 1},
426                                     VehicleAreaConfig{.areaId = SEAT_2_LEFT,
427                                                       .minInt32Value = -1,
428                                                       .maxInt32Value = 1},
429                                     VehicleAreaConfig{.areaId = SEAT_2_RIGHT,
430                                                       .minInt32Value = -1,
431                                                       .maxInt32Value = 1},
432                                     VehicleAreaConfig{.areaId = SEAT_2_CENTER,
433                                                       .minInt32Value = -1,
434                                                       .maxInt32Value = 1}}},
435          .initialAreaValues = {{SEAT_1_LEFT, {.int32Values = {0}}},
436                                {SEAT_1_RIGHT, {.int32Values = {0}}},
437                                {SEAT_2_LEFT, {.int32Values = {0}}},
438                                {SEAT_2_RIGHT, {.int32Values = {0}}},
439                                {SEAT_2_CENTER, {.int32Values = {0}}}}},
440 
441         {.config = {.prop = toInt(VehicleProperty::SEAT_HEIGHT_POS),
442                     .access = VehiclePropertyAccess::READ_WRITE,
443                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
444                     .areaConfigs = {VehicleAreaConfig{.areaId = SEAT_1_LEFT,
445                                                       .minInt32Value = -10,
446                                                       .maxInt32Value = 10},
447                                     VehicleAreaConfig{.areaId = SEAT_1_RIGHT,
448                                                       .minInt32Value = -10,
449                                                       .maxInt32Value = 10},
450                                     VehicleAreaConfig{.areaId = SEAT_2_LEFT,
451                                                       .minInt32Value = -10,
452                                                       .maxInt32Value = 10},
453                                     VehicleAreaConfig{.areaId = SEAT_2_RIGHT,
454                                                       .minInt32Value = -10,
455                                                       .maxInt32Value = 10},
456                                     VehicleAreaConfig{.areaId = SEAT_2_CENTER,
457                                                       .minInt32Value = -10,
458                                                       .maxInt32Value = 10}}},
459          .initialValue = {.int32Values = {0}}},
460 
461         {.config = {.prop = toInt(VehicleProperty::SEAT_HEIGHT_MOVE),
462                     .access = VehiclePropertyAccess::READ_WRITE,
463                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
464                     .areaConfigs = {VehicleAreaConfig{.areaId = SEAT_1_LEFT,
465                                                       .minInt32Value = -1,
466                                                       .maxInt32Value = 1},
467                                     VehicleAreaConfig{.areaId = SEAT_1_RIGHT,
468                                                       .minInt32Value = -1,
469                                                       .maxInt32Value = 1},
470                                     VehicleAreaConfig{.areaId = SEAT_2_LEFT,
471                                                       .minInt32Value = -1,
472                                                       .maxInt32Value = 1},
473                                     VehicleAreaConfig{.areaId = SEAT_2_RIGHT,
474                                                       .minInt32Value = -1,
475                                                       .maxInt32Value = 1},
476                                     VehicleAreaConfig{.areaId = SEAT_2_CENTER,
477                                                       .minInt32Value = -1,
478                                                       .maxInt32Value = 1}}},
479          .initialValue = {.int32Values = {0}}},
480 
481         {.config = {.prop = toInt(VehicleProperty::SEAT_DEPTH_POS),
482                     .access = VehiclePropertyAccess::READ_WRITE,
483                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
484                     .areaConfigs = {VehicleAreaConfig{.areaId = SEAT_1_LEFT,
485                                                       .minInt32Value = -10,
486                                                       .maxInt32Value = 10},
487                                     VehicleAreaConfig{.areaId = SEAT_1_RIGHT,
488                                                       .minInt32Value = -10,
489                                                       .maxInt32Value = 10},
490                                     VehicleAreaConfig{.areaId = SEAT_2_LEFT,
491                                                       .minInt32Value = -10,
492                                                       .maxInt32Value = 10},
493                                     VehicleAreaConfig{.areaId = SEAT_2_RIGHT,
494                                                       .minInt32Value = -10,
495                                                       .maxInt32Value = 10},
496                                     VehicleAreaConfig{.areaId = SEAT_2_CENTER,
497                                                       .minInt32Value = -10,
498                                                       .maxInt32Value = 10}}},
499          .initialValue = {.int32Values = {0}}},
500 
501         {.config = {.prop = toInt(VehicleProperty::SEAT_DEPTH_MOVE),
502                     .access = VehiclePropertyAccess::READ_WRITE,
503                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
504                     .areaConfigs = {VehicleAreaConfig{.areaId = SEAT_1_LEFT,
505                                                       .minInt32Value = -1,
506                                                       .maxInt32Value = 1},
507                                     VehicleAreaConfig{.areaId = SEAT_1_RIGHT,
508                                                       .minInt32Value = -1,
509                                                       .maxInt32Value = 1},
510                                     VehicleAreaConfig{.areaId = SEAT_2_LEFT,
511                                                       .minInt32Value = -1,
512                                                       .maxInt32Value = 1},
513                                     VehicleAreaConfig{.areaId = SEAT_2_RIGHT,
514                                                       .minInt32Value = -1,
515                                                       .maxInt32Value = 1},
516                                     VehicleAreaConfig{.areaId = SEAT_2_CENTER,
517                                                       .minInt32Value = -1,
518                                                       .maxInt32Value = 1}}},
519          .initialValue = {.int32Values = {0}}},
520 
521         {.config = {.prop = toInt(VehicleProperty::SEAT_TILT_POS),
522                     .access = VehiclePropertyAccess::READ_WRITE,
523                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
524                     .areaConfigs = {VehicleAreaConfig{.areaId = SEAT_1_LEFT,
525                                                       .minInt32Value = -10,
526                                                       .maxInt32Value = 10},
527                                     VehicleAreaConfig{.areaId = SEAT_1_RIGHT,
528                                                       .minInt32Value = -10,
529                                                       .maxInt32Value = 10},
530                                     VehicleAreaConfig{.areaId = SEAT_2_LEFT,
531                                                       .minInt32Value = -10,
532                                                       .maxInt32Value = 10},
533                                     VehicleAreaConfig{.areaId = SEAT_2_RIGHT,
534                                                       .minInt32Value = -10,
535                                                       .maxInt32Value = 10},
536                                     VehicleAreaConfig{.areaId = SEAT_2_CENTER,
537                                                       .minInt32Value = -10,
538                                                       .maxInt32Value = 10}}},
539          .initialValue = {.int32Values = {0}}},
540 
541         {.config = {.prop = toInt(VehicleProperty::SEAT_TILT_MOVE),
542                     .access = VehiclePropertyAccess::READ_WRITE,
543                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
544                     .areaConfigs = {VehicleAreaConfig{.areaId = SEAT_1_LEFT,
545                                                       .minInt32Value = -1,
546                                                       .maxInt32Value = 1},
547                                     VehicleAreaConfig{.areaId = SEAT_1_RIGHT,
548                                                       .minInt32Value = -1,
549                                                       .maxInt32Value = 1},
550                                     VehicleAreaConfig{.areaId = SEAT_2_LEFT,
551                                                       .minInt32Value = -1,
552                                                       .maxInt32Value = 1},
553                                     VehicleAreaConfig{.areaId = SEAT_2_RIGHT,
554                                                       .minInt32Value = -1,
555                                                       .maxInt32Value = 1},
556                                     VehicleAreaConfig{.areaId = SEAT_2_CENTER,
557                                                       .minInt32Value = -1,
558                                                       .maxInt32Value = 1}}},
559          .initialValue = {.int32Values = {0}}},
560 
561         {.config = {.prop = toInt(VehicleProperty::SEAT_LUMBAR_FORE_AFT_POS),
562                     .access = VehiclePropertyAccess::READ_WRITE,
563                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
564                     .areaConfigs = {VehicleAreaConfig{.areaId = SEAT_1_LEFT,
565                                                       .minInt32Value = -10,
566                                                       .maxInt32Value = 10},
567                                     VehicleAreaConfig{.areaId = SEAT_1_RIGHT,
568                                                       .minInt32Value = -10,
569                                                       .maxInt32Value = 10},
570                                     VehicleAreaConfig{.areaId = SEAT_2_LEFT,
571                                                       .minInt32Value = -10,
572                                                       .maxInt32Value = 10},
573                                     VehicleAreaConfig{.areaId = SEAT_2_RIGHT,
574                                                       .minInt32Value = -10,
575                                                       .maxInt32Value = 10},
576                                     VehicleAreaConfig{.areaId = SEAT_2_CENTER,
577                                                       .minInt32Value = -10,
578                                                       .maxInt32Value = 10}}},
579          .initialValue = {.int32Values = {0}}},
580 
581         {.config = {.prop = toInt(VehicleProperty::SEAT_LUMBAR_FORE_AFT_MOVE),
582                     .access = VehiclePropertyAccess::READ_WRITE,
583                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
584                     .areaConfigs = {VehicleAreaConfig{.areaId = SEAT_1_LEFT,
585                                                       .minInt32Value = -1,
586                                                       .maxInt32Value = 1},
587                                     VehicleAreaConfig{.areaId = SEAT_1_RIGHT,
588                                                       .minInt32Value = -1,
589                                                       .maxInt32Value = 1},
590                                     VehicleAreaConfig{.areaId = SEAT_2_LEFT,
591                                                       .minInt32Value = -1,
592                                                       .maxInt32Value = 1},
593                                     VehicleAreaConfig{.areaId = SEAT_2_RIGHT,
594                                                       .minInt32Value = -1,
595                                                       .maxInt32Value = 1},
596                                     VehicleAreaConfig{.areaId = SEAT_2_CENTER,
597                                                       .minInt32Value = -1,
598                                                       .maxInt32Value = 1}}},
599          .initialValue = {.int32Values = {0}}},
600 
601         {.config = {.prop = toInt(VehicleProperty::SEAT_LUMBAR_SIDE_SUPPORT_POS),
602                     .access = VehiclePropertyAccess::READ_WRITE,
603                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
604                     .areaConfigs = {VehicleAreaConfig{.areaId = SEAT_1_LEFT,
605                                                       .minInt32Value = 0,
606                                                       .maxInt32Value = 10},
607                                     VehicleAreaConfig{.areaId = SEAT_1_RIGHT,
608                                                       .minInt32Value = 0,
609                                                       .maxInt32Value = 10},
610                                     VehicleAreaConfig{.areaId = SEAT_2_LEFT,
611                                                       .minInt32Value = 0,
612                                                       .maxInt32Value = 10},
613                                     VehicleAreaConfig{.areaId = SEAT_2_RIGHT,
614                                                       .minInt32Value = 0,
615                                                       .maxInt32Value = 10},
616                                     VehicleAreaConfig{.areaId = SEAT_2_CENTER,
617                                                       .minInt32Value = 0,
618                                                       .maxInt32Value = 10}}},
619          .initialValue = {.int32Values = {0}}},
620 
621         {.config = {.prop = toInt(VehicleProperty::SEAT_LUMBAR_SIDE_SUPPORT_MOVE),
622                     .access = VehiclePropertyAccess::READ_WRITE,
623                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
624                     .areaConfigs = {VehicleAreaConfig{.areaId = SEAT_1_LEFT,
625                                                       .minInt32Value = -1,
626                                                       .maxInt32Value = 1},
627                                     VehicleAreaConfig{.areaId = SEAT_1_RIGHT,
628                                                       .minInt32Value = -1,
629                                                       .maxInt32Value = 1},
630                                     VehicleAreaConfig{.areaId = SEAT_2_LEFT,
631                                                       .minInt32Value = -1,
632                                                       .maxInt32Value = 1},
633                                     VehicleAreaConfig{.areaId = SEAT_2_RIGHT,
634                                                       .minInt32Value = -1,
635                                                       .maxInt32Value = 1},
636                                     VehicleAreaConfig{.areaId = SEAT_2_CENTER,
637                                                       .minInt32Value = -1,
638                                                       .maxInt32Value = 1}}},
639          .initialValue = {.int32Values = {0}}},
640 
641         {.config = {.prop = toInt(VehicleProperty::SEAT_HEADREST_HEIGHT_MOVE),
642                     .access = VehiclePropertyAccess::READ_WRITE,
643                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
644                     .areaConfigs = {VehicleAreaConfig{.areaId = SEAT_1_LEFT,
645                                                       .minInt32Value = -1,
646                                                       .maxInt32Value = 1},
647                                     VehicleAreaConfig{.areaId = SEAT_1_RIGHT,
648                                                       .minInt32Value = -1,
649                                                       .maxInt32Value = 1},
650                                     VehicleAreaConfig{.areaId = SEAT_2_LEFT,
651                                                       .minInt32Value = -1,
652                                                       .maxInt32Value = 1},
653                                     VehicleAreaConfig{.areaId = SEAT_2_RIGHT,
654                                                       .minInt32Value = -1,
655                                                       .maxInt32Value = 1},
656                                     VehicleAreaConfig{.areaId = SEAT_2_CENTER,
657                                                       .minInt32Value = -1,
658                                                       .maxInt32Value = 1}}},
659          .initialValue = {.int32Values = {0}}},
660 
661         {.config = {.prop = toInt(VehicleProperty::SEAT_HEADREST_ANGLE_POS),
662                     .access = VehiclePropertyAccess::READ_WRITE,
663                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
664                     .areaConfigs = {VehicleAreaConfig{.areaId = SEAT_1_LEFT,
665                                                       .minInt32Value = 0,
666                                                       .maxInt32Value = 10},
667                                     VehicleAreaConfig{.areaId = SEAT_1_RIGHT,
668                                                       .minInt32Value = 0,
669                                                       .maxInt32Value = 10},
670                                     VehicleAreaConfig{.areaId = SEAT_2_LEFT,
671                                                       .minInt32Value = 0,
672                                                       .maxInt32Value = 10},
673                                     VehicleAreaConfig{.areaId = SEAT_2_RIGHT,
674                                                       .minInt32Value = 0,
675                                                       .maxInt32Value = 10},
676                                     VehicleAreaConfig{.areaId = SEAT_2_CENTER,
677                                                       .minInt32Value = 0,
678                                                       .maxInt32Value = 10}}},
679          .initialValue = {.int32Values = {0}}},
680 
681         {.config = {.prop = toInt(VehicleProperty::SEAT_HEADREST_ANGLE_MOVE),
682                     .access = VehiclePropertyAccess::READ_WRITE,
683                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
684                     .areaConfigs = {VehicleAreaConfig{.areaId = SEAT_1_LEFT,
685                                                       .minInt32Value = -1,
686                                                       .maxInt32Value = 1},
687                                     VehicleAreaConfig{.areaId = SEAT_1_RIGHT,
688                                                       .minInt32Value = -1,
689                                                       .maxInt32Value = 1},
690                                     VehicleAreaConfig{.areaId = SEAT_2_LEFT,
691                                                       .minInt32Value = -1,
692                                                       .maxInt32Value = 1},
693                                     VehicleAreaConfig{.areaId = SEAT_2_RIGHT,
694                                                       .minInt32Value = -1,
695                                                       .maxInt32Value = 1},
696                                     VehicleAreaConfig{.areaId = SEAT_2_CENTER,
697                                                       .minInt32Value = -1,
698                                                       .maxInt32Value = 1}}},
699          .initialValue = {.int32Values = {0}}},
700 
701         {.config = {.prop = toInt(VehicleProperty::SEAT_HEADREST_FORE_AFT_POS),
702                     .access = VehiclePropertyAccess::READ_WRITE,
703                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
704                     .areaConfigs = {VehicleAreaConfig{.areaId = SEAT_1_LEFT,
705                                                       .minInt32Value = 0,
706                                                       .maxInt32Value = 10},
707                                     VehicleAreaConfig{.areaId = SEAT_1_RIGHT,
708                                                       .minInt32Value = 0,
709                                                       .maxInt32Value = 10},
710                                     VehicleAreaConfig{.areaId = SEAT_2_LEFT,
711                                                       .minInt32Value = 0,
712                                                       .maxInt32Value = 10},
713                                     VehicleAreaConfig{.areaId = SEAT_2_RIGHT,
714                                                       .minInt32Value = 0,
715                                                       .maxInt32Value = 10},
716                                     VehicleAreaConfig{.areaId = SEAT_2_CENTER,
717                                                       .minInt32Value = 0,
718                                                       .maxInt32Value = 10}}},
719          .initialValue = {.int32Values = {0}}},
720 
721         {.config = {.prop = toInt(VehicleProperty::SEAT_HEADREST_FORE_AFT_MOVE),
722                     .access = VehiclePropertyAccess::READ_WRITE,
723                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
724                     .areaConfigs = {VehicleAreaConfig{.areaId = SEAT_1_LEFT,
725                                                       .minInt32Value = -1,
726                                                       .maxInt32Value = 1},
727                                     VehicleAreaConfig{.areaId = SEAT_1_RIGHT,
728                                                       .minInt32Value = -1,
729                                                       .maxInt32Value = 1},
730                                     VehicleAreaConfig{.areaId = SEAT_2_LEFT,
731                                                       .minInt32Value = -1,
732                                                       .maxInt32Value = 1},
733                                     VehicleAreaConfig{.areaId = SEAT_2_RIGHT,
734                                                       .minInt32Value = -1,
735                                                       .maxInt32Value = 1},
736                                     VehicleAreaConfig{.areaId = SEAT_2_CENTER,
737                                                       .minInt32Value = -1,
738                                                       .maxInt32Value = 1}}},
739          .initialValue = {.int32Values = {0}}},
740 
741         {.config =
742                  {
743                          .prop = toInt(VehicleProperty::SEAT_OCCUPANCY),
744                          .access = VehiclePropertyAccess::READ,
745                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
746                          .areaConfigs = {VehicleAreaConfig{.areaId = (SEAT_1_LEFT)},
747                                          VehicleAreaConfig{.areaId = (SEAT_1_RIGHT)}},
748                  },
749          .initialAreaValues = {{SEAT_1_LEFT,
750                                 {.int32Values = {toInt(VehicleSeatOccupancyState::VACANT)}}},
751                                {SEAT_1_RIGHT,
752                                 {.int32Values = {toInt(VehicleSeatOccupancyState::VACANT)}}}}},
753 
754         {.config =
755                  {
756                          .prop = toInt(VehicleProperty::INFO_DRIVER_SEAT),
757                          .access = VehiclePropertyAccess::READ,
758                          .changeMode = VehiclePropertyChangeMode::STATIC,
759                          // this was a zoned property on an old vhal, but it is meant to be global
760                          .areaConfigs = {VehicleAreaConfig{.areaId = (0)}},
761                  },
762          .initialValue = {.int32Values = {SEAT_1_LEFT}}},
763 
764         {.config =
765                  {
766                          .prop = toInt(VehicleProperty::PERF_ODOMETER),
767                          .access = VehiclePropertyAccess::READ,
768                          .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
769                          .minSampleRate = 1.0f,
770                          .maxSampleRate = 10.0f,
771                  },
772          .initialValue = {.floatValues = {0.0f}}},
773         {.config =
774                  {
775                          .prop = toInt(VehicleProperty::PERF_STEERING_ANGLE),
776                          .access = VehiclePropertyAccess::READ,
777                          .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
778                          .minSampleRate = 1.0f,
779                          .maxSampleRate = 10.0f,
780                  },
781          .initialValue = {.floatValues = {0.0f}}},
782         {.config =
783                  {
784                          .prop = toInt(VehicleProperty::PERF_REAR_STEERING_ANGLE),
785                          .access = VehiclePropertyAccess::READ,
786                          .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
787                          .minSampleRate = 1.0f,
788                          .maxSampleRate = 10.0f,
789                  },
790          .initialValue = {.floatValues = {0.0f}}},
791         {
792                 .config =
793                         {
794                                 .prop = toInt(VehicleProperty::ENGINE_RPM),
795                                 .access = VehiclePropertyAccess::READ,
796                                 .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
797                                 .minSampleRate = 1.0f,
798                                 .maxSampleRate = 10.0f,
799                         },
800                 .initialValue = {.floatValues = {0.0f}},
801         },
802 
803         {.config =
804                  {
805                          .prop = toInt(VehicleProperty::FUEL_LEVEL),
806                          .access = VehiclePropertyAccess::READ,
807                          .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
808                          .minSampleRate = 1.0f,
809                          .maxSampleRate = 100.0f,
810                  },
811          .initialValue = {.floatValues = {15000.0f}}},
812 
813         {.config =
814                  {
815                          .prop = toInt(VehicleProperty::FUEL_DOOR_OPEN),
816                          .access = VehiclePropertyAccess::READ_WRITE,
817                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
818                  },
819          .initialValue = {.int32Values = {0}}},
820 
821         {.config =
822                  {
823                          .prop = toInt(VehicleProperty::EV_BATTERY_LEVEL),
824                          .access = VehiclePropertyAccess::READ,
825                          .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
826                          .minSampleRate = 1.0f,
827                          .maxSampleRate = 100.0f,
828                  },
829          .initialValue = {.floatValues = {150000.0f}}},
830 
831         {.config =
832                  {
833                          .prop = toInt(VehicleProperty::EV_CHARGE_PORT_OPEN),
834                          .access = VehiclePropertyAccess::READ_WRITE,
835                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
836                  },
837          .initialValue = {.int32Values = {0}}},
838 
839         {.config =
840                  {
841                          .prop = toInt(VehicleProperty::EV_CHARGE_PORT_CONNECTED),
842                          .access = VehiclePropertyAccess::READ,
843                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
844                  },
845          .initialValue = {.int32Values = {0}}},
846 
847         {.config =
848                  {
849                          .prop = toInt(VehicleProperty::EV_BATTERY_INSTANTANEOUS_CHARGE_RATE),
850                          .access = VehiclePropertyAccess::READ,
851                          .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
852                          .minSampleRate = 1.0f,
853                          .maxSampleRate = 10.0f,
854                  },
855          .initialValue = {.floatValues = {0.0f}}},
856 
857         {.config =
858                  {
859                          .prop = toInt(VehicleProperty::EV_CHARGE_CURRENT_DRAW_LIMIT),
860                          .access = VehiclePropertyAccess::READ_WRITE,
861                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
862                          .configArray = {/*max current draw allowed by vehicle in amperes=*/20},
863                  },
864          .initialValue = {.floatValues = {(float)12.5}}},
865 
866         {.config =
867                  {
868                          .prop = toInt(VehicleProperty::EV_CHARGE_PERCENT_LIMIT),
869                          .access = VehiclePropertyAccess::READ_WRITE,
870                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
871                          .configArray = {20, 40, 60, 80, 100},
872                  },
873          .initialValue = {.floatValues = {40}}},
874 
875         {.config =
876                  {
877                          .prop = toInt(VehicleProperty::EV_CHARGE_STATE),
878                          .access = VehiclePropertyAccess::READ,
879                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
880                  },
881          .initialValue = {.int32Values = {2}}},
882 
883         {.config =
884                  {
885                          .prop = toInt(VehicleProperty::EV_CHARGE_SWITCH),
886                          .access = VehiclePropertyAccess::READ_WRITE,
887                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
888                  },
889          .initialValue = {.int32Values = {0 /* false */}}},
890 
891         {.config =
892                  {
893                          .prop = toInt(VehicleProperty::EV_CHARGE_TIME_REMAINING),
894                          .access = VehiclePropertyAccess::READ,
895                          .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
896                          .minSampleRate = 1.0f,
897                          .maxSampleRate = 10.0f,
898                  },
899          .initialValue = {.int32Values = {20}}},
900 
901         {.config =
902                  {
903                          .prop = toInt(VehicleProperty::EV_REGENERATIVE_BRAKING_STATE),
904                          .access = VehiclePropertyAccess::READ,
905                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
906                  },
907          .initialValue = {.int32Values = {2}}},
908 
909         {.config =
910                  {
911                          .prop = toInt(VehicleProperty::TRAILER_PRESENT),
912                          .access = VehiclePropertyAccess::READ,
913                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
914                  },
915          .initialValue = {.int32Values = {2}}},
916 
917         {.config =
918                  {
919                          .prop = toInt(VehicleProperty::VEHICLE_CURB_WEIGHT),
920                          .access = VehiclePropertyAccess::READ,
921                          .changeMode = VehiclePropertyChangeMode::STATIC,
922                          .configArray = {/*gross weight kg=*/2948},
923                  },
924          .initialValue = {.int32Values = {2211 /*kg*/}}},
925 
926         {.config =
927                  {
928                          .prop = toInt(VehicleProperty::RANGE_REMAINING),
929                          .access = VehiclePropertyAccess::READ_WRITE,
930                          .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
931                          .minSampleRate = 1.0f,
932                          .maxSampleRate = 2.0f,
933                  },
934          .initialValue = {.floatValues = {50000.0f}}},  // units in meters
935 
936         {.config =
937                  {
938                          .prop = toInt(VehicleProperty::TIRE_PRESSURE),
939                          .access = VehiclePropertyAccess::READ,
940                          .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
941                          .areaConfigs = {VehicleAreaConfig{
942                                                  .areaId = WHEEL_FRONT_LEFT,
943                                                  .minFloatValue = 193.0f,
944                                                  .maxFloatValue = 300.0f,
945                                          },
946                                          VehicleAreaConfig{
947                                                  .areaId = WHEEL_FRONT_RIGHT,
948                                                  .minFloatValue = 193.0f,
949                                                  .maxFloatValue = 300.0f,
950                                          },
951                                          VehicleAreaConfig{
952                                                  .areaId = WHEEL_REAR_LEFT,
953                                                  .minFloatValue = 193.0f,
954                                                  .maxFloatValue = 300.0f,
955                                          },
956                                          VehicleAreaConfig{
957                                                  .areaId = WHEEL_REAR_RIGHT,
958                                                  .minFloatValue = 193.0f,
959                                                  .maxFloatValue = 300.0f,
960                                          }},
961                          .minSampleRate = 1.0f,
962                          .maxSampleRate = 2.0f,
963                  },
964          .initialValue = {.floatValues = {200.0f}}},  // units in kPa
965 
966         {.config =
967                  {
968                          .prop = toInt(VehicleProperty::CRITICALLY_LOW_TIRE_PRESSURE),
969                          .access = VehiclePropertyAccess::READ,
970                          .changeMode = VehiclePropertyChangeMode::STATIC,
971                          .areaConfigs = {VehicleAreaConfig{.areaId = WHEEL_FRONT_LEFT},
972                                          VehicleAreaConfig{.areaId = WHEEL_FRONT_RIGHT},
973                                          VehicleAreaConfig{.areaId = WHEEL_REAR_RIGHT},
974                                          VehicleAreaConfig{.areaId = WHEEL_REAR_LEFT}},
975                  },
976          .initialAreaValues = {{WHEEL_FRONT_LEFT, {.floatValues = {137.0f}}},
977                                {WHEEL_FRONT_RIGHT, {.floatValues = {137.0f}}},
978                                {WHEEL_REAR_RIGHT, {.floatValues = {137.0f}}},
979                                {WHEEL_REAR_LEFT, {.floatValues = {137.0f}}}}},
980 
981         {.config =
982                  {
983                          .prop = toInt(VehicleProperty::TIRE_PRESSURE_DISPLAY_UNITS),
984                          .access = VehiclePropertyAccess::READ_WRITE,
985                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
986                          .configArray = {toInt(VehicleUnit::KILOPASCAL), toInt(VehicleUnit::PSI),
987                                          toInt(VehicleUnit::BAR)},
988                  },
989          .initialValue = {.int32Values = {toInt(VehicleUnit::PSI)}}},
990 
991         {.config =
992                  {
993                          .prop = toInt(VehicleProperty::CURRENT_GEAR),
994                          .access = VehiclePropertyAccess::READ,
995                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
996                          .configArray = {toInt(VehicleGear::GEAR_PARK),
997                                          toInt(VehicleGear::GEAR_NEUTRAL),
998                                          toInt(VehicleGear::GEAR_REVERSE),
999                                          toInt(VehicleGear::GEAR_1), toInt(VehicleGear::GEAR_2),
1000                                          toInt(VehicleGear::GEAR_3), toInt(VehicleGear::GEAR_4),
1001                                          toInt(VehicleGear::GEAR_5)},
1002                  },
1003          .initialValue = {.int32Values = {toInt(VehicleGear::GEAR_PARK)}}},
1004 
1005         {.config =
1006                  {
1007                          .prop = toInt(VehicleProperty::PARKING_BRAKE_ON),
1008                          .access = VehiclePropertyAccess::READ,
1009                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1010                  },
1011          .initialValue = {.int32Values = {1}}},
1012 
1013         {.config =
1014                  {
1015                          .prop = toInt(VehicleProperty::PARKING_BRAKE_AUTO_APPLY),
1016                          .access = VehiclePropertyAccess::READ,
1017                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1018                  },
1019          .initialValue = {.int32Values = {1}}},
1020 
1021         {.config =
1022                  {
1023                          .prop = toInt(VehicleProperty::FUEL_LEVEL_LOW),
1024                          .access = VehiclePropertyAccess::READ,
1025                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1026                  },
1027          .initialValue = {.int32Values = {0}}},
1028 
1029         {.config =
1030                  {
1031                          .prop = toInt(VehicleProperty::FUEL_VOLUME_DISPLAY_UNITS),
1032                          .access = VehiclePropertyAccess::READ_WRITE,
1033                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1034                          .configArray = {(int)VehicleUnit::LITER, (int)VehicleUnit::US_GALLON},
1035                  },
1036          .initialValue = {.int32Values = {(int)VehicleUnit::US_GALLON}}},
1037 
1038         {.config =
1039                  {
1040                          .prop = toInt(
1041                                  VehicleProperty::FUEL_CONSUMPTION_UNITS_DISTANCE_OVER_VOLUME),
1042                          .access = VehiclePropertyAccess::READ_WRITE,
1043                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1044                  },
1045          .initialValue = {.int32Values = {1}}},
1046 
1047         {.config =
1048                  {
1049                          .prop = toInt(VehicleProperty::HW_KEY_INPUT),
1050                          .access = VehiclePropertyAccess::READ,
1051                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1052                  },
1053          .initialValue = {.int32Values = {0, 0, 0}}},
1054 
1055         {.config =
1056                  {
1057                          .prop = toInt(VehicleProperty::HW_ROTARY_INPUT),
1058                          .access = VehiclePropertyAccess::READ,
1059                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1060                  },
1061          .initialValue = {.int32Values = {0, 0, 0}}},
1062 
1063         {.config =
1064                  {
1065                          .prop = toInt(VehicleProperty::HW_CUSTOM_INPUT),
1066                          .access = VehiclePropertyAccess::READ,
1067                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1068                          .configArray = {0, 0, 0, 3, 0, 0, 0, 0, 0},
1069                  },
1070          .initialValue =
1071                  {
1072                          .int32Values = {0, 0, 0},
1073                  }},
1074 
1075         {.config = {.prop = toInt(VehicleProperty::HVAC_ACTUAL_FAN_SPEED_RPM),
1076                     .access = VehiclePropertyAccess::READ,
1077                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1078                     .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
1079          .initialValue = {.int32Values = {50}}},
1080 
1081         {.config = {.prop = toInt(VehicleProperty::HVAC_POWER_ON),
1082                     .access = VehiclePropertyAccess::READ_WRITE,
1083                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1084                     .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}},
1085                     // TODO(bryaneyler): Ideally, this is generated dynamically from
1086                     // kHvacPowerProperties.
1087                     .configArray = {toInt(VehicleProperty::HVAC_FAN_SPEED),
1088                                     toInt(VehicleProperty::HVAC_FAN_DIRECTION)}},
1089          .initialValue = {.int32Values = {1}}},
1090 
1091         {
1092                 .config = {.prop = toInt(VehicleProperty::HVAC_DEFROSTER),
1093                            .access = VehiclePropertyAccess::READ_WRITE,
1094                            .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1095                            .areaConfigs =
1096                                    {VehicleAreaConfig{
1097                                             .areaId = toInt(VehicleAreaWindow::FRONT_WINDSHIELD)},
1098                                     VehicleAreaConfig{
1099                                             .areaId = toInt(VehicleAreaWindow::REAR_WINDSHIELD)}}},
1100                 .initialValue = {.int32Values = {0}}  // Will be used for all areas.
1101         },
1102         {
1103                 .config = {.prop = toInt(VehicleProperty::HVAC_ELECTRIC_DEFROSTER_ON),
1104                            .access = VehiclePropertyAccess::READ_WRITE,
1105                            .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1106                            .areaConfigs =
1107                                    {VehicleAreaConfig{
1108                                             .areaId = toInt(VehicleAreaWindow::FRONT_WINDSHIELD)},
1109                                     VehicleAreaConfig{
1110                                             .areaId = toInt(VehicleAreaWindow::REAR_WINDSHIELD)}}},
1111                 .initialValue = {.int32Values = {0}}  // Will be used for all areas.
1112         },
1113 
1114         {.config = {.prop = toInt(VehicleProperty::HVAC_MAX_DEFROST_ON),
1115                     .access = VehiclePropertyAccess::READ_WRITE,
1116                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1117                     .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
1118          .initialValue = {.int32Values = {0}}},
1119 
1120         {.config = {.prop = toInt(VehicleProperty::HVAC_RECIRC_ON),
1121                     .access = VehiclePropertyAccess::READ_WRITE,
1122                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1123                     .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
1124          .initialValue = {.int32Values = {1}}},
1125 
1126         {.config = {.prop = toInt(VehicleProperty::HVAC_AUTO_RECIRC_ON),
1127                     .access = VehiclePropertyAccess::READ_WRITE,
1128                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1129                     .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
1130          .initialValue = {.int32Values = {0}}},
1131 
1132         {.config = {.prop = toInt(VehicleProperty::HVAC_AC_ON),
1133                     .access = VehiclePropertyAccess::READ_WRITE,
1134                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1135                     .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
1136          .initialValue = {.int32Values = {1}}},
1137 
1138         {.config = {.prop = toInt(VehicleProperty::HVAC_MAX_AC_ON),
1139                     .access = VehiclePropertyAccess::READ_WRITE,
1140                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1141                     .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
1142          .initialValue = {.int32Values = {0}}},
1143 
1144         {.config = {.prop = toInt(VehicleProperty::HVAC_AUTO_ON),
1145                     .access = VehiclePropertyAccess::READ_WRITE,
1146                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1147                     .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
1148          .initialValue = {.int32Values = {1}}},
1149 
1150         {.config = {.prop = toInt(VehicleProperty::HVAC_DUAL_ON),
1151                     .access = VehiclePropertyAccess::READ_WRITE,
1152                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1153                     .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
1154          .initialValue = {.int32Values = {0}}},
1155 
1156         {.config = {.prop = toInt(VehicleProperty::HVAC_FAN_SPEED),
1157                     .access = VehiclePropertyAccess::READ_WRITE,
1158                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1159                     .areaConfigs = {VehicleAreaConfig{
1160                             .areaId = HVAC_ALL, .minInt32Value = 1, .maxInt32Value = 7}}},
1161          .initialValue = {.int32Values = {3}}},
1162 
1163         {.config = {.prop = toInt(VehicleProperty::HVAC_FAN_DIRECTION),
1164                     .access = VehiclePropertyAccess::READ_WRITE,
1165                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1166                     .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
1167          .initialValue = {.int32Values = {toInt(VehicleHvacFanDirection::FACE)}}},
1168 
1169         {.config = {.prop = toInt(VehicleProperty::HVAC_FAN_DIRECTION_AVAILABLE),
1170                     .access = VehiclePropertyAccess::READ,
1171                     .changeMode = VehiclePropertyChangeMode::STATIC,
1172                     .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
1173          .initialValue = {.int32Values = {FAN_DIRECTION_FACE, FAN_DIRECTION_FLOOR,
1174                                           FAN_DIRECTION_FACE | FAN_DIRECTION_FLOOR,
1175                                           FAN_DIRECTION_DEFROST,
1176                                           FAN_DIRECTION_FACE | FAN_DIRECTION_DEFROST,
1177                                           FAN_DIRECTION_FLOOR | FAN_DIRECTION_DEFROST,
1178                                           FAN_DIRECTION_FLOOR | FAN_DIRECTION_DEFROST |
1179                                                   FAN_DIRECTION_FACE}}},
1180         {.config = {.prop = toInt(VehicleProperty::HVAC_SEAT_VENTILATION),
1181                     .access = VehiclePropertyAccess::READ_WRITE,
1182                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1183                     .areaConfigs = {VehicleAreaConfig{
1184                                             .areaId = SEAT_1_LEFT,
1185                                             .minInt32Value = 0,
1186                                             .maxInt32Value = 3,
1187                                     },
1188                                     VehicleAreaConfig{
1189                                             .areaId = SEAT_1_RIGHT,
1190                                             .minInt32Value = 0,
1191                                             .maxInt32Value = 3,
1192                                     }}},
1193          .initialValue =
1194                  {.int32Values = {0}}},  // 0 is off and +ve values indicate ventilation level.
1195 
1196         {.config = {.prop = toInt(VehicleProperty::HVAC_STEERING_WHEEL_HEAT),
1197                     .access = VehiclePropertyAccess::READ_WRITE,
1198                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1199                     .areaConfigs = {VehicleAreaConfig{
1200                             .areaId = (0), .minInt32Value = -2, .maxInt32Value = 2}}},
1201          .initialValue = {.int32Values = {0}}},  // +ve values for heating and -ve for cooling
1202 
1203         {.config = {.prop = toInt(VehicleProperty::HVAC_SEAT_TEMPERATURE),
1204                     .access = VehiclePropertyAccess::READ_WRITE,
1205                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1206                     .areaConfigs = {VehicleAreaConfig{
1207                                             .areaId = SEAT_1_LEFT,
1208                                             .minInt32Value = -2,
1209                                             .maxInt32Value = 2,
1210                                     },
1211                                     VehicleAreaConfig{
1212                                             .areaId = SEAT_1_RIGHT,
1213                                             .minInt32Value = -2,
1214                                             .maxInt32Value = 2,
1215                                     }}},
1216          .initialValue = {.int32Values = {0}}},  // +ve values for heating and -ve for cooling
1217 
1218         {.config = {.prop = toInt(VehicleProperty::HVAC_SIDE_MIRROR_HEAT),
1219                     .access = VehiclePropertyAccess::READ_WRITE,
1220                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1221                     .areaConfigs = {VehicleAreaConfig{
1222                             .areaId = toInt(VehicleAreaMirror::DRIVER_LEFT) |
1223                                       toInt(VehicleAreaMirror::DRIVER_RIGHT),
1224                             .minInt32Value = 0,
1225                             .maxInt32Value = 2,
1226                     }}},
1227          .initialValue = {.int32Values = {0}}},
1228 
1229         {.config = {.prop = toInt(VehicleProperty::HVAC_TEMPERATURE_CURRENT),
1230                     .access = VehiclePropertyAccess::READ,
1231                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1232                     .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_LEFT},
1233                                     VehicleAreaConfig{.areaId = HVAC_RIGHT}}},
1234          .initialAreaValues = {{HVAC_LEFT, {.floatValues = {17.3f}}},
1235                                {HVAC_RIGHT, {.floatValues = {19.1f}}}}},
1236 
1237         {.config = {.prop = toInt(VehicleProperty::HVAC_TEMPERATURE_SET),
1238                     .access = VehiclePropertyAccess::READ_WRITE,
1239                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1240                     .configArray = {160, 280, 5, 605, 825, 10},
1241                     .areaConfigs = {VehicleAreaConfig{
1242                                             .areaId = HVAC_LEFT,
1243                                             .minFloatValue = 16,
1244                                             .maxFloatValue = 32,
1245                                     },
1246                                     VehicleAreaConfig{
1247                                             .areaId = HVAC_RIGHT,
1248                                             .minFloatValue = 16,
1249                                             .maxFloatValue = 32,
1250                                     }}},
1251          .initialAreaValues = {{HVAC_LEFT, {.floatValues = {16}}},
1252                                {HVAC_RIGHT, {.floatValues = {20}}}}},
1253 
1254         {.config =
1255                  {
1256                          .prop = toInt(VehicleProperty::HVAC_TEMPERATURE_VALUE_SUGGESTION),
1257                          .access = VehiclePropertyAccess::READ_WRITE,
1258                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1259                  },
1260          .initialValue = {.floatValues = {66.2f, (float)VehicleUnit::FAHRENHEIT, 19.0f, 66.5f}}},
1261 
1262         {.config =
1263                  {
1264                          .prop = toInt(VehicleProperty::ENV_OUTSIDE_TEMPERATURE),
1265                          .access = VehiclePropertyAccess::READ,
1266                          // TODO(bryaneyler): Support ON_CHANGE as well.
1267                          .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
1268                          .minSampleRate = 1.0f,
1269                          .maxSampleRate = 2.0f,
1270                  },
1271          .initialValue = {.floatValues = {25.0f}}},
1272 
1273         {.config = {.prop = toInt(VehicleProperty::HVAC_TEMPERATURE_DISPLAY_UNITS),
1274                     .access = VehiclePropertyAccess::READ_WRITE,
1275                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1276                     .configArray = {toInt(VehicleUnit::FAHRENHEIT), toInt(VehicleUnit::CELSIUS)}},
1277          .initialValue = {.int32Values = {toInt(VehicleUnit::FAHRENHEIT)}}},
1278 
1279         {.config =
1280                  {
1281                          .prop = toInt(VehicleProperty::DISTANCE_DISPLAY_UNITS),
1282                          .access = VehiclePropertyAccess::READ_WRITE,
1283                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1284                          .areaConfigs = {VehicleAreaConfig{.areaId = (0)}},
1285                          .configArray = {toInt(VehicleUnit::KILOMETER), toInt(VehicleUnit::MILE)},
1286                  },
1287          .initialValue = {.int32Values = {toInt(VehicleUnit::MILE)}}},
1288 
1289         {.config =
1290                  {
1291                          .prop = toInt(VehicleProperty::NIGHT_MODE),
1292                          .access = VehiclePropertyAccess::READ,
1293                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1294                  },
1295          .initialValue = {.int32Values = {0}}},
1296 
1297         {.config =
1298                  {
1299                          .prop = toInt(VehicleProperty::GEAR_SELECTION),
1300                          .access = VehiclePropertyAccess::READ,
1301                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1302                          .configArray = {toInt(VehicleGear::GEAR_PARK),
1303                                          toInt(VehicleGear::GEAR_NEUTRAL),
1304                                          toInt(VehicleGear::GEAR_REVERSE),
1305                                          toInt(VehicleGear::GEAR_DRIVE), toInt(VehicleGear::GEAR_1),
1306                                          toInt(VehicleGear::GEAR_2), toInt(VehicleGear::GEAR_3),
1307                                          toInt(VehicleGear::GEAR_4), toInt(VehicleGear::GEAR_5)},
1308                  },
1309          .initialValue = {.int32Values = {toInt(VehicleGear::GEAR_PARK)}}},
1310 
1311         {.config =
1312                  {
1313                          .prop = toInt(VehicleProperty::TURN_SIGNAL_STATE),
1314                          .access = VehiclePropertyAccess::READ,
1315                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1316                  },
1317          .initialValue = {.int32Values = {toInt(VehicleTurnSignal::NONE)}}},
1318 
1319         {.config =
1320                  {
1321                          .prop = toInt(VehicleProperty::IGNITION_STATE),
1322                          .access = VehiclePropertyAccess::READ,
1323                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1324                  },
1325          .initialValue = {.int32Values = {toInt(VehicleIgnitionState::ON)}}},
1326 
1327         {.config =
1328                  {
1329                          .prop = toInt(VehicleProperty::ENGINE_COOLANT_TEMP),
1330                          .access = VehiclePropertyAccess::READ,
1331                          .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
1332                          .minSampleRate = 1.0f,
1333                          .maxSampleRate = 10.0f,
1334                  },
1335          .initialValue = {.floatValues = {75.0f}}},
1336 
1337         {.config =
1338                  {
1339                          .prop = toInt(VehicleProperty::ENGINE_OIL_LEVEL),
1340                          .access = VehiclePropertyAccess::READ,
1341                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1342                  },
1343          .initialValue = {.int32Values = {toInt(VehicleOilLevel::NORMAL)}}},
1344 
1345         {.config =
1346                  {
1347                          .prop = toInt(VehicleProperty::ENGINE_OIL_TEMP),
1348                          .access = VehiclePropertyAccess::READ,
1349                          .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
1350                          .minSampleRate = 0.1,  // 0.1 Hz, every 10 seconds
1351                          .maxSampleRate = 10,   // 10 Hz, every 100 ms
1352                  },
1353          .initialValue = {.floatValues = {101.0f}}},
1354 
1355         {
1356                 .config = {.prop = kMixedTypePropertyForTest,
1357                            .access = VehiclePropertyAccess::READ_WRITE,
1358                            .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1359                            .configArray = {1, 1, 0, 2, 0, 0, 1, 0, 0}},
1360                 .initialValue =
1361                         {
1362                                 .int32Values = {1 /* indicate TRUE boolean value */, 2, 3},
1363                                 .floatValues = {4.5f},
1364                                 .stringValue = "MIXED property",
1365                         },
1366         },
1367 
1368         {.config = {.prop = toInt(VehicleProperty::DOOR_LOCK),
1369                     .access = VehiclePropertyAccess::READ_WRITE,
1370                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1371                     .areaConfigs = {VehicleAreaConfig{.areaId = DOOR_1_LEFT},
1372                                     VehicleAreaConfig{.areaId = DOOR_1_RIGHT},
1373                                     VehicleAreaConfig{.areaId = DOOR_2_LEFT},
1374                                     VehicleAreaConfig{.areaId = DOOR_2_RIGHT}}},
1375          .initialAreaValues = {{DOOR_1_LEFT, {.int32Values = {1}}},
1376                                {DOOR_1_RIGHT, {.int32Values = {1}}},
1377                                {DOOR_2_LEFT, {.int32Values = {1}}},
1378                                {DOOR_2_RIGHT, {.int32Values = {1}}}}},
1379 
1380         {.config = {.prop = toInt(VehicleProperty::DOOR_POS),
1381                     .access = VehiclePropertyAccess::READ_WRITE,
1382                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1383                     .areaConfigs =
1384                             {VehicleAreaConfig{
1385                                      .areaId = DOOR_1_LEFT, .minInt32Value = 0, .maxInt32Value = 1},
1386                              VehicleAreaConfig{.areaId = DOOR_1_RIGHT,
1387                                                .minInt32Value = 0,
1388                                                .maxInt32Value = 1},
1389                              VehicleAreaConfig{
1390                                      .areaId = DOOR_2_LEFT, .minInt32Value = 0, .maxInt32Value = 1},
1391                              VehicleAreaConfig{.areaId = DOOR_2_RIGHT,
1392                                                .minInt32Value = 0,
1393                                                .maxInt32Value = 1},
1394                              VehicleAreaConfig{
1395                                      .areaId = DOOR_REAR, .minInt32Value = 0, .maxInt32Value = 1}}},
1396          .initialValue = {.int32Values = {0}}},
1397 
1398         {.config = {.prop = toInt(VehicleProperty::MIRROR_Z_POS),
1399                     .access = VehiclePropertyAccess::READ_WRITE,
1400                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1401                     .areaConfigs =
1402                             {VehicleAreaConfig{.areaId = toInt(VehicleAreaMirror::DRIVER_LEFT),
1403                                                .minInt32Value = -3,
1404                                                .maxInt32Value = 3},
1405                              VehicleAreaConfig{.areaId = toInt(VehicleAreaMirror::DRIVER_RIGHT),
1406                                                .minInt32Value = -3,
1407                                                .maxInt32Value = 3},
1408                              VehicleAreaConfig{.areaId = toInt(VehicleAreaMirror::DRIVER_CENTER),
1409                                                .minInt32Value = -3,
1410                                                .maxInt32Value = 3}}},
1411          .initialValue = {.int32Values = {0}}},
1412 
1413         {.config = {.prop = toInt(VehicleProperty::MIRROR_Z_MOVE),
1414                     .access = VehiclePropertyAccess::READ_WRITE,
1415                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1416                     .areaConfigs =
1417                             {VehicleAreaConfig{.areaId = toInt(VehicleAreaMirror::DRIVER_LEFT),
1418                                                .minInt32Value = -1,
1419                                                .maxInt32Value = 1},
1420                              VehicleAreaConfig{.areaId = toInt(VehicleAreaMirror::DRIVER_RIGHT),
1421                                                .minInt32Value = -1,
1422                                                .maxInt32Value = 1},
1423                              VehicleAreaConfig{.areaId = toInt(VehicleAreaMirror::DRIVER_CENTER),
1424                                                .minInt32Value = -1,
1425                                                .maxInt32Value = 1}}},
1426          .initialValue = {.int32Values = {0}}},
1427 
1428         {.config = {.prop = toInt(VehicleProperty::MIRROR_Y_POS),
1429                     .access = VehiclePropertyAccess::READ_WRITE,
1430                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1431                     .areaConfigs =
1432                             {VehicleAreaConfig{.areaId = toInt(VehicleAreaMirror::DRIVER_LEFT),
1433                                                .minInt32Value = -3,
1434                                                .maxInt32Value = 3},
1435                              VehicleAreaConfig{.areaId = toInt(VehicleAreaMirror::DRIVER_RIGHT),
1436                                                .minInt32Value = -3,
1437                                                .maxInt32Value = 3},
1438                              VehicleAreaConfig{.areaId = toInt(VehicleAreaMirror::DRIVER_CENTER),
1439                                                .minInt32Value = -3,
1440                                                .maxInt32Value = 3}}},
1441          .initialValue = {.int32Values = {0}}},
1442 
1443         {.config = {.prop = toInt(VehicleProperty::MIRROR_Y_MOVE),
1444                     .access = VehiclePropertyAccess::READ_WRITE,
1445                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1446                     .areaConfigs =
1447                             {VehicleAreaConfig{.areaId = toInt(VehicleAreaMirror::DRIVER_LEFT),
1448                                                .minInt32Value = -1,
1449                                                .maxInt32Value = 1},
1450                              VehicleAreaConfig{.areaId = toInt(VehicleAreaMirror::DRIVER_RIGHT),
1451                                                .minInt32Value = -1,
1452                                                .maxInt32Value = 1},
1453                              VehicleAreaConfig{.areaId = toInt(VehicleAreaMirror::DRIVER_CENTER),
1454                                                .minInt32Value = -1,
1455                                                .maxInt32Value = 1}}},
1456          .initialValue = {.int32Values = {0}}},
1457 
1458         {.config = {.prop = toInt(VehicleProperty::MIRROR_LOCK),
1459                     .access = VehiclePropertyAccess::READ_WRITE,
1460                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE},
1461          .initialValue = {.int32Values = {1}}},
1462 
1463         {.config = {.prop = toInt(VehicleProperty::MIRROR_FOLD),
1464                     .access = VehiclePropertyAccess::READ_WRITE,
1465                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE},
1466          .initialValue = {.int32Values = {1}}},
1467 
1468         {.config = {.prop = toInt(VehicleProperty::WINDOW_LOCK),
1469                     .access = VehiclePropertyAccess::READ_WRITE,
1470                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1471                     .areaConfigs = {VehicleAreaConfig{.areaId = WINDOW_1_RIGHT | WINDOW_2_LEFT |
1472                                                                 WINDOW_2_RIGHT}}},
1473          .initialAreaValues = {{WINDOW_1_RIGHT | WINDOW_2_LEFT | WINDOW_2_RIGHT,
1474                                 {.int32Values = {0}}}}},
1475 
1476         {.config = {.prop = toInt(VehicleProperty::WINDOW_POS),
1477                     .access = VehiclePropertyAccess::READ_WRITE,
1478                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1479                     .areaConfigs = {VehicleAreaConfig{.areaId = WINDOW_1_LEFT,
1480                                                       .minInt32Value = 0,
1481                                                       .maxInt32Value = 10},
1482                                     VehicleAreaConfig{.areaId = WINDOW_1_RIGHT,
1483                                                       .minInt32Value = 0,
1484                                                       .maxInt32Value = 10},
1485                                     VehicleAreaConfig{.areaId = WINDOW_2_LEFT,
1486                                                       .minInt32Value = 0,
1487                                                       .maxInt32Value = 10},
1488                                     VehicleAreaConfig{.areaId = WINDOW_2_RIGHT,
1489                                                       .minInt32Value = 0,
1490                                                       .maxInt32Value = 10},
1491                                     VehicleAreaConfig{.areaId = WINDOW_ROOF_TOP_1,
1492                                                       .minInt32Value = -10,
1493                                                       .maxInt32Value = 10}}},
1494          .initialValue = {.int32Values = {0}}},
1495 
1496         {.config = {.prop = toInt(VehicleProperty::WINDOW_MOVE),
1497                     .access = VehiclePropertyAccess::READ_WRITE,
1498                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1499                     .areaConfigs = {VehicleAreaConfig{.areaId = WINDOW_1_LEFT,
1500                                                       .minInt32Value = -1,
1501                                                       .maxInt32Value = 1},
1502                                     VehicleAreaConfig{.areaId = WINDOW_1_RIGHT,
1503                                                       .minInt32Value = -1,
1504                                                       .maxInt32Value = 1},
1505                                     VehicleAreaConfig{.areaId = WINDOW_2_LEFT,
1506                                                       .minInt32Value = -1,
1507                                                       .maxInt32Value = 1},
1508                                     VehicleAreaConfig{.areaId = WINDOW_2_RIGHT,
1509                                                       .minInt32Value = -1,
1510                                                       .maxInt32Value = 1},
1511                                     VehicleAreaConfig{.areaId = WINDOW_ROOF_TOP_1,
1512                                                       .minInt32Value = -1,
1513                                                       .maxInt32Value = 1}}},
1514          .initialValue = {.int32Values = {0}}},
1515 
1516         {.config =
1517                  {
1518                          .prop = WHEEL_TICK,
1519                          .access = VehiclePropertyAccess::READ,
1520                          .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
1521                          .configArray = {ALL_WHEELS, 50000, 50000, 50000, 50000},
1522                          .minSampleRate = 1.0f,
1523                          .maxSampleRate = 10.0f,
1524                  },
1525          .initialValue = {.int64Values = {0, 100000, 200000, 300000, 400000}}},
1526 
1527         {.config = {.prop = ABS_ACTIVE,
1528                     .access = VehiclePropertyAccess::READ,
1529                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE},
1530          .initialValue = {.int32Values = {0}}},
1531 
1532         {.config = {.prop = TRACTION_CONTROL_ACTIVE,
1533                     .access = VehiclePropertyAccess::READ,
1534                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE},
1535          .initialValue = {.int32Values = {0}}},
1536 
1537         {.config = {.prop = toInt(VehicleProperty::AP_POWER_STATE_REQ),
1538                     .access = VehiclePropertyAccess::READ,
1539                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1540                     .configArray = {3}}},
1541 
1542         {.config = {.prop = toInt(VehicleProperty::AP_POWER_STATE_REPORT),
1543                     .access = VehiclePropertyAccess::READ_WRITE,
1544                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE},
1545          .initialValue = {.int32Values = {toInt(VehicleApPowerStateReport::WAIT_FOR_VHAL), 0}}},
1546 
1547         {.config = {.prop = toInt(VehicleProperty::DISPLAY_BRIGHTNESS),
1548                     .access = VehiclePropertyAccess::READ_WRITE,
1549                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1550                     .areaConfigs = {VehicleAreaConfig{.minInt32Value = 0, .maxInt32Value = 100}}},
1551          .initialValue = {.int32Values = {100}}},
1552 
1553         {
1554                 .config = {.prop = OBD2_LIVE_FRAME,
1555                            .access = VehiclePropertyAccess::READ,
1556                            .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1557                            .configArray = {0, 0}},
1558         },
1559 
1560         {
1561                 .config = {.prop = OBD2_FREEZE_FRAME,
1562                            .access = VehiclePropertyAccess::READ,
1563                            .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1564                            .configArray = {0, 0}},
1565         },
1566 
1567         {
1568                 .config = {.prop = OBD2_FREEZE_FRAME_INFO,
1569                            .access = VehiclePropertyAccess::READ,
1570                            .changeMode = VehiclePropertyChangeMode::ON_CHANGE},
1571         },
1572 
1573         {
1574                 .config = {.prop = OBD2_FREEZE_FRAME_CLEAR,
1575                            .access = VehiclePropertyAccess::WRITE,
1576                            .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1577                            .configArray = {1}},
1578         },
1579 
1580         {.config =
1581                  {
1582                          .prop = toInt(VehicleProperty::HEADLIGHTS_STATE),
1583                          .access = VehiclePropertyAccess::READ,
1584                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1585                  },
1586          .initialValue = {.int32Values = {LIGHT_STATE_ON}}},
1587 
1588         {.config =
1589                  {
1590                          .prop = toInt(VehicleProperty::HIGH_BEAM_LIGHTS_STATE),
1591                          .access = VehiclePropertyAccess::READ,
1592                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1593                  },
1594          .initialValue = {.int32Values = {LIGHT_STATE_ON}}},
1595 
1596         {.config =
1597                  {
1598                          .prop = toInt(VehicleProperty::FRONT_FOG_LIGHTS_STATE),
1599                          .access = VehiclePropertyAccess::READ,
1600                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1601                  },
1602          .initialValue = {.int32Values = {LIGHT_STATE_ON}}},
1603 
1604         {.config =
1605                  {
1606                          .prop = toInt(VehicleProperty::REAR_FOG_LIGHTS_STATE),
1607                          .access = VehiclePropertyAccess::READ,
1608                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1609                  },
1610          .initialValue = {.int32Values = {LIGHT_STATE_ON}}},
1611 
1612         {.config =
1613                  {
1614                          .prop = toInt(VehicleProperty::HAZARD_LIGHTS_STATE),
1615                          .access = VehiclePropertyAccess::READ,
1616                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1617                  },
1618          .initialValue = {.int32Values = {LIGHT_STATE_ON}}},
1619 
1620         {.config =
1621                  {
1622                          .prop = toInt(VehicleProperty::CABIN_LIGHTS_STATE),
1623                          .access = VehiclePropertyAccess::READ,
1624                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1625                  },
1626          .initialValue = {.int32Values = {LIGHT_STATE_ON}}},
1627 
1628         {.config = {.prop = toInt(VehicleProperty::READING_LIGHTS_STATE),
1629                     .access = VehiclePropertyAccess::READ,
1630                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1631                     .areaConfigs = {VehicleAreaConfig{.areaId = SEAT_1_LEFT},
1632                                     VehicleAreaConfig{.areaId = SEAT_1_RIGHT},
1633                                     VehicleAreaConfig{.areaId = SEAT_2_LEFT},
1634                                     VehicleAreaConfig{.areaId = SEAT_2_RIGHT},
1635                                     VehicleAreaConfig{.areaId = SEAT_2_CENTER}}},
1636          .initialValue = {.int32Values = {LIGHT_STATE_ON}}},
1637 
1638         {.config =
1639                  {
1640                          .prop = toInt(VehicleProperty::HEADLIGHTS_SWITCH),
1641                          .access = VehiclePropertyAccess::READ_WRITE,
1642                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1643                  },
1644          .initialValue = {.int32Values = {LIGHT_SWITCH_AUTO}}},
1645 
1646         {.config =
1647                  {
1648                          .prop = toInt(VehicleProperty::HIGH_BEAM_LIGHTS_SWITCH),
1649                          .access = VehiclePropertyAccess::READ_WRITE,
1650                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1651                  },
1652          .initialValue = {.int32Values = {LIGHT_SWITCH_AUTO}}},
1653 
1654         // FOG_LIGHTS_SWITCH must not be implemented when FRONT_FOG_LIGHTS_SWITCH is implemented
1655         {.config =
1656                  {
1657                          .prop = toInt(VehicleProperty::FRONT_FOG_LIGHTS_SWITCH),
1658                          .access = VehiclePropertyAccess::READ_WRITE,
1659                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1660                  },
1661          .initialValue = {.int32Values = {LIGHT_SWITCH_AUTO}}},
1662 
1663         // FOG_LIGHTS_SWITCH must not be implemented when REAR_FOG_LIGHTS_SWITCH is implemented
1664         {.config =
1665                  {
1666                          .prop = toInt(VehicleProperty::REAR_FOG_LIGHTS_SWITCH),
1667                          .access = VehiclePropertyAccess::READ_WRITE,
1668                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1669                  },
1670          .initialValue = {.int32Values = {LIGHT_SWITCH_AUTO}}},
1671 
1672         {.config =
1673                  {
1674                          .prop = toInt(VehicleProperty::HAZARD_LIGHTS_SWITCH),
1675                          .access = VehiclePropertyAccess::READ_WRITE,
1676                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1677                  },
1678          .initialValue = {.int32Values = {LIGHT_SWITCH_AUTO}}},
1679 
1680         {.config =
1681                  {
1682                          .prop = toInt(VehicleProperty::CABIN_LIGHTS_SWITCH),
1683                          .access = VehiclePropertyAccess::READ_WRITE,
1684                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1685                  },
1686          .initialValue = {.int32Values = {LIGHT_STATE_ON}}},
1687 
1688         {.config = {.prop = toInt(VehicleProperty::READING_LIGHTS_SWITCH),
1689                     .access = VehiclePropertyAccess::READ_WRITE,
1690                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1691                     .areaConfigs = {VehicleAreaConfig{.areaId = SEAT_1_LEFT},
1692                                     VehicleAreaConfig{.areaId = SEAT_1_RIGHT},
1693                                     VehicleAreaConfig{.areaId = SEAT_2_LEFT},
1694                                     VehicleAreaConfig{.areaId = SEAT_2_RIGHT},
1695                                     VehicleAreaConfig{.areaId = SEAT_2_CENTER}}},
1696          .initialValue = {.int32Values = {LIGHT_STATE_ON}}},
1697 
1698         {.config =
1699                  {
1700                          .prop = toInt(VehicleProperty::EVS_SERVICE_REQUEST),
1701                          .access = VehiclePropertyAccess::READ,
1702                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1703                  },
1704          .initialValue = {.int32Values = {toInt(EvsServiceType::REARVIEW),
1705                                           toInt(EvsServiceState::OFF)}}},
1706 
1707         {.config = {.prop = VEHICLE_MAP_SERVICE,
1708                     .access = VehiclePropertyAccess::READ_WRITE,
1709                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE}},
1710 
1711         // Example Vendor Extension properties for testing
1712         {.config = {.prop = VENDOR_EXTENSION_BOOLEAN_PROPERTY,
1713                     .access = VehiclePropertyAccess::READ_WRITE,
1714                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1715                     .areaConfigs = {VehicleAreaConfig{.areaId = DOOR_1_LEFT},
1716                                     VehicleAreaConfig{.areaId = DOOR_1_RIGHT},
1717                                     VehicleAreaConfig{.areaId = DOOR_2_LEFT},
1718                                     VehicleAreaConfig{.areaId = DOOR_2_RIGHT}}},
1719          .initialAreaValues = {{DOOR_1_LEFT, {.int32Values = {1}}},
1720                                {DOOR_1_RIGHT, {.int32Values = {1}}},
1721                                {DOOR_2_LEFT, {.int32Values = {0}}},
1722                                {DOOR_2_RIGHT, {.int32Values = {0}}}}},
1723 
1724         {.config = {.prop = VENDOR_EXTENSION_FLOAT_PROPERTY,
1725                     .access = VehiclePropertyAccess::READ_WRITE,
1726                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1727                     .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_LEFT,
1728                                                       .minFloatValue = -10,
1729                                                       .maxFloatValue = 10},
1730                                     VehicleAreaConfig{.areaId = HVAC_RIGHT,
1731                                                       .minFloatValue = -10,
1732                                                       .maxFloatValue = 10}}},
1733          .initialAreaValues = {{HVAC_LEFT, {.floatValues = {1}}},
1734                                {HVAC_RIGHT, {.floatValues = {2}}}}},
1735 
1736         {.config = {.prop = VENDOR_EXTENSION_INT_PROPERTY,
1737                     .access = VehiclePropertyAccess::READ_WRITE,
1738                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1739                     .areaConfigs =
1740                             {VehicleAreaConfig{.areaId = toInt(VehicleAreaWindow::FRONT_WINDSHIELD),
1741                                                .minInt32Value = -100,
1742                                                .maxInt32Value = 100},
1743                              VehicleAreaConfig{.areaId = toInt(VehicleAreaWindow::REAR_WINDSHIELD),
1744                                                .minInt32Value = -100,
1745                                                .maxInt32Value = 100},
1746                              VehicleAreaConfig{.areaId = toInt(VehicleAreaWindow::ROOF_TOP_1),
1747                                                .minInt32Value = -100,
1748                                                .maxInt32Value = 100}}},
1749          .initialAreaValues = {{toInt(VehicleAreaWindow::FRONT_WINDSHIELD), {.int32Values = {1}}},
1750                                {toInt(VehicleAreaWindow::REAR_WINDSHIELD), {.int32Values = {0}}},
1751                                {toInt(VehicleAreaWindow::ROOF_TOP_1), {.int32Values = {-1}}}}},
1752 
1753         {.config = {.prop = VENDOR_EXTENSION_STRING_PROPERTY,
1754                     .access = VehiclePropertyAccess::READ_WRITE,
1755                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE},
1756          .initialValue = {.stringValue = "Vendor String Property"}},
1757 
1758         {.config = {.prop = toInt(VehicleProperty::ELECTRONIC_TOLL_COLLECTION_CARD_TYPE),
1759                     .access = VehiclePropertyAccess::READ,
1760                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE},
1761          .initialValue = {.int32Values = {0}}},
1762 
1763         {.config = {.prop = toInt(VehicleProperty::ELECTRONIC_TOLL_COLLECTION_CARD_STATUS),
1764                     .access = VehiclePropertyAccess::READ,
1765                     .changeMode = VehiclePropertyChangeMode::ON_CHANGE},
1766          .initialValue = {.int32Values = {0}}},
1767 
1768         {.config =
1769                  {
1770                          .prop = toInt(VehicleProperty::SUPPORT_CUSTOMIZE_VENDOR_PERMISSION),
1771                          .access = VehiclePropertyAccess::READ,
1772                          .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1773                          .configArray = {kMixedTypePropertyForTest,
1774                                          toInt(VehicleVendorPermission::
1775                                                        PERMISSION_GET_VENDOR_CATEGORY_INFO),
1776                                          toInt(VehicleVendorPermission::
1777                                                        PERMISSION_SET_VENDOR_CATEGORY_INFO),
1778                                          VENDOR_EXTENSION_INT_PROPERTY,
1779                                          toInt(VehicleVendorPermission::
1780                                                        PERMISSION_GET_VENDOR_CATEGORY_SEAT),
1781                                          toInt(VehicleVendorPermission::PERMISSION_NOT_ACCESSIBLE),
1782                                          VENDOR_EXTENSION_FLOAT_PROPERTY,
1783                                          toInt(VehicleVendorPermission::PERMISSION_DEFAULT),
1784                                          toInt(VehicleVendorPermission::PERMISSION_DEFAULT)},
1785                  },
1786          .initialValue = {.int32Values = {1}}},
1787 
1788         {
1789                 .config =
1790                         {
1791                                 .prop = toInt(VehicleProperty::INITIAL_USER_INFO),
1792                                 .access = VehiclePropertyAccess::READ_WRITE,
1793                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1794                         },
1795         },
1796         {
1797                 .config =
1798                         {
1799                                 .prop = toInt(VehicleProperty::SWITCH_USER),
1800                                 .access = VehiclePropertyAccess::READ_WRITE,
1801                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1802                         },
1803         },
1804         {
1805                 .config =
1806                         {
1807                                 .prop = toInt(VehicleProperty::CREATE_USER),
1808                                 .access = VehiclePropertyAccess::READ_WRITE,
1809                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1810                         },
1811         },
1812         {
1813                 .config =
1814                         {
1815                                 .prop = toInt(VehicleProperty::REMOVE_USER),
1816                                 .access = VehiclePropertyAccess::READ_WRITE,
1817                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1818                         },
1819         },
1820         {
1821                 .config =
1822                         {
1823                                 .prop = toInt(VehicleProperty::USER_IDENTIFICATION_ASSOCIATION),
1824                                 .access = VehiclePropertyAccess::READ_WRITE,
1825                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1826                         },
1827         },
1828         {
1829                 .config =
1830                         {
1831                                 .prop = toInt(VehicleProperty::POWER_POLICY_REQ),
1832                                 .access = VehiclePropertyAccess::READ,
1833                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1834                         },
1835         },
1836         {
1837                 .config =
1838                         {
1839                                 .prop = toInt(VehicleProperty::POWER_POLICY_GROUP_REQ),
1840                                 .access = VehiclePropertyAccess::READ,
1841                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1842                         },
1843         },
1844         {
1845                 .config =
1846                         {
1847                                 .prop = toInt(VehicleProperty::CURRENT_POWER_POLICY),
1848                                 .access = VehiclePropertyAccess::READ_WRITE,
1849                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1850                         },
1851         },
1852         {
1853                 .config =
1854                         {
1855                                 .prop = toInt(VehicleProperty::ANDROID_EPOCH_TIME),
1856                                 .access = VehiclePropertyAccess::WRITE,
1857                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1858                         },
1859         },
1860         {
1861                 .config =
1862                         {
1863                                 .prop = toInt(VehicleProperty::WATCHDOG_ALIVE),
1864                                 .access = VehiclePropertyAccess::WRITE,
1865                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1866                         },
1867         },
1868         {
1869                 .config =
1870                         {
1871                                 .prop = toInt(VehicleProperty::WATCHDOG_TERMINATED_PROCESS),
1872                                 .access = VehiclePropertyAccess::WRITE,
1873                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1874                         },
1875         },
1876         {
1877                 .config =
1878                         {
1879                                 .prop = toInt(VehicleProperty::VHAL_HEARTBEAT),
1880                                 .access = VehiclePropertyAccess::READ,
1881                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1882                         },
1883         },
1884         {
1885                 .config =
1886                         {
1887                                 .prop = toInt(VehicleProperty::CLUSTER_SWITCH_UI),
1888                                 .access = VehiclePropertyAccess::READ,
1889                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1890                         },
1891                 .initialValue = {.int32Values = {0 /* ClusterHome */}},
1892         },
1893         {
1894                 .config =
1895                         {
1896                                 .prop = toInt(VehicleProperty::CLUSTER_DISPLAY_STATE),
1897                                 .access = VehiclePropertyAccess::READ,
1898                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1899                         },
1900                 .initialValue = {.int32Values = {0 /* Off */, -1, -1, -1, -1 /* Bounds */, -1, -1,
1901                                                  -1, -1 /* Insets */}},
1902         },
1903         {
1904                 .config =
1905                         {
1906                                 .prop = toInt(VehicleProperty::CLUSTER_REPORT_STATE),
1907                                 .access = VehiclePropertyAccess::WRITE,
1908                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1909                                 .configArray = {0, 0, 0, 11, 0, 0, 0, 0, 16},
1910                         },
1911         },
1912         {
1913                 .config =
1914                         {
1915                                 .prop = toInt(VehicleProperty::CLUSTER_REQUEST_DISPLAY),
1916                                 .access = VehiclePropertyAccess::WRITE,
1917                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1918                         },
1919         },
1920         {
1921                 .config =
1922                         {
1923                                 .prop = toInt(VehicleProperty::CLUSTER_NAVIGATION_STATE),
1924                                 .access = VehiclePropertyAccess::WRITE,
1925                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1926                         },
1927         },
1928         {
1929                 .config =
1930                         {
1931                                 .prop = PLACEHOLDER_PROPERTY_INT,
1932                                 .access = VehiclePropertyAccess::READ_WRITE,
1933                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1934                         },
1935                 .initialValue = {.int32Values = {0}},
1936         },
1937         {
1938                 .config =
1939                         {
1940                                 .prop = PLACEHOLDER_PROPERTY_FLOAT,
1941                                 .access = VehiclePropertyAccess::READ_WRITE,
1942                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1943                         },
1944                 .initialValue = {.floatValues = {0.0f}},
1945         },
1946         {
1947                 .config =
1948                         {
1949                                 .prop = PLACEHOLDER_PROPERTY_BOOLEAN,
1950                                 .access = VehiclePropertyAccess::READ_WRITE,
1951                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1952                         },
1953                 .initialValue = {.int32Values = {0 /* false */}},
1954         },
1955         {
1956                 .config =
1957                         {
1958                                 .prop = PLACEHOLDER_PROPERTY_STRING,
1959                                 .access = VehiclePropertyAccess::READ_WRITE,
1960                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1961                         },
1962                 .initialValue = {.stringValue = {"Test"}},
1963         },
1964         {
1965                 .config =
1966                         {
1967                                 .prop = ECHO_REVERSE_BYTES,
1968                                 .access = VehiclePropertyAccess::READ_WRITE,
1969                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1970                         },
1971         },
1972 #ifdef ENABLE_VENDOR_CLUSTER_PROPERTY_FOR_TESTING
1973         // Vendor propetry for E2E ClusterHomeService testing.
1974         {
1975                 .config =
1976                         {
1977                                 .prop = VENDOR_CLUSTER_SWITCH_UI,
1978                                 .access = VehiclePropertyAccess::WRITE,
1979                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1980                         },
1981         },
1982         {
1983                 .config =
1984                         {
1985                                 .prop = VENDOR_CLUSTER_DISPLAY_STATE,
1986                                 .access = VehiclePropertyAccess::WRITE,
1987                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1988                         },
1989         },
1990         {
1991                 .config =
1992                         {
1993                                 .prop = VENDOR_CLUSTER_REPORT_STATE,
1994                                 .access = VehiclePropertyAccess::READ,
1995                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
1996                                 .configArray = {0, 0, 0, 11, 0, 0, 0, 0, 16},
1997                         },
1998                 .initialValue = {.int32Values = {0 /* Off */, -1, -1, -1, -1 /* Bounds */, -1, -1,
1999                                                  -1, -1 /* Insets */, 0 /* ClusterHome */,
2000                                                  -1 /* ClusterNone */}},
2001         },
2002         {
2003                 .config =
2004                         {
2005                                 .prop = VENDOR_CLUSTER_REQUEST_DISPLAY,
2006                                 .access = VehiclePropertyAccess::READ,
2007                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
2008                         },
2009                 .initialValue = {.int32Values = {0 /* ClusterHome */}},
2010         },
2011         {
2012                 .config =
2013                         {
2014                                 .prop = VENDOR_CLUSTER_NAVIGATION_STATE,
2015                                 .access = VehiclePropertyAccess::READ,
2016                                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
2017                         },
2018         },
2019 #endif  // ENABLE_VENDOR_CLUSTER_PROPERTY_FOR_TESTING
2020 };
2021 
2022 }  // namespace defaultconfig_impl
2023 
2024 // public namespace
2025 namespace defaultconfig {
2026 
2027 typedef defaultconfig_impl::ConfigDeclaration ConfigDeclaration;
2028 
getDefaultConfigs()2029 inline constexpr const std::vector<ConfigDeclaration>& getDefaultConfigs() {
2030     return defaultconfig_impl::kVehicleProperties;
2031 }
2032 
2033 }  // namespace defaultconfig
2034 
2035 }  // namespace vehicle
2036 }  // namespace automotive
2037 }  // namespace hardware
2038 }  // namespace android
2039 
2040 #endif  // android_hardware_automotive_vehicle_aidl_impl_default_config_include_DefaultConfig_H_
2041