Migrate VHAL default config to AIDL.
Test: atest VehicleHalDefaultConfigTest
Bug: 199337732
Change-Id: I9d96c82598427a597245d73a15c22eccff672250
diff --git a/automotive/vehicle/TEST_MAPPING b/automotive/vehicle/TEST_MAPPING
index 15569f6..4820fd4 100644
--- a/automotive/vehicle/TEST_MAPPING
+++ b/automotive/vehicle/TEST_MAPPING
@@ -1,10 +1,13 @@
{
"presubmit": [
{
- "name": "VehicleHalVehicleUtilsTest"
+ "name": "VehicleHalAidlHidlCompatibilityTest"
},
{
- "name": "VehicleHalAidlHidlCompatibilityTest"
+ "name": "VehicleHalDefaultConfigTest"
+ },
+ {
+ "name": "VehicleHalVehicleUtilsTest"
}
]
}
diff --git a/automotive/vehicle/aidl/impl/default_config/Android.bp b/automotive/vehicle/aidl/impl/default_config/Android.bp
new file mode 100644
index 0000000..0feaf23
--- /dev/null
+++ b/automotive/vehicle/aidl/impl/default_config/Android.bp
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+cc_library_headers {
+ name: "VehicleHalDefaultConfig",
+ vendor: true,
+ local_include_dirs: ["include"],
+ export_include_dirs: ["include"],
+ defaults: ["VehicleHalDefaults"],
+ static_libs: ["VehicleHalUtils"],
+ header_libs: ["VehicleHalTestUtilHeaders"],
+ export_static_lib_headers: ["VehicleHalUtils"],
+ export_header_lib_headers: ["VehicleHalTestUtilHeaders"],
+}
diff --git a/automotive/vehicle/aidl/impl/default_config/include/DefaultConfig.h b/automotive/vehicle/aidl/impl/default_config/include/DefaultConfig.h
new file mode 100644
index 0000000..411075d
--- /dev/null
+++ b/automotive/vehicle/aidl/impl/default_config/include/DefaultConfig.h
@@ -0,0 +1,1286 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef android_hardware_automotive_vehicle_aidl_impl_default_config_include_DefaultConfig_H_
+#define android_hardware_automotive_vehicle_aidl_impl_default_config_include_DefaultConfig_H_
+
+#include <PropertyUtils.h>
+#include <TestPropertyUtils.h>
+#include <VehicleHalTypes.h>
+
+#include <map>
+
+namespace android {
+namespace hardware {
+namespace automotive {
+namespace vehicle {
+
+// Types used in configs, not to be exposed as public API.
+namespace defaultconfig_impl {
+
+using ::aidl::android::hardware::automotive::vehicle::EvConnectorType;
+using ::aidl::android::hardware::automotive::vehicle::EvsServiceState;
+using ::aidl::android::hardware::automotive::vehicle::EvsServiceType;
+using ::aidl::android::hardware::automotive::vehicle::FuelType;
+using ::aidl::android::hardware::automotive::vehicle::VehicleApPowerStateReport;
+using ::aidl::android::hardware::automotive::vehicle::VehicleApPowerStateReq;
+using ::aidl::android::hardware::automotive::vehicle::VehicleAreaConfig;
+using ::aidl::android::hardware::automotive::vehicle::VehicleAreaWindow;
+using ::aidl::android::hardware::automotive::vehicle::VehicleGear;
+using ::aidl::android::hardware::automotive::vehicle::VehicleHvacFanDirection;
+using ::aidl::android::hardware::automotive::vehicle::VehicleIgnitionState;
+using ::aidl::android::hardware::automotive::vehicle::VehicleOilLevel;
+using ::aidl::android::hardware::automotive::vehicle::VehiclePropConfig;
+using ::aidl::android::hardware::automotive::vehicle::VehicleProperty;
+using ::aidl::android::hardware::automotive::vehicle::VehiclePropertyAccess;
+using ::aidl::android::hardware::automotive::vehicle::VehiclePropertyChangeMode;
+using ::aidl::android::hardware::automotive::vehicle::VehicleSeatOccupancyState;
+using ::aidl::android::hardware::automotive::vehicle::VehicleTurnSignal;
+using ::aidl::android::hardware::automotive::vehicle::VehicleUnit;
+using ::aidl::android::hardware::automotive::vehicle::VehicleVendorPermission;
+
+} // namespace defaultconfig_impl
+
+struct ConfigDeclaration {
+ defaultconfig_impl::VehiclePropConfig config;
+
+ // This value will be used as an initial value for the property. If this field is specified for
+ // property that supports multiple areas then it will be used for all areas unless particular
+ // area is overridden in initialAreaValue field.
+ ::aidl::android::hardware::automotive::vehicle::RawPropValues initialValue;
+ // Use initialAreaValues if it is necessary to specify different values per each area.
+ std::map<int32_t, ::aidl::android::hardware::automotive::vehicle::RawPropValues>
+ initialAreaValues;
+};
+
+const ConfigDeclaration kVehicleProperties[]{
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::INFO_FUEL_CAPACITY),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::STATIC,
+ },
+ .initialValue = {.floatValues = {15000.0f}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::INFO_FUEL_TYPE),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::STATIC,
+ },
+ .initialValue = {.int32Values = {toInt(
+ defaultconfig_impl::FuelType::FUEL_TYPE_UNLEADED)}}},
+
+ {.config =
+ {
+ .prop = toInt(
+ defaultconfig_impl::VehicleProperty::INFO_EV_BATTERY_CAPACITY),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::STATIC,
+ },
+ .initialValue = {.floatValues = {150000.0f}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::INFO_EV_CONNECTOR_TYPE),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::STATIC,
+ },
+ .initialValue = {.int32Values = {toInt(
+ defaultconfig_impl::EvConnectorType::IEC_TYPE_1_AC)}}},
+
+ {.config =
+ {
+ .prop = toInt(
+ defaultconfig_impl::VehicleProperty::INFO_FUEL_DOOR_LOCATION),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::STATIC,
+ },
+ .initialValue = {.int32Values = {FUEL_DOOR_REAR_LEFT}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::INFO_EV_PORT_LOCATION),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::STATIC,
+ },
+ .initialValue = {.int32Values = {CHARGE_PORT_FRONT_LEFT}}},
+
+ {.config =
+ {
+ .prop = toInt(
+ defaultconfig_impl::VehicleProperty::INFO_MULTI_EV_PORT_LOCATIONS),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::STATIC,
+ },
+ .initialValue = {.int32Values = {CHARGE_PORT_FRONT_LEFT, CHARGE_PORT_REAR_LEFT}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::INFO_MAKE),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::STATIC,
+ },
+ .initialValue = {.stringValue = "Toy Vehicle"}},
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::INFO_MODEL),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::STATIC,
+ },
+ .initialValue = {.stringValue = "Speedy Model"}},
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::INFO_MODEL_YEAR),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::STATIC,
+ },
+ .initialValue = {.int32Values = {2020}}},
+ {.config =
+ {
+ .prop = toInt(
+ defaultconfig_impl::VehicleProperty::INFO_EXTERIOR_DIMENSIONS),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::STATIC,
+ },
+ .initialValue = {.int32Values = {1776, 4950, 2008, 2140, 2984, 1665, 1667, 11800}}},
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::PERF_VEHICLE_SPEED),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::CONTINUOUS,
+ .minSampleRate = 1.0f,
+ .maxSampleRate = 10.0f,
+ },
+ .initialValue = {.floatValues = {0.0f}}},
+
+ {.config =
+ {
+ .prop = toInt(
+ defaultconfig_impl::VehicleProperty::VEHICLE_SPEED_DISPLAY_UNITS),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .configArray =
+ {toInt(defaultconfig_impl::VehicleUnit::METER_PER_SEC),
+ toInt(defaultconfig_impl::VehicleUnit::MILES_PER_HOUR),
+ toInt(defaultconfig_impl::VehicleUnit::KILOMETERS_PER_HOUR)},
+ },
+ .initialValue = {.int32Values = {toInt(
+ defaultconfig_impl::VehicleUnit::KILOMETERS_PER_HOUR)}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::SEAT_OCCUPANCY),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .areaConfigs =
+ {defaultconfig_impl::VehicleAreaConfig{.areaId = (SEAT_1_LEFT)},
+ defaultconfig_impl::VehicleAreaConfig{.areaId = (SEAT_1_RIGHT)}},
+ },
+ .initialAreaValues =
+ {{SEAT_1_LEFT,
+ {.int32Values = {toInt(defaultconfig_impl::VehicleSeatOccupancyState::VACANT)}}},
+ {SEAT_1_RIGHT,
+ {.int32Values = {toInt(
+ defaultconfig_impl::VehicleSeatOccupancyState::VACANT)}}}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::INFO_DRIVER_SEAT),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::STATIC,
+ // this was a zoned property on an old vhal, but it is meant to be global
+ .areaConfigs = {defaultconfig_impl::VehicleAreaConfig{.areaId = (0)}},
+ },
+ .initialValue = {.int32Values = {SEAT_1_LEFT}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::PERF_ODOMETER),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::CONTINUOUS,
+ .minSampleRate = 1.0f,
+ .maxSampleRate = 10.0f,
+ },
+ .initialValue = {.floatValues = {0.0f}}},
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::PERF_STEERING_ANGLE),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::CONTINUOUS,
+ .minSampleRate = 1.0f,
+ .maxSampleRate = 10.0f,
+ },
+ .initialValue = {.floatValues = {0.0f}}},
+ {.config =
+ {
+ .prop = toInt(
+ defaultconfig_impl::VehicleProperty::PERF_REAR_STEERING_ANGLE),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::CONTINUOUS,
+ .minSampleRate = 1.0f,
+ .maxSampleRate = 10.0f,
+ },
+ .initialValue = {.floatValues = {0.0f}}},
+ {
+ .config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::ENGINE_RPM),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode =
+ defaultconfig_impl::VehiclePropertyChangeMode::CONTINUOUS,
+ .minSampleRate = 1.0f,
+ .maxSampleRate = 10.0f,
+ },
+ .initialValue = {.floatValues = {0.0f}},
+ },
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::FUEL_LEVEL),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::CONTINUOUS,
+ .minSampleRate = 1.0f,
+ .maxSampleRate = 100.0f,
+ },
+ .initialValue = {.floatValues = {15000.0f}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::FUEL_DOOR_OPEN),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ .initialValue = {.int32Values = {0}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::EV_BATTERY_LEVEL),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::CONTINUOUS,
+ .minSampleRate = 1.0f,
+ .maxSampleRate = 100.0f,
+ },
+ .initialValue = {.floatValues = {150000.0f}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::EV_CHARGE_PORT_OPEN),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ .initialValue = {.int32Values = {0}}},
+
+ {.config =
+ {
+ .prop = toInt(
+ defaultconfig_impl::VehicleProperty::EV_CHARGE_PORT_CONNECTED),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ .initialValue = {.int32Values = {0}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::
+ EV_BATTERY_INSTANTANEOUS_CHARGE_RATE),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::CONTINUOUS,
+ .minSampleRate = 1.0f,
+ .maxSampleRate = 10.0f,
+ },
+ .initialValue = {.floatValues = {0.0f}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::RANGE_REMAINING),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::CONTINUOUS,
+ .minSampleRate = 1.0f,
+ .maxSampleRate = 2.0f,
+ },
+ .initialValue = {.floatValues = {50000.0f}}}, // units in meters
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::TIRE_PRESSURE),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::CONTINUOUS,
+ .areaConfigs = {defaultconfig_impl::VehicleAreaConfig{
+ .areaId = WHEEL_FRONT_LEFT,
+ .minFloatValue = 193.0f,
+ .maxFloatValue = 300.0f,
+ },
+ defaultconfig_impl::VehicleAreaConfig{
+ .areaId = WHEEL_FRONT_RIGHT,
+ .minFloatValue = 193.0f,
+ .maxFloatValue = 300.0f,
+ },
+ defaultconfig_impl::VehicleAreaConfig{
+ .areaId = WHEEL_REAR_LEFT,
+ .minFloatValue = 193.0f,
+ .maxFloatValue = 300.0f,
+ },
+ defaultconfig_impl::VehicleAreaConfig{
+ .areaId = WHEEL_REAR_RIGHT,
+ .minFloatValue = 193.0f,
+ .maxFloatValue = 300.0f,
+ }},
+ .minSampleRate = 1.0f,
+ .maxSampleRate = 2.0f,
+ },
+ .initialValue = {.floatValues = {200.0f}}}, // units in kPa
+
+ {.config =
+ {
+ .prop = toInt(
+ defaultconfig_impl::VehicleProperty::CRITICALLY_LOW_TIRE_PRESSURE),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::STATIC,
+ },
+ .initialAreaValues = {{WHEEL_FRONT_LEFT, {.floatValues = {137.0f}}},
+ {WHEEL_FRONT_RIGHT, {.floatValues = {137.0f}}},
+ {WHEEL_REAR_RIGHT, {.floatValues = {137.0f}}},
+ {WHEEL_REAR_LEFT, {.floatValues = {137.0f}}}}},
+
+ {.config =
+ {
+ .prop = toInt(
+ defaultconfig_impl::VehicleProperty::TIRE_PRESSURE_DISPLAY_UNITS),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .configArray = {toInt(defaultconfig_impl::VehicleUnit::KILOPASCAL),
+ toInt(defaultconfig_impl::VehicleUnit::PSI),
+ toInt(defaultconfig_impl::VehicleUnit::BAR)},
+ },
+ .initialValue = {.int32Values = {toInt(defaultconfig_impl::VehicleUnit::PSI)}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::CURRENT_GEAR),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .configArray = {toInt(defaultconfig_impl::VehicleGear::GEAR_PARK),
+ toInt(defaultconfig_impl::VehicleGear::GEAR_NEUTRAL),
+ toInt(defaultconfig_impl::VehicleGear::GEAR_REVERSE),
+ toInt(defaultconfig_impl::VehicleGear::GEAR_1),
+ toInt(defaultconfig_impl::VehicleGear::GEAR_2),
+ toInt(defaultconfig_impl::VehicleGear::GEAR_3),
+ toInt(defaultconfig_impl::VehicleGear::GEAR_4),
+ toInt(defaultconfig_impl::VehicleGear::GEAR_5)},
+ },
+ .initialValue = {.int32Values = {toInt(defaultconfig_impl::VehicleGear::GEAR_PARK)}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::PARKING_BRAKE_ON),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ .initialValue = {.int32Values = {1}}},
+
+ {.config =
+ {
+ .prop = toInt(
+ defaultconfig_impl::VehicleProperty::PARKING_BRAKE_AUTO_APPLY),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ .initialValue = {.int32Values = {1}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::FUEL_LEVEL_LOW),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ .initialValue = {.int32Values = {0}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::HW_KEY_INPUT),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ .initialValue = {.int32Values = {0, 0, 0}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::HW_ROTARY_INPUT),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ .initialValue = {.int32Values = {0, 0, 0}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::HW_CUSTOM_INPUT),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .configArray = {0, 0, 0, 3, 0, 0, 0, 0, 0},
+ },
+ .initialValue =
+ {
+ .int32Values = {0, 0, 0},
+ }},
+
+ {.config = {.prop = toInt(defaultconfig_impl::VehicleProperty::HVAC_POWER_ON),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .areaConfigs = {defaultconfig_impl::VehicleAreaConfig{.areaId = HVAC_ALL}},
+ // TODO(bryaneyler): Ideally, this is generated dynamically from
+ // kHvacPowerProperties.
+ .configArray =
+ {toInt(defaultconfig_impl::VehicleProperty::HVAC_FAN_SPEED),
+ toInt(defaultconfig_impl::VehicleProperty::HVAC_FAN_DIRECTION)}},
+ .initialValue = {.int32Values = {1}}},
+
+ {
+ .config = {.prop = toInt(defaultconfig_impl::VehicleProperty::HVAC_DEFROSTER),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .areaConfigs =
+ {defaultconfig_impl::VehicleAreaConfig{
+ .areaId = toInt(defaultconfig_impl::VehicleAreaWindow::
+ FRONT_WINDSHIELD)},
+ defaultconfig_impl::VehicleAreaConfig{
+ .areaId = toInt(defaultconfig_impl::VehicleAreaWindow::
+ REAR_WINDSHIELD)}}},
+ .initialValue = {.int32Values = {0}} // Will be used for all areas.
+ },
+ {
+ .config = {.prop = toInt(
+ defaultconfig_impl::VehicleProperty::HVAC_ELECTRIC_DEFROSTER_ON),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .areaConfigs =
+ {defaultconfig_impl::VehicleAreaConfig{
+ .areaId = toInt(defaultconfig_impl::VehicleAreaWindow::
+ FRONT_WINDSHIELD)},
+ defaultconfig_impl::VehicleAreaConfig{
+ .areaId = toInt(defaultconfig_impl::VehicleAreaWindow::
+ REAR_WINDSHIELD)}}},
+ .initialValue = {.int32Values = {0}} // Will be used for all areas.
+ },
+
+ {.config = {.prop = toInt(defaultconfig_impl::VehicleProperty::HVAC_MAX_DEFROST_ON),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .areaConfigs = {defaultconfig_impl::VehicleAreaConfig{.areaId = HVAC_ALL}}},
+ .initialValue = {.int32Values = {0}}},
+
+ {.config = {.prop = toInt(defaultconfig_impl::VehicleProperty::HVAC_RECIRC_ON),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .areaConfigs = {defaultconfig_impl::VehicleAreaConfig{.areaId = HVAC_ALL}}},
+ .initialValue = {.int32Values = {1}}},
+
+ {.config = {.prop = toInt(defaultconfig_impl::VehicleProperty::HVAC_AUTO_RECIRC_ON),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .areaConfigs = {defaultconfig_impl::VehicleAreaConfig{.areaId = HVAC_ALL}}},
+ .initialValue = {.int32Values = {0}}},
+
+ {.config = {.prop = toInt(defaultconfig_impl::VehicleProperty::HVAC_AC_ON),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .areaConfigs = {defaultconfig_impl::VehicleAreaConfig{.areaId = HVAC_ALL}}},
+ .initialValue = {.int32Values = {1}}},
+
+ {.config = {.prop = toInt(defaultconfig_impl::VehicleProperty::HVAC_MAX_AC_ON),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .areaConfigs = {defaultconfig_impl::VehicleAreaConfig{.areaId = HVAC_ALL}}},
+ .initialValue = {.int32Values = {0}}},
+
+ {.config = {.prop = toInt(defaultconfig_impl::VehicleProperty::HVAC_AUTO_ON),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .areaConfigs = {defaultconfig_impl::VehicleAreaConfig{.areaId = HVAC_ALL}}},
+ .initialValue = {.int32Values = {1}}},
+
+ {.config = {.prop = toInt(defaultconfig_impl::VehicleProperty::HVAC_DUAL_ON),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .areaConfigs = {defaultconfig_impl::VehicleAreaConfig{.areaId = HVAC_ALL}}},
+ .initialValue = {.int32Values = {0}}},
+
+ {.config = {.prop = toInt(defaultconfig_impl::VehicleProperty::HVAC_FAN_SPEED),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .areaConfigs = {defaultconfig_impl::VehicleAreaConfig{
+ .areaId = HVAC_ALL, .minInt32Value = 1, .maxInt32Value = 7}}},
+ .initialValue = {.int32Values = {3}}},
+
+ {.config = {.prop = toInt(defaultconfig_impl::VehicleProperty::HVAC_FAN_DIRECTION),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .areaConfigs = {defaultconfig_impl::VehicleAreaConfig{.areaId = HVAC_ALL}}},
+ .initialValue = {.int32Values = {toInt(
+ defaultconfig_impl::VehicleHvacFanDirection::FACE)}}},
+
+ {.config = {.prop = toInt(
+ defaultconfig_impl::VehicleProperty::HVAC_FAN_DIRECTION_AVAILABLE),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::STATIC,
+ .areaConfigs = {defaultconfig_impl::VehicleAreaConfig{.areaId = HVAC_ALL}}},
+ .initialValue = {.int32Values = {FAN_DIRECTION_FACE, FAN_DIRECTION_FLOOR,
+ FAN_DIRECTION_FACE | FAN_DIRECTION_FLOOR,
+ FAN_DIRECTION_DEFROST,
+ FAN_DIRECTION_FACE | FAN_DIRECTION_DEFROST,
+ FAN_DIRECTION_FLOOR | FAN_DIRECTION_DEFROST,
+ FAN_DIRECTION_FLOOR | FAN_DIRECTION_DEFROST |
+ FAN_DIRECTION_FACE}}},
+ {.config = {.prop = toInt(defaultconfig_impl::VehicleProperty::HVAC_SEAT_VENTILATION),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .areaConfigs = {defaultconfig_impl::VehicleAreaConfig{
+ .areaId = SEAT_1_LEFT,
+ .minInt32Value = 0,
+ .maxInt32Value = 3,
+ },
+ defaultconfig_impl::VehicleAreaConfig{
+ .areaId = SEAT_1_RIGHT,
+ .minInt32Value = 0,
+ .maxInt32Value = 3,
+ }}},
+ .initialValue =
+ {.int32Values = {0}}}, // 0 is off and +ve values indicate ventilation level.
+
+ {.config = {.prop = toInt(defaultconfig_impl::VehicleProperty::HVAC_STEERING_WHEEL_HEAT),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .areaConfigs = {defaultconfig_impl::VehicleAreaConfig{
+ .areaId = (0), .minInt32Value = -2, .maxInt32Value = 2}}},
+ .initialValue = {.int32Values = {0}}}, // +ve values for heating and -ve for cooling
+
+ {.config = {.prop = toInt(defaultconfig_impl::VehicleProperty::HVAC_SEAT_TEMPERATURE),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .areaConfigs = {defaultconfig_impl::VehicleAreaConfig{
+ .areaId = SEAT_1_LEFT,
+ .minInt32Value = -2,
+ .maxInt32Value = 2,
+ },
+ defaultconfig_impl::VehicleAreaConfig{
+ .areaId = SEAT_1_RIGHT,
+ .minInt32Value = -2,
+ .maxInt32Value = 2,
+ }}},
+ .initialValue = {.int32Values = {0}}}, // +ve values for heating and -ve for cooling
+
+ {.config = {.prop = toInt(defaultconfig_impl::VehicleProperty::HVAC_TEMPERATURE_SET),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .configArray = {160, 280, 5, 605, 825, 10},
+ .areaConfigs = {defaultconfig_impl::VehicleAreaConfig{
+ .areaId = HVAC_LEFT,
+ .minFloatValue = 16,
+ .maxFloatValue = 32,
+ },
+ defaultconfig_impl::VehicleAreaConfig{
+ .areaId = HVAC_RIGHT,
+ .minFloatValue = 16,
+ .maxFloatValue = 32,
+ }}},
+ .initialAreaValues = {{HVAC_LEFT, {.floatValues = {16}}},
+ {HVAC_RIGHT, {.floatValues = {20}}}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::
+ HVAC_TEMPERATURE_VALUE_SUGGESTION),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ .initialValue = {.floatValues = {66.2f, (float)defaultconfig_impl::VehicleUnit::FAHRENHEIT,
+ 19.0f, 66.5f}}},
+
+ {.config =
+ {
+ .prop = toInt(
+ defaultconfig_impl::VehicleProperty::ENV_OUTSIDE_TEMPERATURE),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ // TODO(bryaneyler): Support ON_CHANGE as well.
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::CONTINUOUS,
+ .minSampleRate = 1.0f,
+ .maxSampleRate = 2.0f,
+ },
+ .initialValue = {.floatValues = {25.0f}}},
+
+ {.config = {.prop = toInt(
+ defaultconfig_impl::VehicleProperty::HVAC_TEMPERATURE_DISPLAY_UNITS),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .configArray = {toInt(defaultconfig_impl::VehicleUnit::FAHRENHEIT),
+ toInt(defaultconfig_impl::VehicleUnit::CELSIUS)}},
+ .initialValue = {.int32Values = {toInt(defaultconfig_impl::VehicleUnit::FAHRENHEIT)}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::DISTANCE_DISPLAY_UNITS),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .areaConfigs = {defaultconfig_impl::VehicleAreaConfig{.areaId = (0)}},
+ .configArray = {toInt(defaultconfig_impl::VehicleUnit::KILOMETER),
+ toInt(defaultconfig_impl::VehicleUnit::MILE)},
+ },
+ .initialValue = {.int32Values = {toInt(defaultconfig_impl::VehicleUnit::MILE)}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::NIGHT_MODE),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ .initialValue = {.int32Values = {0}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::GEAR_SELECTION),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .configArray = {toInt(defaultconfig_impl::VehicleGear::GEAR_PARK),
+ toInt(defaultconfig_impl::VehicleGear::GEAR_NEUTRAL),
+ toInt(defaultconfig_impl::VehicleGear::GEAR_REVERSE),
+ toInt(defaultconfig_impl::VehicleGear::GEAR_DRIVE),
+ toInt(defaultconfig_impl::VehicleGear::GEAR_1),
+ toInt(defaultconfig_impl::VehicleGear::GEAR_2),
+ toInt(defaultconfig_impl::VehicleGear::GEAR_3),
+ toInt(defaultconfig_impl::VehicleGear::GEAR_4),
+ toInt(defaultconfig_impl::VehicleGear::GEAR_5)},
+ },
+ .initialValue = {.int32Values = {toInt(defaultconfig_impl::VehicleGear::GEAR_PARK)}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::TURN_SIGNAL_STATE),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ .initialValue = {.int32Values = {toInt(defaultconfig_impl::VehicleTurnSignal::NONE)}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::IGNITION_STATE),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ .initialValue = {.int32Values = {toInt(defaultconfig_impl::VehicleIgnitionState::ON)}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::ENGINE_OIL_LEVEL),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ .initialValue = {.int32Values = {toInt(defaultconfig_impl::VehicleOilLevel::NORMAL)}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::ENGINE_OIL_TEMP),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::CONTINUOUS,
+ .minSampleRate = 0.1, // 0.1 Hz, every 10 seconds
+ .maxSampleRate = 10, // 10 Hz, every 100 ms
+ },
+ .initialValue = {.floatValues = {101.0f}}},
+
+ {
+ .config = {.prop = kMixedTypePropertyForTest,
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .configArray = {1, 1, 0, 2, 0, 0, 1, 0, 0}},
+ .initialValue =
+ {
+ .int32Values = {1 /* indicate TRUE boolean value */, 2, 3},
+ .floatValues = {4.5f},
+ .stringValue = "MIXED property",
+ },
+ },
+
+ {.config = {.prop = toInt(defaultconfig_impl::VehicleProperty::DOOR_LOCK),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .areaConfigs = {defaultconfig_impl::VehicleAreaConfig{.areaId = DOOR_1_LEFT},
+ defaultconfig_impl::VehicleAreaConfig{.areaId = DOOR_1_RIGHT},
+ defaultconfig_impl::VehicleAreaConfig{.areaId = DOOR_2_LEFT},
+ defaultconfig_impl::VehicleAreaConfig{.areaId = DOOR_2_RIGHT}}},
+ .initialAreaValues = {{DOOR_1_LEFT, {.int32Values = {1}}},
+ {DOOR_1_RIGHT, {.int32Values = {1}}},
+ {DOOR_2_LEFT, {.int32Values = {1}}},
+ {DOOR_2_RIGHT, {.int32Values = {1}}}}},
+
+ {.config = {.prop = toInt(defaultconfig_impl::VehicleProperty::DOOR_POS),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .areaConfigs =
+ {defaultconfig_impl::VehicleAreaConfig{
+ .areaId = DOOR_1_LEFT, .minInt32Value = 0, .maxInt32Value = 1},
+ defaultconfig_impl::VehicleAreaConfig{.areaId = DOOR_1_RIGHT,
+ .minInt32Value = 0,
+ .maxInt32Value = 1},
+ defaultconfig_impl::VehicleAreaConfig{
+ .areaId = DOOR_2_LEFT, .minInt32Value = 0, .maxInt32Value = 1},
+ defaultconfig_impl::VehicleAreaConfig{.areaId = DOOR_2_RIGHT,
+ .minInt32Value = 0,
+ .maxInt32Value = 1},
+ defaultconfig_impl::VehicleAreaConfig{
+ .areaId = DOOR_REAR, .minInt32Value = 0, .maxInt32Value = 1}}},
+ .initialValue = {.int32Values = {0}}},
+
+ {.config = {.prop = toInt(defaultconfig_impl::VehicleProperty::WINDOW_LOCK),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .areaConfigs = {defaultconfig_impl::VehicleAreaConfig{
+ .areaId = WINDOW_1_RIGHT | WINDOW_2_LEFT | WINDOW_2_RIGHT}}},
+ .initialAreaValues = {{WINDOW_1_RIGHT | WINDOW_2_LEFT | WINDOW_2_RIGHT,
+ {.int32Values = {0}}}}},
+
+ {.config = {.prop = toInt(defaultconfig_impl::VehicleProperty::WINDOW_POS),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .areaConfigs = {defaultconfig_impl::VehicleAreaConfig{.areaId = WINDOW_1_LEFT,
+ .minInt32Value = 0,
+ .maxInt32Value = 10},
+ defaultconfig_impl::VehicleAreaConfig{.areaId = WINDOW_1_RIGHT,
+ .minInt32Value = 0,
+ .maxInt32Value = 10},
+ defaultconfig_impl::VehicleAreaConfig{.areaId = WINDOW_2_LEFT,
+ .minInt32Value = 0,
+ .maxInt32Value = 10},
+ defaultconfig_impl::VehicleAreaConfig{.areaId = WINDOW_2_RIGHT,
+ .minInt32Value = 0,
+ .maxInt32Value = 10},
+ defaultconfig_impl::VehicleAreaConfig{
+ .areaId = WINDOW_ROOF_TOP_1,
+ .minInt32Value = -10,
+ .maxInt32Value = 10}}},
+ .initialValue = {.int32Values = {0}}},
+
+ {.config =
+ {
+ .prop = WHEEL_TICK,
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::CONTINUOUS,
+ .configArray = {ALL_WHEELS, 50000, 50000, 50000, 50000},
+ .minSampleRate = 1.0f,
+ .maxSampleRate = 10.0f,
+ },
+ .initialValue = {.int64Values = {0, 100000, 200000, 300000, 400000}}},
+
+ {.config = {.prop = ABS_ACTIVE,
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE},
+ .initialValue = {.int32Values = {0}}},
+
+ {.config = {.prop = TRACTION_CONTROL_ACTIVE,
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE},
+ .initialValue = {.int32Values = {0}}},
+
+ {.config = {.prop = toInt(defaultconfig_impl::VehicleProperty::AP_POWER_STATE_REQ),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .configArray = {3}},
+ .initialValue = {.int32Values = {toInt(defaultconfig_impl::VehicleApPowerStateReq::ON),
+ 0}}},
+
+ {.config = {.prop = toInt(defaultconfig_impl::VehicleProperty::AP_POWER_STATE_REPORT),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE},
+ .initialValue =
+ {.int32Values =
+ {toInt(defaultconfig_impl::VehicleApPowerStateReport::WAIT_FOR_VHAL),
+ 0}}},
+
+ {.config = {.prop = toInt(defaultconfig_impl::VehicleProperty::DISPLAY_BRIGHTNESS),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .areaConfigs = {defaultconfig_impl::VehicleAreaConfig{.minInt32Value = 0,
+ .maxInt32Value = 100}}},
+ .initialValue = {.int32Values = {100}}},
+
+ {
+ .config = {.prop = OBD2_LIVE_FRAME,
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .configArray = {0, 0}},
+ },
+
+ {
+ .config = {.prop = OBD2_FREEZE_FRAME,
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .configArray = {0, 0}},
+ },
+
+ {
+ .config = {.prop = OBD2_FREEZE_FRAME_INFO,
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE},
+ },
+
+ {
+ .config = {.prop = OBD2_FREEZE_FRAME_CLEAR,
+ .access = defaultconfig_impl::VehiclePropertyAccess::WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .configArray = {1}},
+ },
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::HEADLIGHTS_STATE),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ .initialValue = {.int32Values = {LIGHT_STATE_ON}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::HIGH_BEAM_LIGHTS_STATE),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ .initialValue = {.int32Values = {LIGHT_STATE_ON}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::FOG_LIGHTS_STATE),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ .initialValue = {.int32Values = {LIGHT_STATE_ON}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::HAZARD_LIGHTS_STATE),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ .initialValue = {.int32Values = {LIGHT_STATE_ON}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::HEADLIGHTS_SWITCH),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ .initialValue = {.int32Values = {LIGHT_SWITCH_AUTO}}},
+
+ {.config =
+ {
+ .prop = toInt(
+ defaultconfig_impl::VehicleProperty::HIGH_BEAM_LIGHTS_SWITCH),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ .initialValue = {.int32Values = {LIGHT_SWITCH_AUTO}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::FOG_LIGHTS_SWITCH),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ .initialValue = {.int32Values = {LIGHT_SWITCH_AUTO}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::HAZARD_LIGHTS_SWITCH),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ .initialValue = {.int32Values = {LIGHT_SWITCH_AUTO}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::EVS_SERVICE_REQUEST),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ .initialValue = {.int32Values = {toInt(defaultconfig_impl::EvsServiceType::REARVIEW),
+ toInt(defaultconfig_impl::EvsServiceState::OFF)}}},
+
+ {.config = {.prop = VEHICLE_MAP_SERVICE,
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE}},
+
+ // Example Vendor Extension properties for testing
+ {.config = {.prop = VENDOR_EXTENSION_BOOLEAN_PROPERTY,
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .areaConfigs = {defaultconfig_impl::VehicleAreaConfig{.areaId = DOOR_1_LEFT},
+ defaultconfig_impl::VehicleAreaConfig{.areaId = DOOR_1_RIGHT},
+ defaultconfig_impl::VehicleAreaConfig{.areaId = DOOR_2_LEFT},
+ defaultconfig_impl::VehicleAreaConfig{.areaId = DOOR_2_RIGHT}}},
+ .initialAreaValues = {{DOOR_1_LEFT, {.int32Values = {1}}},
+ {DOOR_1_RIGHT, {.int32Values = {1}}},
+ {DOOR_2_LEFT, {.int32Values = {0}}},
+ {DOOR_2_RIGHT, {.int32Values = {0}}}}},
+
+ {.config = {.prop = VENDOR_EXTENSION_FLOAT_PROPERTY,
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .areaConfigs = {defaultconfig_impl::VehicleAreaConfig{.areaId = HVAC_LEFT,
+ .minFloatValue = -10,
+ .maxFloatValue = 10},
+ defaultconfig_impl::VehicleAreaConfig{.areaId = HVAC_RIGHT,
+ .minFloatValue = -10,
+ .maxFloatValue = 10}}},
+ .initialAreaValues = {{HVAC_LEFT, {.floatValues = {1}}},
+ {HVAC_RIGHT, {.floatValues = {2}}}}},
+
+ {.config = {.prop = VENDOR_EXTENSION_INT_PROPERTY,
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .areaConfigs =
+ {defaultconfig_impl::VehicleAreaConfig{
+ .areaId = toInt(defaultconfig_impl::VehicleAreaWindow::
+ FRONT_WINDSHIELD),
+ .minInt32Value = -100,
+ .maxInt32Value = 100},
+ defaultconfig_impl::VehicleAreaConfig{
+ .areaId = toInt(defaultconfig_impl::VehicleAreaWindow::
+ REAR_WINDSHIELD),
+ .minInt32Value = -100,
+ .maxInt32Value = 100},
+ defaultconfig_impl::VehicleAreaConfig{
+ .areaId = toInt(
+ defaultconfig_impl::VehicleAreaWindow::ROOF_TOP_1),
+ .minInt32Value = -100,
+ .maxInt32Value = 100}}},
+ .initialAreaValues = {{toInt(defaultconfig_impl::VehicleAreaWindow::FRONT_WINDSHIELD),
+ {.int32Values = {1}}},
+ {toInt(defaultconfig_impl::VehicleAreaWindow::REAR_WINDSHIELD),
+ {.int32Values = {0}}},
+ {toInt(defaultconfig_impl::VehicleAreaWindow::ROOF_TOP_1),
+ {.int32Values = {-1}}}}},
+
+ {.config = {.prop = VENDOR_EXTENSION_STRING_PROPERTY,
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE},
+ .initialValue = {.stringValue = "Vendor String Property"}},
+
+ {.config = {.prop = toInt(defaultconfig_impl::VehicleProperty::
+ ELECTRONIC_TOLL_COLLECTION_CARD_TYPE),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE},
+ .initialValue = {.int32Values = {0}}},
+
+ {.config = {.prop = toInt(defaultconfig_impl::VehicleProperty::
+ ELECTRONIC_TOLL_COLLECTION_CARD_STATUS),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE},
+ .initialValue = {.int32Values = {0}}},
+
+ {.config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::
+ SUPPORT_CUSTOMIZE_VENDOR_PERMISSION),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode = defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .configArray =
+ {kMixedTypePropertyForTest,
+ toInt(defaultconfig_impl::
+ VehicleVendorPermission::
+ PERMISSION_GET_VENDOR_CATEGORY_INFO),
+ toInt(defaultconfig_impl::
+ VehicleVendorPermission::
+ PERMISSION_SET_VENDOR_CATEGORY_INFO),
+ VENDOR_EXTENSION_INT_PROPERTY,
+ toInt(defaultconfig_impl::
+ VehicleVendorPermission::
+ PERMISSION_GET_VENDOR_CATEGORY_SEAT),
+ toInt(defaultconfig_impl::
+ VehicleVendorPermission::PERMISSION_NOT_ACCESSIBLE),
+ VENDOR_EXTENSION_FLOAT_PROPERTY,
+ toInt(defaultconfig_impl::
+ VehicleVendorPermission::PERMISSION_DEFAULT),
+ toInt(defaultconfig_impl::
+ VehicleVendorPermission::PERMISSION_DEFAULT)},
+ },
+ .initialValue = {.int32Values = {1}}},
+
+ {
+ .config =
+ {
+ .prop = toInt(
+ defaultconfig_impl::VehicleProperty::INITIAL_USER_INFO),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode =
+ defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ },
+ {
+ .config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::SWITCH_USER),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode =
+ defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ },
+ {
+ .config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::CREATE_USER),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode =
+ defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ },
+ {
+ .config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::REMOVE_USER),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode =
+ defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ },
+ {
+ .config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::
+ USER_IDENTIFICATION_ASSOCIATION),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode =
+ defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ },
+ {
+ .config =
+ {
+ .prop = toInt(
+ defaultconfig_impl::VehicleProperty::POWER_POLICY_REQ),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode =
+ defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ },
+ {
+ .config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::
+ POWER_POLICY_GROUP_REQ),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode =
+ defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ },
+ {
+ .config =
+ {
+ .prop = toInt(
+ defaultconfig_impl::VehicleProperty::CURRENT_POWER_POLICY),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode =
+ defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ },
+ {
+ .config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::EPOCH_TIME),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode =
+ defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ },
+ {
+ .config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::WATCHDOG_ALIVE),
+ .access = defaultconfig_impl::VehiclePropertyAccess::WRITE,
+ .changeMode =
+ defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ },
+ {
+ .config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::
+ WATCHDOG_TERMINATED_PROCESS),
+ .access = defaultconfig_impl::VehiclePropertyAccess::WRITE,
+ .changeMode =
+ defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ },
+ {
+ .config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::VHAL_HEARTBEAT),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode =
+ defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ },
+ {
+ .config =
+ {
+ .prop = toInt(
+ defaultconfig_impl::VehicleProperty::CLUSTER_SWITCH_UI),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode =
+ defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ .initialValue = {.int32Values = {0 /* ClusterHome */, -1 /* ClusterNone */}},
+ },
+ {
+ .config =
+ {
+ .prop = toInt(
+ defaultconfig_impl::VehicleProperty::CLUSTER_DISPLAY_STATE),
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode =
+ defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ .initialValue = {.int32Values = {0 /* Off */, -1, -1, -1, -1 /* Bounds */, -1, -1,
+ -1, -1 /* Insets */}},
+ },
+ {
+ .config =
+ {
+ .prop = toInt(
+ defaultconfig_impl::VehicleProperty::CLUSTER_REPORT_STATE),
+ .access = defaultconfig_impl::VehiclePropertyAccess::WRITE,
+ .changeMode =
+ defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .configArray = {0, 0, 0, 11, 0, 0, 0, 0, 16},
+ },
+ },
+ {
+ .config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::
+ CLUSTER_REQUEST_DISPLAY),
+ .access = defaultconfig_impl::VehiclePropertyAccess::WRITE,
+ .changeMode =
+ defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ },
+ {
+ .config =
+ {
+ .prop = toInt(defaultconfig_impl::VehicleProperty::
+ CLUSTER_NAVIGATION_STATE),
+ .access = defaultconfig_impl::VehiclePropertyAccess::WRITE,
+ .changeMode =
+ defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ },
+ {
+ .config =
+ {
+ .prop = PLACEHOLDER_PROPERTY_INT,
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode =
+ defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ .initialValue = {.int32Values = {0}},
+ },
+ {
+ .config =
+ {
+ .prop = PLACEHOLDER_PROPERTY_FLOAT,
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode =
+ defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ .initialValue = {.floatValues = {0.0f}},
+ },
+ {
+ .config =
+ {
+ .prop = PLACEHOLDER_PROPERTY_BOOLEAN,
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode =
+ defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ .initialValue = {.int32Values = {0 /* false */}},
+ },
+ {
+ .config =
+ {
+ .prop = PLACEHOLDER_PROPERTY_STRING,
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ_WRITE,
+ .changeMode =
+ defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ .initialValue = {.stringValue = {"Test"}},
+ },
+#ifdef ENABLE_VENDOR_CLUSTER_PROPERTY_FOR_TESTING
+ // Vendor propetry for E2E ClusterHomeService testing.
+ {
+ .config =
+ {
+ .prop = VENDOR_CLUSTER_SWITCH_UI,
+ .access = defaultconfig_impl::VehiclePropertyAccess::WRITE,
+ .changeMode =
+ defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ },
+ {
+ .config =
+ {
+ .prop = VENDOR_CLUSTER_DISPLAY_STATE,
+ .access = defaultconfig_impl::VehiclePropertyAccess::WRITE,
+ .changeMode =
+ defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ },
+ {
+ .config =
+ {
+ .prop = VENDOR_CLUSTER_REPORT_STATE,
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode =
+ defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ .configArray = {0, 0, 0, 11, 0, 0, 0, 0, 16},
+ },
+ .initialValue = {.int32Values = {0 /* Off */, -1, -1, -1, -1 /* Bounds */, -1, -1,
+ -1, -1 /* Insets */, 0 /* ClusterHome */,
+ -1 /* ClusterNone */}},
+ },
+ {
+ .config =
+ {
+ .prop = VENDOR_CLUSTER_REQUEST_DISPLAY,
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode =
+ defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ .initialValue = {.int32Values = {0 /* ClusterHome */}},
+ },
+ {
+ .config =
+ {
+ .prop = VENDOR_CLUSTER_NAVIGATION_STATE,
+ .access = defaultconfig_impl::VehiclePropertyAccess::READ,
+ .changeMode =
+ defaultconfig_impl::VehiclePropertyChangeMode::ON_CHANGE,
+ },
+ },
+#endif // ENABLE_VENDOR_CLUSTER_PROPERTY_FOR_TESTING
+};
+
+} // namespace vehicle
+} // namespace automotive
+} // namespace hardware
+} // namespace android
+
+#endif // android_hardware_automotive_vehicle_aidl_impl_default_config_include_DefaultConfig_H_
diff --git a/automotive/vehicle/aidl/impl/default_config/test/Android.bp b/automotive/vehicle/aidl/impl/default_config/test/Android.bp
new file mode 100644
index 0000000..7ea4ca7
--- /dev/null
+++ b/automotive/vehicle/aidl/impl/default_config/test/Android.bp
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+cc_test {
+ name: "VehicleHalDefaultConfigTest",
+ vendor: true,
+ defaults: ["VehicleHalDefaults"],
+ srcs: ["*.cpp"],
+ static_libs: [
+ "VehicleHalUtils",
+ "libgtest",
+ ],
+ header_libs: [
+ "VehicleHalDefaultConfig",
+ ],
+ test_suites: ["general-tests"],
+}
diff --git a/automotive/vehicle/aidl/impl/default_config/test/DefaultConfigTest.cpp b/automotive/vehicle/aidl/impl/default_config/test/DefaultConfigTest.cpp
new file mode 100644
index 0000000..6385ac1
--- /dev/null
+++ b/automotive/vehicle/aidl/impl/default_config/test/DefaultConfigTest.cpp
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <DefaultConfig.h>
+#include <VehicleUtils.h>
+#include <gtest/gtest.h>
+
+namespace android {
+namespace hardware {
+namespace automotive {
+namespace vehicle {
+
+namespace test {
+
+TEST(DefaultConfigTest, loadDefaultConfigs) {
+ for (ConfigDeclaration config : kVehicleProperties) {
+ ASSERT_NE(0, config.config.prop);
+ }
+}
+
+} // namespace test
+
+} // namespace vehicle
+} // namespace automotive
+} // namespace hardware
+} // namespace android