Home | History | Annotate | Download | only in vhal_v2_0
      1 /*
      2  * Copyright (C) 2016 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 #ifndef android_hardware_automotive_vehicle_V2_0_impl_DefaultConfig_H_
     18 #define android_hardware_automotive_vehicle_V2_0_impl_DefaultConfig_H_
     19 
     20 #include <android/hardware/automotive/vehicle/2.0/IVehicle.h>
     21 #include <vhal_v2_0/VehicleUtils.h>
     22 
     23 namespace android {
     24 namespace hardware {
     25 namespace automotive {
     26 namespace vehicle {
     27 namespace V2_0 {
     28 
     29 namespace impl {
     30 //
     31 // Some handy constants to avoid conversions from enum to int.
     32 constexpr int ABS_ACTIVE = (int)VehicleProperty::ABS_ACTIVE;
     33 constexpr int AP_POWER_STATE_REQ = (int)VehicleProperty::AP_POWER_STATE_REQ;
     34 constexpr int AP_POWER_STATE_REPORT = (int)VehicleProperty::AP_POWER_STATE_REPORT;
     35 constexpr int DOOR_1_LEFT = (int)VehicleAreaDoor::ROW_1_LEFT;
     36 constexpr int DOOR_1_RIGHT = (int)VehicleAreaDoor::ROW_1_RIGHT;
     37 constexpr int OBD2_LIVE_FRAME = (int)VehicleProperty::OBD2_LIVE_FRAME;
     38 constexpr int OBD2_FREEZE_FRAME = (int)VehicleProperty::OBD2_FREEZE_FRAME;
     39 constexpr int OBD2_FREEZE_FRAME_INFO = (int)VehicleProperty::OBD2_FREEZE_FRAME_INFO;
     40 constexpr int OBD2_FREEZE_FRAME_CLEAR = (int)VehicleProperty::OBD2_FREEZE_FRAME_CLEAR;
     41 constexpr int TRACTION_CONTROL_ACTIVE = (int)VehicleProperty::TRACTION_CONTROL_ACTIVE;
     42 constexpr int VEHICLE_MAP_SERVICE = (int)VehicleProperty::VEHICLE_MAP_SERVICE;
     43 constexpr int WHEEL_TICK = (int)VehicleProperty::WHEEL_TICK;
     44 constexpr int ALL_WHEELS =
     45     (int)(VehicleAreaWheel::LEFT_FRONT | VehicleAreaWheel::RIGHT_FRONT |
     46           VehicleAreaWheel::LEFT_REAR | VehicleAreaWheel::RIGHT_REAR);
     47 constexpr int HVAC_LEFT = (int)(VehicleAreaSeat::ROW_1_LEFT | VehicleAreaSeat::ROW_2_LEFT |
     48                                 VehicleAreaSeat::ROW_2_CENTER);
     49 constexpr int HVAC_RIGHT = (int)(VehicleAreaSeat::ROW_1_RIGHT | VehicleAreaSeat::ROW_2_RIGHT);
     50 constexpr int HVAC_ALL = HVAC_LEFT | HVAC_RIGHT;
     51 
     52 /**
     53  * This property is used for test purpose to generate fake events. Here is the test package that
     54  * is referencing this property definition: packages/services/Car/tests/vehiclehal_test
     55  */
     56 const int32_t kGenerateFakeDataControllingProperty =
     57     0x0666 | VehiclePropertyGroup::VENDOR | VehicleArea::GLOBAL | VehiclePropertyType::MIXED;
     58 
     59 /**
     60  * FakeDataCommand enum defines the supported command type for kGenerateFakeDataControllingProperty.
     61  * All those commands can be send independently with each other. And each will override the one sent
     62  * previously.
     63  *
     64  * The controlling property has the following format:
     65  *
     66  *     int32Values[0] - command enum defined in FakeDataCommand
     67  *
     68  * The format of the arguments is defined for each command type as below:
     69  */
     70 enum class FakeDataCommand : int32_t {
     71     /**
     72      * Starts linear fake data generation. Caller must provide additional data:
     73      *     int32Values[1] - VehicleProperty to which command applies
     74      *     int64Values[0] - periodic interval in nanoseconds
     75      *     floatValues[0] - initial value
     76      *     floatValues[1] - dispersion defines the min/max value relative to initial value, where
     77      *                      max = initial_value + dispersion, min = initial_value - dispersion.
     78      *                      Dispersion should be non-negative, otherwise the behavior is undefined.
     79      *     floatValues[2] - increment, with every timer tick the value will be incremented by this
     80      *                      amount. When reaching to max value, the current value will be set to min.
     81      *                      It should be non-negative, otherwise the behavior is undefined.
     82      */
     83     StartLinear = 0,
     84 
     85     /** Stops generating of fake data that was triggered by Start commands.
     86      *     int32Values[1] - VehicleProperty to which command applies. VHAL will stop the
     87      *                      corresponding linear generation for that property.
     88      */
     89     StopLinear = 1,
     90 
     91     /**
     92      * Starts JSON-based fake data generation. Caller must provide a string value specifying
     93      * the path to fake value JSON file:
     94      *     stringValue    - path to the fake values JSON file
     95      */
     96     StartJson = 2,
     97 
     98     /**
     99      * Stops JSON-based fake data generation. No additional arguments needed.
    100      */
    101     StopJson = 3,
    102 
    103     /**
    104      * Injects key press event (HAL incorporates UP/DOWN acction and triggers 2 HAL events for every
    105      * key-press). We set the enum with high number to leave space for future start/stop commands.
    106      * Caller must provide the following data:
    107      *     int32Values[2] - Android key code
    108      *     int32Values[3] - target display (0 - for main display, 1 - for instrument cluster, see
    109      *                      VehicleDisplay)
    110      */
    111     KeyPress = 100,
    112 };
    113 
    114 const int32_t kHvacPowerProperties[] = {
    115     toInt(VehicleProperty::HVAC_FAN_SPEED),
    116     toInt(VehicleProperty::HVAC_FAN_DIRECTION),
    117 };
    118 
    119 struct ConfigDeclaration {
    120     VehiclePropConfig config;
    121 
    122     /* This value will be used as an initial value for the property. If this field is specified for
    123      * property that supports multiple areas then it will be used for all areas unless particular
    124      * area is overridden in initialAreaValue field. */
    125     VehiclePropValue::RawValue initialValue;
    126     /* Use initialAreaValues if it is necessary to specify different values per each area. */
    127     std::map<int32_t, VehiclePropValue::RawValue> initialAreaValues;
    128 };
    129 
    130 const ConfigDeclaration kVehicleProperties[]{
    131     {.config =
    132          {
    133              .prop = toInt(VehicleProperty::INFO_FUEL_CAPACITY),
    134              .access = VehiclePropertyAccess::READ,
    135              .changeMode = VehiclePropertyChangeMode::STATIC,
    136          },
    137      .initialValue = {.floatValues = {15000}}},
    138 
    139     {.config =
    140          {
    141              .prop = toInt(VehicleProperty::INFO_FUEL_TYPE),
    142              .access = VehiclePropertyAccess::READ,
    143              .changeMode = VehiclePropertyChangeMode::STATIC,
    144          },
    145      .initialValue = {.int32Values = {1}}},
    146 
    147     {.config =
    148          {
    149              .prop = toInt(VehicleProperty::INFO_EV_BATTERY_CAPACITY),
    150              .access = VehiclePropertyAccess::READ,
    151              .changeMode = VehiclePropertyChangeMode::STATIC,
    152          },
    153      .initialValue = {.floatValues = {150000}}},
    154 
    155     {.config =
    156          {
    157              .prop = toInt(VehicleProperty::INFO_EV_CONNECTOR_TYPE),
    158              .access = VehiclePropertyAccess::READ,
    159              .changeMode = VehiclePropertyChangeMode::STATIC,
    160          },
    161      .initialValue = {.int32Values = {1}}},
    162 
    163     {.config =
    164          {
    165              .prop = toInt(VehicleProperty::INFO_MAKE),
    166              .access = VehiclePropertyAccess::READ,
    167              .changeMode = VehiclePropertyChangeMode::STATIC,
    168          },
    169      .initialValue = {.stringValue = "Toy Vehicle"}},
    170     {.config =
    171          {
    172              .prop = toInt(VehicleProperty::PERF_VEHICLE_SPEED),
    173              .access = VehiclePropertyAccess::READ,
    174              .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    175              .minSampleRate = 1.0f,
    176              .maxSampleRate = 10.0f,
    177          },
    178      .initialValue = {.floatValues = {0.0f}}},
    179 
    180     {.config =
    181          {
    182              .prop = toInt(VehicleProperty::PERF_ODOMETER),
    183              .access = VehiclePropertyAccess::READ,
    184              .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    185          },
    186      .initialValue = {.floatValues = {0.0f}}},
    187 
    188     {
    189         .config =
    190             {
    191                 .prop = toInt(VehicleProperty::ENGINE_RPM),
    192                 .access = VehiclePropertyAccess::READ,
    193                 .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
    194                 .minSampleRate = 1.0f,
    195                 .maxSampleRate = 10.0f,
    196             },
    197         .initialValue = {.floatValues = {0.0f}},
    198     },
    199 
    200     {.config =
    201          {
    202              .prop = toInt(VehicleProperty::FUEL_LEVEL),
    203              .access = VehiclePropertyAccess::READ,
    204              .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    205          },
    206      .initialValue = {.floatValues = {15000}}},
    207 
    208     {.config =
    209          {
    210              .prop = toInt(VehicleProperty::FUEL_DOOR_OPEN),
    211              .access = VehiclePropertyAccess::READ,
    212              .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    213          },
    214      .initialValue = {.int32Values = {0}}},
    215 
    216     {.config =
    217          {
    218              .prop = toInt(VehicleProperty::EV_BATTERY_LEVEL),
    219              .access = VehiclePropertyAccess::READ,
    220              .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    221          },
    222      .initialValue = {.floatValues = {150000}}},
    223 
    224     {.config =
    225          {
    226              .prop = toInt(VehicleProperty::EV_CHARGE_PORT_OPEN),
    227              .access = VehiclePropertyAccess::READ,
    228              .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    229          },
    230      .initialValue = {.int32Values = {0}}},
    231 
    232     {.config =
    233          {
    234              .prop = toInt(VehicleProperty::EV_CHARGE_PORT_CONNECTED),
    235              .access = VehiclePropertyAccess::READ,
    236              .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    237          },
    238      .initialValue = {.int32Values = {0}}},
    239 
    240     {.config =
    241          {
    242              .prop = toInt(VehicleProperty::EV_BATTERY_INSTANTANEOUS_CHARGE_RATE),
    243              .access = VehiclePropertyAccess::READ,
    244              .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    245          },
    246      .initialValue = {.floatValues = {0}}},
    247 
    248     {.config =
    249          {
    250              .prop = toInt(VehicleProperty::CURRENT_GEAR),
    251              .access = VehiclePropertyAccess::READ,
    252              .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    253          },
    254      .initialValue = {.int32Values = {toInt(VehicleGear::GEAR_PARK)}}},
    255 
    256     {.config =
    257          {
    258              .prop = toInt(VehicleProperty::PARKING_BRAKE_ON),
    259              .access = VehiclePropertyAccess::READ,
    260              .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    261          },
    262      .initialValue = {.int32Values = {1}}},
    263 
    264     {.config =
    265          {
    266              .prop = toInt(VehicleProperty::FUEL_LEVEL_LOW),
    267              .access = VehiclePropertyAccess::READ,
    268              .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    269          },
    270      .initialValue = {.int32Values = {0}}},
    271 
    272     {.config =
    273          {
    274              .prop = toInt(VehicleProperty::HW_KEY_INPUT),
    275              .access = VehiclePropertyAccess::READ,
    276              .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    277          },
    278      .initialValue = {.int32Values = {0, 0, 0}}},
    279 
    280     {.config = {.prop = toInt(VehicleProperty::HVAC_POWER_ON),
    281                 .access = VehiclePropertyAccess::READ_WRITE,
    282                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    283                 .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}},
    284                 // TODO(bryaneyler): Ideally, this is generated dynamically from
    285                 // kHvacPowerProperties.
    286                 .configArray =
    287                     {
    288                         0x12400500,  // HVAC_FAN_SPEED
    289                         0x12400501   // HVAC_FAN_DIRECTION
    290                     }},
    291      .initialValue = {.int32Values = {1}}},
    292 
    293     {
    294         .config = {.prop = toInt(VehicleProperty::HVAC_DEFROSTER),
    295                    .access = VehiclePropertyAccess::READ_WRITE,
    296                    .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    297                    .areaConfigs =
    298                        {VehicleAreaConfig{.areaId = toInt(VehicleAreaWindow::FRONT_WINDSHIELD)},
    299                         VehicleAreaConfig{.areaId = toInt(VehicleAreaWindow::REAR_WINDSHIELD)}}},
    300         .initialValue = {.int32Values = {0}}  // Will be used for all areas.
    301     },
    302 
    303     {.config = {.prop = toInt(VehicleProperty::HVAC_MAX_DEFROST_ON),
    304                 .access = VehiclePropertyAccess::READ_WRITE,
    305                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    306                 .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
    307      .initialValue = {.int32Values = {0}}},
    308 
    309     {.config = {.prop = toInt(VehicleProperty::HVAC_RECIRC_ON),
    310                 .access = VehiclePropertyAccess::READ_WRITE,
    311                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    312                 .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
    313      .initialValue = {.int32Values = {1}}},
    314 
    315     {.config = {.prop = toInt(VehicleProperty::HVAC_AUTO_RECIRC_ON),
    316                 .access = VehiclePropertyAccess::READ_WRITE,
    317                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    318                 .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
    319      .initialValue = {.int32Values = {0}}},
    320 
    321     {.config = {.prop = toInt(VehicleProperty::HVAC_AC_ON),
    322                 .access = VehiclePropertyAccess::READ_WRITE,
    323                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    324                 .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
    325      .initialValue = {.int32Values = {1}}},
    326 
    327     {.config = {.prop = toInt(VehicleProperty::HVAC_MAX_AC_ON),
    328                 .access = VehiclePropertyAccess::READ_WRITE,
    329                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    330                 .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
    331      .initialValue = {.int32Values = {0}}},
    332 
    333     {.config = {.prop = toInt(VehicleProperty::HVAC_AUTO_ON),
    334                 .access = VehiclePropertyAccess::READ_WRITE,
    335                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    336                 .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
    337      .initialValue = {.int32Values = {1}}},
    338 
    339     {.config = {.prop = toInt(VehicleProperty::HVAC_DUAL_ON),
    340                 .access = VehiclePropertyAccess::READ_WRITE,
    341                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    342                 .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
    343      .initialValue = {.int32Values = {0}}},
    344 
    345     {.config = {.prop = toInt(VehicleProperty::HVAC_FAN_SPEED),
    346                 .access = VehiclePropertyAccess::READ_WRITE,
    347                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    348                 .areaConfigs = {VehicleAreaConfig{
    349                     .areaId = HVAC_ALL, .minInt32Value = 1, .maxInt32Value = 7}}},
    350      .initialValue = {.int32Values = {3}}},
    351 
    352     {.config = {.prop = toInt(VehicleProperty::HVAC_FAN_DIRECTION),
    353                 .access = VehiclePropertyAccess::READ_WRITE,
    354                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    355                 .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
    356      .initialValue = {.int32Values = {toInt(VehicleHvacFanDirection::FACE)}}},
    357 
    358     {.config = {.prop = toInt(VehicleProperty::HVAC_STEERING_WHEEL_HEAT),
    359                 .access = VehiclePropertyAccess::READ_WRITE,
    360                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    361                 .areaConfigs = {VehicleAreaConfig{
    362                     .areaId = (0), .minInt32Value = -2, .maxInt32Value = 2}}},
    363      .initialValue = {.int32Values = {0}}},  // +ve values for heating and -ve for cooling
    364 
    365     {.config = {.prop = toInt(VehicleProperty::HVAC_TEMPERATURE_SET),
    366                 .access = VehiclePropertyAccess::READ_WRITE,
    367                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    368                 .areaConfigs = {VehicleAreaConfig{
    369                                     .areaId = HVAC_LEFT, .minFloatValue = 16, .maxFloatValue = 32,
    370                                 },
    371                                 VehicleAreaConfig{
    372                                     .areaId = HVAC_RIGHT, .minFloatValue = 16, .maxFloatValue = 32,
    373                                 }}},
    374      .initialAreaValues = {{HVAC_LEFT, {.floatValues = {16}}},
    375                            {HVAC_RIGHT, {.floatValues = {20}}}}},
    376 
    377     {.config =
    378          {
    379              .prop = toInt(VehicleProperty::ENV_OUTSIDE_TEMPERATURE),
    380              .access = VehiclePropertyAccess::READ,
    381              // TODO(bryaneyler): Support ON_CHANGE as well.
    382              .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
    383              .minSampleRate = 1.0f,
    384              .maxSampleRate = 2.0f,
    385          },
    386      .initialValue = {.floatValues = {25.0f}}},
    387 
    388     {.config = {.prop = toInt(VehicleProperty::HVAC_TEMPERATURE_DISPLAY_UNITS),
    389                 .access = VehiclePropertyAccess::READ_WRITE,
    390                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    391                 .areaConfigs = {VehicleAreaConfig{.areaId = (0)}}},
    392      .initialValue = {.int32Values = {(int)VehicleUnit::FAHRENHEIT}}},
    393 
    394     {.config =
    395          {
    396              .prop = toInt(VehicleProperty::NIGHT_MODE),
    397              .access = VehiclePropertyAccess::READ,
    398              .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    399          },
    400      .initialValue = {.int32Values = {0}}},
    401 
    402     {.config =
    403          {
    404              .prop = toInt(VehicleProperty::GEAR_SELECTION),
    405              .access = VehiclePropertyAccess::READ,
    406              .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    407          },
    408      .initialValue = {.int32Values = {toInt(VehicleGear::GEAR_PARK)}}},
    409 
    410     {.config =
    411          {
    412              .prop = toInt(VehicleProperty::IGNITION_STATE),
    413              .access = VehiclePropertyAccess::READ,
    414              .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    415          },
    416      .initialValue = {.int32Values = {toInt(VehicleIgnitionState::ON)}}},
    417 
    418     {.config =
    419          {
    420              .prop = toInt(VehicleProperty::ENGINE_OIL_LEVEL),
    421              .access = VehiclePropertyAccess::READ,
    422              .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    423          },
    424      .initialValue = {.int32Values = {toInt(VehicleOilLevel::NORMAL)}}},
    425 
    426     {.config =
    427          {
    428              .prop = toInt(VehicleProperty::ENGINE_OIL_TEMP),
    429              .access = VehiclePropertyAccess::READ,
    430              .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
    431              .minSampleRate = 0.1,  // 0.1 Hz, every 10 seconds
    432              .maxSampleRate = 10,   // 10 Hz, every 100 ms
    433          },
    434      .initialValue = {.floatValues = {101.0f}}},
    435 
    436     {
    437         .config =
    438             {
    439                 .prop = kGenerateFakeDataControllingProperty,
    440                 .access = VehiclePropertyAccess::WRITE,
    441                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    442             },
    443     },
    444 
    445     {.config = {.prop = toInt(VehicleProperty::DOOR_LOCK),
    446                 .access = VehiclePropertyAccess::READ,
    447                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    448                 .areaConfigs = {VehicleAreaConfig{.areaId = DOOR_1_LEFT},
    449                                 VehicleAreaConfig{.areaId = DOOR_1_RIGHT}}},
    450      .initialAreaValues = {{DOOR_1_LEFT, {.int32Values = {1}}},
    451                            {DOOR_1_RIGHT, {.int32Values = {1}}}}},
    452 
    453     {.config =
    454          {
    455              .prop = WHEEL_TICK,
    456              .access = VehiclePropertyAccess::READ,
    457              .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
    458              .configArray = {ALL_WHEELS, 50000, 50000, 50000, 50000},
    459              .minSampleRate = 1.0f,
    460              .maxSampleRate = 10.0f,
    461          },
    462      .initialValue = {.int64Values = {0, 100000, 200000, 300000, 400000}}},
    463 
    464     {.config = {.prop = ABS_ACTIVE,
    465                 .access = VehiclePropertyAccess::READ,
    466                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE},
    467      .initialValue = {.int32Values = {0}}},
    468 
    469     {.config = {.prop = TRACTION_CONTROL_ACTIVE,
    470                 .access = VehiclePropertyAccess::READ,
    471                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE},
    472      .initialValue = {.int32Values = {0}}},
    473 
    474     {.config = {.prop = toInt(VehicleProperty::AP_POWER_STATE_REQ),
    475                 .access = VehiclePropertyAccess::READ,
    476                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    477                 .configArray = {3}},
    478      .initialValue = {.int32Values = {toInt(VehicleApPowerStateReq::ON_FULL), 0}}},
    479 
    480     {.config = {.prop = toInt(VehicleProperty::AP_POWER_STATE_REPORT),
    481                 .access = VehiclePropertyAccess::WRITE,
    482                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE},
    483      .initialValue = {.int32Values = {toInt(VehicleApPowerStateReport::BOOT_COMPLETE), 0}}},
    484 
    485     {.config = {.prop = toInt(VehicleProperty::DISPLAY_BRIGHTNESS),
    486                 .access = VehiclePropertyAccess::READ_WRITE,
    487                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    488                 .areaConfigs = {VehicleAreaConfig{.minInt32Value = 0, .maxInt32Value = 100}}},
    489      .initialValue = {.int32Values = {100}}},
    490 
    491     {.config = {.prop = toInt(VehicleProperty::AP_POWER_BOOTUP_REASON),
    492                 .access = VehiclePropertyAccess::READ,
    493                 .changeMode = VehiclePropertyChangeMode::STATIC},
    494      .initialValue = {.int32Values = {toInt(VehicleApPowerBootupReason::USER_POWER_ON)}}},
    495 
    496     {
    497         .config = {.prop = OBD2_LIVE_FRAME,
    498                    .access = VehiclePropertyAccess::READ,
    499                    .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    500                    .configArray = {0, 0}},
    501     },
    502 
    503     {
    504         .config = {.prop = OBD2_FREEZE_FRAME,
    505                    .access = VehiclePropertyAccess::READ,
    506                    .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    507                    .configArray = {0, 0}},
    508     },
    509 
    510     {
    511         .config = {.prop = OBD2_FREEZE_FRAME_INFO,
    512                    .access = VehiclePropertyAccess::READ,
    513                    .changeMode = VehiclePropertyChangeMode::ON_CHANGE},
    514     },
    515 
    516     {
    517         .config = {.prop = OBD2_FREEZE_FRAME_CLEAR,
    518                    .access = VehiclePropertyAccess::WRITE,
    519                    .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
    520                    .configArray = {1}},
    521     },
    522 
    523     {.config = {.prop = VEHICLE_MAP_SERVICE,
    524                 .access = VehiclePropertyAccess::READ_WRITE,
    525                 .changeMode = VehiclePropertyChangeMode::ON_CHANGE}},
    526 };
    527 
    528 }  // impl
    529 
    530 }  // namespace V2_0
    531 }  // namespace vehicle
    532 }  // namespace automotive
    533 }  // namespace hardware
    534 }  // namespace android
    535 
    536 #endif // android_hardware_automotive_vehicle_V2_0_impl_DefaultConfig_H_
    537