diff --git a/automotive/vehicle/aidl/impl/default_config/JsonConfigLoader/Android.bp b/automotive/vehicle/aidl/impl/default_config/JsonConfigLoader/Android.bp index 6984d5e2d5..75a3541cdd 100644 --- a/automotive/vehicle/aidl/impl/default_config/JsonConfigLoader/Android.bp +++ b/automotive/vehicle/aidl/impl/default_config/JsonConfigLoader/Android.bp @@ -35,14 +35,17 @@ cc_library { cc_library { name: "VehicleHalJsonConfigLoaderEnableTestProperties", vendor: true, - srcs: ["src/*.cpp"], + srcs: [ + "src/*.cpp", + ":VhalTestVendorProperties", + ], local_include_dirs: ["include"], export_include_dirs: ["include"], defaults: ["VehicleHalDefaults"], static_libs: ["VehicleHalUtils"], header_libs: [ - "VehicleHalTestUtilHeaders", "IVehicleGeneratedHeaders", + "libbinder_headers", ], cflags: ["-DENABLE_VEHICLE_HAL_TEST_PROPERTIES"], shared_libs: ["libjsoncpp"], diff --git a/automotive/vehicle/aidl/impl/default_config/JsonConfigLoader/src/JsonConfigLoader.cpp b/automotive/vehicle/aidl/impl/default_config/JsonConfigLoader/src/JsonConfigLoader.cpp index 0a1f90414e..39ce10e64d 100644 --- a/automotive/vehicle/aidl/impl/default_config/JsonConfigLoader/src/JsonConfigLoader.cpp +++ b/automotive/vehicle/aidl/impl/default_config/JsonConfigLoader/src/JsonConfigLoader.cpp @@ -21,7 +21,7 @@ #include #ifdef ENABLE_VEHICLE_HAL_TEST_PROPERTIES -#include +#include #endif // ENABLE_VEHICLE_HAL_TEST_PROPERTIES #include @@ -91,10 +91,6 @@ const std::unordered_map CONSTANTS_BY_NAME = { {"HVAC_ALL", HVAC_ALL}, {"HVAC_LEFT", HVAC_LEFT}, {"HVAC_RIGHT", HVAC_RIGHT}, - {"VENDOR_EXTENSION_INT_PROPERTY", VENDOR_EXTENSION_INT_PROPERTY}, - {"VENDOR_EXTENSION_BOOLEAN_PROPERTY", VENDOR_EXTENSION_BOOLEAN_PROPERTY}, - {"VENDOR_EXTENSION_STRING_PROPERTY", VENDOR_EXTENSION_STRING_PROPERTY}, - {"VENDOR_EXTENSION_FLOAT_PROPERTY", VENDOR_EXTENSION_FLOAT_PROPERTY}, {"WINDOW_1_LEFT", WINDOW_1_LEFT}, {"WINDOW_1_RIGHT", WINDOW_1_RIGHT}, {"WINDOW_2_LEFT", WINDOW_2_LEFT}, @@ -133,24 +129,9 @@ const std::unordered_map CONSTANTS_BY_NAME = { {"EV_STOPPING_MODE_HOLD", EV_STOPPING_MODE_HOLD}, {"MIRROR_DRIVER_LEFT_RIGHT", toInt(VehicleAreaMirror::DRIVER_LEFT) | toInt(VehicleAreaMirror::DRIVER_RIGHT)}, -#ifdef ENABLE_VEHICLE_HAL_TEST_PROPERTIES - // Following are test properties: - {"ECHO_REVERSE_BYTES", ECHO_REVERSE_BYTES}, - {"VENDOR_PROPERTY_ID", VENDOR_PROPERTY_ID}, - {"kMixedTypePropertyForTest", kMixedTypePropertyForTest}, - {"VENDOR_CLUSTER_NAVIGATION_STATE", VENDOR_CLUSTER_NAVIGATION_STATE}, - {"VENDOR_CLUSTER_REQUEST_DISPLAY", VENDOR_CLUSTER_REQUEST_DISPLAY}, - {"VENDOR_CLUSTER_SWITCH_UI", VENDOR_CLUSTER_SWITCH_UI}, - {"VENDOR_CLUSTER_DISPLAY_STATE", VENDOR_CLUSTER_DISPLAY_STATE}, - {"VENDOR_CLUSTER_REPORT_STATE", VENDOR_CLUSTER_REPORT_STATE}, - {"PLACEHOLDER_PROPERTY_INT", PLACEHOLDER_PROPERTY_INT}, - {"PLACEHOLDER_PROPERTY_FLOAT", PLACEHOLDER_PROPERTY_FLOAT}, - {"PLACEHOLDER_PROPERTY_BOOLEAN", PLACEHOLDER_PROPERTY_BOOLEAN}, - {"PLACEHOLDER_PROPERTY_STRING", PLACEHOLDER_PROPERTY_STRING} -#endif // ENABLE_VEHICLE_HAL_TEST_PROPERTIES }; -// A class to parse constant values for type T. +// A class to parse constant values for type T where T is defined as an enum in NDK AIDL backend. template class ConstantParser final : public ConstantParserInterface { public: @@ -181,6 +162,33 @@ class ConstantParser final : public ConstantParserInterface { std::unordered_map mValueByName; }; +#ifdef ENABLE_VEHICLE_HAL_TEST_PROPERTIES +// A class to parse constant values for type T where T is defined as an enum in CPP AIDL backend. +template +class CppConstantParser final : public ConstantParserInterface { + public: + CppConstantParser() { + for (const T& v : android::enum_range()) { + std::string name = android::hardware::automotive::vehicle::toString(v); + mValueByName[name] = toInt(v); + } + } + + ~CppConstantParser() = default; + + Result parseValue(const std::string& name) const override { + auto it = mValueByName.find(name); + if (it == mValueByName.end()) { + return Error() << "Constant name: " << name << " is not defined"; + } + return it->second; + } + + private: + std::unordered_map mValueByName; +}; +#endif + // A class to parse constant values defined in CONSTANTS_BY_NAME map. class LocalVariableParser final : public ConstantParserInterface { public: @@ -260,6 +268,10 @@ JsonValueParser::JsonValueParser() { mConstantParsersByType["LaneCenteringAssistState"] = std::make_unique>(); mConstantParsersByType["Constants"] = std::make_unique(); +#ifdef ENABLE_VEHICLE_HAL_TEST_PROPERTIES + mConstantParsersByType["TestVendorProperty"] = + std::make_unique>(); +#endif // ENABLE_VEHICLE_HAL_TEST_PROPERTIES } template <> diff --git a/automotive/vehicle/aidl/impl/default_config/config/TestProperties.json b/automotive/vehicle/aidl/impl/default_config/config/TestProperties.json index fd4b0026bd..73e4d44d0c 100644 --- a/automotive/vehicle/aidl/impl/default_config/config/TestProperties.json +++ b/automotive/vehicle/aidl/impl/default_config/config/TestProperties.json @@ -1,7 +1,7 @@ { "properties": [ { - "property": "Constants::kMixedTypePropertyForTest", + "property": "TestVendorProperty::MIXED_TYPE_PROPERTY_FOR_TEST", "defaultValue": { "floatValues": [ 4.5 @@ -28,7 +28,7 @@ "changeMode": "VehiclePropertyChangeMode::ON_CHANGE" }, { - "property": "Constants::VENDOR_EXTENSION_BOOLEAN_PROPERTY", + "property": "TestVendorProperty::VENDOR_EXTENSION_BOOLEAN_PROPERTY", "areas": [ { "defaultValue": { @@ -67,7 +67,7 @@ "changeMode": "VehiclePropertyChangeMode::ON_CHANGE" }, { - "property": "Constants::VENDOR_EXTENSION_FLOAT_PROPERTY", + "property": "TestVendorProperty::VENDOR_EXTENSION_FLOAT_PROPERTY", "areas": [ { "defaultValue": { @@ -94,7 +94,7 @@ "changeMode": "VehiclePropertyChangeMode::ON_CHANGE" }, { - "property": "Constants::VENDOR_EXTENSION_INT_PROPERTY", + "property": "TestVendorProperty::VENDOR_EXTENSION_INT_PROPERTY", "areas": [ { "defaultValue": { @@ -131,7 +131,7 @@ "changeMode": "VehiclePropertyChangeMode::ON_CHANGE" }, { - "property": "Constants::VENDOR_EXTENSION_STRING_PROPERTY", + "property": "TestVendorProperty::VENDOR_EXTENSION_STRING_PROPERTY", "defaultValue": { "stringValue": "Vendor String Property" }, @@ -139,7 +139,7 @@ "changeMode": "VehiclePropertyChangeMode::ON_CHANGE" }, { - "property": "Constants::PLACEHOLDER_PROPERTY_INT", + "property": "TestVendorProperty::PLACEHOLDER_PROPERTY_INT", "defaultValue": { "int32Values": [ 0 @@ -149,7 +149,7 @@ "changeMode": "VehiclePropertyChangeMode::ON_CHANGE" }, { - "property": "Constants::PLACEHOLDER_PROPERTY_FLOAT", + "property": "TestVendorProperty::PLACEHOLDER_PROPERTY_FLOAT", "defaultValue": { "floatValues": [ 0.0 @@ -159,7 +159,7 @@ "changeMode": "VehiclePropertyChangeMode::ON_CHANGE" }, { - "property": "Constants::PLACEHOLDER_PROPERTY_BOOLEAN", + "property": "TestVendorProperty::PLACEHOLDER_PROPERTY_BOOLEAN", "defaultValue": { "int32Values": [ 0 @@ -169,7 +169,7 @@ "changeMode": "VehiclePropertyChangeMode::ON_CHANGE" }, { - "property": "Constants::PLACEHOLDER_PROPERTY_STRING", + "property": "TestVendorProperty::PLACEHOLDER_PROPERTY_STRING", "defaultValue": { "stringValue": "Test" }, @@ -177,12 +177,12 @@ "changeMode": "VehiclePropertyChangeMode::ON_CHANGE" }, { - "property": "Constants::ECHO_REVERSE_BYTES", + "property": "TestVendorProperty::ECHO_REVERSE_BYTES", "access": "VehiclePropertyAccess::READ_WRITE", "changeMode": "VehiclePropertyChangeMode::ON_CHANGE" }, { - "property": "Constants::VENDOR_PROPERTY_ID", + "property": "TestVendorProperty::VENDOR_PROPERTY_FOR_ERROR_CODE_TESTING", "access": "VehiclePropertyAccess::READ_WRITE", "changeMode": "VehiclePropertyChangeMode::ON_CHANGE" }, @@ -194,13 +194,13 @@ ] }, "configArray": [ - "Constants::kMixedTypePropertyForTest", + "TestVendorProperty::MIXED_TYPE_PROPERTY_FOR_TEST", "VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_INFO", "VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_INFO", - "Constants::VENDOR_EXTENSION_INT_PROPERTY", + "TestVendorProperty::VENDOR_EXTENSION_INT_PROPERTY", "VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_SEAT", "VehicleVendorPermission::PERMISSION_NOT_ACCESSIBLE", - "Constants::VENDOR_EXTENSION_FLOAT_PROPERTY", + "TestVendorProperty::VENDOR_EXTENSION_FLOAT_PROPERTY", "VehicleVendorPermission::PERMISSION_DEFAULT", "VehicleVendorPermission::PERMISSION_DEFAULT" ] diff --git a/automotive/vehicle/aidl/impl/default_config/config/VendorClusterTestProperties.json b/automotive/vehicle/aidl/impl/default_config/config/VendorClusterTestProperties.json index 3a1a783b84..8c2bc93e1c 100644 --- a/automotive/vehicle/aidl/impl/default_config/config/VendorClusterTestProperties.json +++ b/automotive/vehicle/aidl/impl/default_config/config/VendorClusterTestProperties.json @@ -1,17 +1,17 @@ { "properties": [ { - "property": "Constants::VENDOR_CLUSTER_SWITCH_UI", + "property": "TestVendorProperty::VENDOR_CLUSTER_SWITCH_UI", "access": "VehiclePropertyAccess::WRITE", "changeMode": "VehiclePropertyChangeMode::ON_CHANGE" }, { - "property": "Constants::VENDOR_CLUSTER_DISPLAY_STATE", + "property": "TestVendorProperty::VENDOR_CLUSTER_DISPLAY_STATE", "access": "VehiclePropertyAccess::WRITE", "changeMode": "VehiclePropertyChangeMode::ON_CHANGE" }, { - "property": "Constants::VENDOR_CLUSTER_REPORT_STATE", + "property": "TestVendorProperty::VENDOR_CLUSTER_REPORT_STATE", "defaultValue": { "int32Values": [ 0, @@ -44,7 +44,7 @@ "Value means 0 /* Off */, -1, -1, -1, -1 /* Bounds */, -1, -1, -1, -1 /* Insets */, 0 /* ClusterHome */, -1 /* ClusterNone */" }, { - "property": "Constants::VENDOR_CLUSTER_REQUEST_DISPLAY", + "property": "TestVendorProperty::VENDOR_CLUSTER_REQUEST_DISPLAY", "defaultValue": { "int32Values": [ 0 @@ -55,7 +55,7 @@ "comment": "0 means ClusterHome" }, { - "property": "Constants::VENDOR_CLUSTER_NAVIGATION_STATE", + "property": "TestVendorProperty::VENDOR_CLUSTER_NAVIGATION_STATE", "access": "VehiclePropertyAccess::READ", "changeMode": "VehiclePropertyChangeMode::ON_CHANGE" } diff --git a/automotive/vehicle/aidl/impl/fake_impl/hardware/Android.bp b/automotive/vehicle/aidl/impl/fake_impl/hardware/Android.bp index 4c17cded42..e75f6485b8 100644 --- a/automotive/vehicle/aidl/impl/fake_impl/hardware/Android.bp +++ b/automotive/vehicle/aidl/impl/fake_impl/hardware/Android.bp @@ -21,7 +21,10 @@ package { cc_library { name: "FakeVehicleHardware", vendor: true, - srcs: ["src/*.cpp"], + srcs: [ + "src/*.cpp", + ":VhalTestVendorProperties", + ], local_include_dirs: ["include"], export_include_dirs: ["include"], cflags: ["-DENABLE_VEHICLE_HAL_TEST_PROPERTIES"], @@ -35,7 +38,7 @@ cc_defaults { name: "FakeVehicleHardwareDefaults", header_libs: [ "IVehicleHardware", - "VehicleHalTestUtilHeaders", + "libbinder_headers", ], export_header_lib_headers: ["IVehicleHardware"], static_libs: [ diff --git a/automotive/vehicle/aidl/impl/fake_impl/hardware/src/FakeVehicleHardware.cpp b/automotive/vehicle/aidl/impl/fake_impl/hardware/src/FakeVehicleHardware.cpp index efd7f8e6a3..82c3ea072e 100644 --- a/automotive/vehicle/aidl/impl/fake_impl/hardware/src/FakeVehicleHardware.cpp +++ b/automotive/vehicle/aidl/impl/fake_impl/hardware/src/FakeVehicleHardware.cpp @@ -24,7 +24,6 @@ #include #include #include -#include #include #include @@ -32,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -63,6 +63,7 @@ using ::aidl::android::hardware::automotive::vehicle::SetValueResult; using ::aidl::android::hardware::automotive::vehicle::StatusCode; using ::aidl::android::hardware::automotive::vehicle::VehicleApPowerStateReport; using ::aidl::android::hardware::automotive::vehicle::VehicleApPowerStateReq; +using ::aidl::android::hardware::automotive::vehicle::VehicleArea; using ::aidl::android::hardware::automotive::vehicle::VehicleHwKeyInputAction; using ::aidl::android::hardware::automotive::vehicle::VehiclePropConfig; using ::aidl::android::hardware::automotive::vehicle::VehicleProperty; @@ -87,14 +88,12 @@ using ::android::base::StringPrintf; // getPropertiesAsync, and setPropertiesAsync. // 0x21403000 constexpr int32_t STARTING_VENDOR_CODE_PROPERTIES_FOR_TEST = - 0x3000 | toInt(testpropertyutils_impl::VehiclePropertyGroup::VENDOR) | - toInt(testpropertyutils_impl::VehicleArea::GLOBAL) | - toInt(testpropertyutils_impl::VehiclePropertyType::INT32); + 0x3000 | toInt(VehiclePropertyGroup::VENDOR) | toInt(VehicleArea::GLOBAL) | + toInt(VehiclePropertyType::INT32); // 0x21405000 constexpr int32_t ENDING_VENDOR_CODE_PROPERTIES_FOR_TEST = - 0x5000 | toInt(testpropertyutils_impl::VehiclePropertyGroup::VENDOR) | - toInt(testpropertyutils_impl::VehicleArea::GLOBAL) | - toInt(testpropertyutils_impl::VehiclePropertyType::INT32); + 0x5000 | toInt(VehiclePropertyGroup::VENDOR) | toInt(VehicleArea::GLOBAL) | + toInt(VehiclePropertyType::INT32); // The directory for default property configuration file. // For config file format, see impl/default_config/config/README.md. constexpr char DEFAULT_CONFIG_DIR[] = "/vendor/etc/automotive/vhalconfig/"; @@ -105,7 +104,7 @@ constexpr char OVERRIDE_CONFIG_DIR[] = "/vendor/etc/automotive/vhaloverride/"; // overwrite the default configs. constexpr char OVERRIDE_PROPERTY[] = "persist.vendor.vhal_init_value_override"; constexpr char POWER_STATE_REQ_CONFIG_PROPERTY[] = "ro.vendor.fake_vhal.ap_power_state_req.config"; -// The value to be returned if VENDOR_PROPERTY_ID is set as the property +// The value to be returned if VENDOR_PROPERTY_FOR_ERROR_CODE_TESTING is set as the property constexpr int VENDOR_ERROR_CODE = 0x00ab0005; // A list of supported options for "--set" command. const std::unordered_set SET_PROP_OPTIONS = { @@ -668,10 +667,10 @@ FakeVehicleHardware::ValueResultType FakeVehicleHardware::maybeGetSpecialValue( result.value()->timestamp = elapsedRealtimeNano(); } return result; - case ECHO_REVERSE_BYTES: + case toInt(TestVendorProperty::ECHO_REVERSE_BYTES): *isSpecialValue = true; return getEchoReverseBytes(value); - case VENDOR_PROPERTY_ID: + case toInt(TestVendorProperty::VENDOR_PROPERTY_FOR_ERROR_CODE_TESTING): *isSpecialValue = true; return StatusError((StatusCode)VENDOR_ERROR_CODE); case toInt(VehicleProperty::CRUISE_CONTROL_TARGET_SPEED): @@ -835,7 +834,7 @@ VhalResult FakeVehicleHardware::maybeSetSpecialValue(const VehiclePropValu case OBD2_FREEZE_FRAME_CLEAR: *isSpecialValue = true; return mFakeObd2Frame->clearObd2FreezeFrames(value); - case VENDOR_PROPERTY_ID: + case toInt(TestVendorProperty::VENDOR_PROPERTY_FOR_ERROR_CODE_TESTING): *isSpecialValue = true; return StatusError((StatusCode)VENDOR_ERROR_CODE); case toInt(VehicleProperty::HVAC_TEMPERATURE_VALUE_SUGGESTION): @@ -900,9 +899,9 @@ VhalResult FakeVehicleHardware::maybeSetSpecialValue(const VehiclePropValu [[fallthrough]]; case toInt(VehicleProperty::CLUSTER_NAVIGATION_STATE): [[fallthrough]]; - case VENDOR_CLUSTER_SWITCH_UI: + case toInt(TestVendorProperty::VENDOR_CLUSTER_SWITCH_UI): [[fallthrough]]; - case VENDOR_CLUSTER_DISPLAY_STATE: + case toInt(TestVendorProperty::VENDOR_CLUSTER_DISPLAY_STATE): *isSpecialValue = true; updatedValue = mValuePool->obtain(getPropType(value.prop)); updatedValue->prop = value.prop & ~toInt(VehiclePropertyGroup::MASK); diff --git a/automotive/vehicle/aidl/impl/fake_impl/hardware/test/Android.bp b/automotive/vehicle/aidl/impl/fake_impl/hardware/test/Android.bp index 8d8fcf5908..b763d2f55d 100644 --- a/automotive/vehicle/aidl/impl/fake_impl/hardware/test/Android.bp +++ b/automotive/vehicle/aidl/impl/fake_impl/hardware/test/Android.bp @@ -21,11 +21,14 @@ package { cc_test { name: "FakeVehicleHardwareTest", vendor: true, - srcs: ["*.cpp"], + srcs: [ + "*.cpp", + ":VhalTestVendorProperties", + ], cflags: ["-DENABLE_VEHICLE_HAL_TEST_PROPERTIES"], header_libs: [ "IVehicleHardware", - "VehicleHalTestUtilHeaders", + "libbinder_headers", ], static_libs: [ "VehicleHalJsonConfigLoaderEnableTestProperties", @@ -47,7 +50,9 @@ cc_test { ":FakeVehicleHardwareTestOverrideJson", ":FakeVehicleHardwareTestPropJson", ], - defaults: ["VehicleHalDefaults"], + defaults: [ + "VehicleHalDefaults", + ], test_suites: ["device-tests"], } diff --git a/automotive/vehicle/aidl/impl/fake_impl/hardware/test/FakeVehicleHardwareTest.cpp b/automotive/vehicle/aidl/impl/fake_impl/hardware/test/FakeVehicleHardwareTest.cpp index a77d565d6e..6cc06bc3ac 100644 --- a/automotive/vehicle/aidl/impl/fake_impl/hardware/test/FakeVehicleHardwareTest.cpp +++ b/automotive/vehicle/aidl/impl/fake_impl/hardware/test/FakeVehicleHardwareTest.cpp @@ -19,9 +19,9 @@ #include #include #include -#include #include +#include #include #include @@ -429,13 +429,13 @@ TEST_F(FakeVehicleHardwareTest, testGetDefaultValues) { continue; } - if (propId == ECHO_REVERSE_BYTES) { + if (propId == toInt(TestVendorProperty::ECHO_REVERSE_BYTES)) { // Ignore ECHO_REVERSE_BYTES, it has special logic. continue; } - if (propId == VENDOR_PROPERTY_ID) { - // Ignore VENDOR_PROPERTY_ID, it has special logic. + if (propId == toInt(TestVendorProperty::VENDOR_PROPERTY_FOR_ERROR_CODE_TESTING)) { + // Ignore VENDOR_PROPERTY_FOR_ERROR_CODE_TESTING, it has special logic. continue; } @@ -968,7 +968,8 @@ std::vector setSpecialValueTestCases() { .expectedValuesToGet = { VehiclePropValue{ - .prop = VENDOR_CLUSTER_REPORT_STATE, + .prop = toInt(TestVendorProperty:: + VENDOR_CLUSTER_REPORT_STATE), .value.int32Values = {1}, }, }, @@ -985,7 +986,8 @@ std::vector setSpecialValueTestCases() { .expectedValuesToGet = { VehiclePropValue{ - .prop = VENDOR_CLUSTER_REQUEST_DISPLAY, + .prop = toInt(TestVendorProperty:: + VENDOR_CLUSTER_REQUEST_DISPLAY), .value.int32Values = {1}, }, }, @@ -1003,7 +1005,8 @@ std::vector setSpecialValueTestCases() { .expectedValuesToGet = { VehiclePropValue{ - .prop = VENDOR_CLUSTER_NAVIGATION_STATE, + .prop = toInt(TestVendorProperty:: + VENDOR_CLUSTER_NAVIGATION_STATE), .value.byteValues = {0x1}, }, }, @@ -1013,7 +1016,8 @@ std::vector setSpecialValueTestCases() { .valuesToSet = { VehiclePropValue{ - .prop = VENDOR_CLUSTER_SWITCH_UI, + .prop = toInt( + TestVendorProperty::VENDOR_CLUSTER_SWITCH_UI), .value.int32Values = {1}, }, }, @@ -1030,7 +1034,8 @@ std::vector setSpecialValueTestCases() { .valuesToSet = { VehiclePropValue{ - .prop = VENDOR_CLUSTER_DISPLAY_STATE, + .prop = toInt(TestVendorProperty:: + VENDOR_CLUSTER_DISPLAY_STATE), .value.int32Values = {1, 2}, }, }, @@ -2928,7 +2933,7 @@ TEST_F(FakeVehicleHardwareTest, testDebugGenFakeDataMotionInput) { TEST_F(FakeVehicleHardwareTest, testGetEchoReverseBytes) { ASSERT_EQ(setValue(VehiclePropValue{ - .prop = ECHO_REVERSE_BYTES, + .prop = toInt(TestVendorProperty::ECHO_REVERSE_BYTES), .value = { .byteValues = {0x01, 0x02, 0x03, 0x04}, @@ -2937,7 +2942,7 @@ TEST_F(FakeVehicleHardwareTest, testGetEchoReverseBytes) { StatusCode::OK); auto result = getValue(VehiclePropValue{ - .prop = ECHO_REVERSE_BYTES, + .prop = toInt(TestVendorProperty::ECHO_REVERSE_BYTES), }); ASSERT_TRUE(result.ok()) << "failed to get ECHO_REVERSE_BYTES value: " << getStatus(result); diff --git a/automotive/vehicle/aidl/impl/utils/README.md b/automotive/vehicle/aidl/impl/utils/README.md index 87bb7e3034..255131ddc1 100644 --- a/automotive/vehicle/aidl/impl/utils/README.md +++ b/automotive/vehicle/aidl/impl/utils/README.md @@ -57,6 +57,6 @@ delete and lookup. Defines many useful utility functions. -## test +## test_vendor_properties -Defines utility libraries for test only. +Contains vendor properties used for testing purpose in reference VHAL. diff --git a/automotive/vehicle/aidl/impl/utils/common/include/PropertyUtils.h b/automotive/vehicle/aidl/impl/utils/common/include/PropertyUtils.h index 7275ba30f9..e41ec3074c 100644 --- a/automotive/vehicle/aidl/impl/utils/common/include/PropertyUtils.h +++ b/automotive/vehicle/aidl/impl/utils/common/include/PropertyUtils.h @@ -77,22 +77,6 @@ constexpr int SEAT_1_RIGHT = toInt(propertyutils_impl::VehicleAreaSeat::ROW_1_RI constexpr int SEAT_2_LEFT = toInt(propertyutils_impl::VehicleAreaSeat::ROW_2_LEFT); constexpr int SEAT_2_RIGHT = toInt(propertyutils_impl::VehicleAreaSeat::ROW_2_RIGHT); constexpr int SEAT_2_CENTER = toInt(propertyutils_impl::VehicleAreaSeat::ROW_2_CENTER); -constexpr int VENDOR_EXTENSION_BOOLEAN_PROPERTY = - 0x101 | toInt(propertyutils_impl::VehiclePropertyGroup::VENDOR) | - toInt(propertyutils_impl::VehiclePropertyType::BOOLEAN) | - toInt(propertyutils_impl::VehicleArea::DOOR); -constexpr int VENDOR_EXTENSION_FLOAT_PROPERTY = - 0x102 | toInt(propertyutils_impl::VehiclePropertyGroup::VENDOR) | - toInt(propertyutils_impl::VehiclePropertyType::FLOAT) | - toInt(propertyutils_impl::VehicleArea::SEAT); -constexpr int VENDOR_EXTENSION_INT_PROPERTY = - 0x103 | toInt(propertyutils_impl::VehiclePropertyGroup::VENDOR) | - toInt(propertyutils_impl::VehiclePropertyType::INT32) | - toInt(propertyutils_impl::VehicleArea::WINDOW); -constexpr int VENDOR_EXTENSION_STRING_PROPERTY = - 0x104 | toInt(propertyutils_impl::VehiclePropertyGroup::VENDOR) | - toInt(propertyutils_impl::VehiclePropertyType::STRING) | - toInt(propertyutils_impl::VehicleArea::GLOBAL); constexpr int FUEL_DOOR_REAR_LEFT = toInt(propertyutils_impl::PortLocationType::REAR_LEFT); constexpr int CHARGE_PORT_FRONT_LEFT = toInt(propertyutils_impl::PortLocationType::FRONT_LEFT); constexpr int CHARGE_PORT_REAR_LEFT = toInt(propertyutils_impl::PortLocationType::REAR_LEFT); diff --git a/automotive/vehicle/aidl/impl/utils/common/test/Android.bp b/automotive/vehicle/aidl/impl/utils/common/test/Android.bp index 250b33135b..dd43712558 100644 --- a/automotive/vehicle/aidl/impl/utils/common/test/Android.bp +++ b/automotive/vehicle/aidl/impl/utils/common/test/Android.bp @@ -27,7 +27,6 @@ cc_test { "libgtest", "libgmock", ], - header_libs: ["VehicleHalTestUtilHeaders"], defaults: ["VehicleHalDefaults"], test_suites: ["device-tests"], } diff --git a/automotive/vehicle/aidl/impl/utils/common/test/VehicleUtilsTest.cpp b/automotive/vehicle/aidl/impl/utils/common/test/VehicleUtilsTest.cpp index 411539b38f..9abb2a2fe6 100644 --- a/automotive/vehicle/aidl/impl/utils/common/test/VehicleUtilsTest.cpp +++ b/automotive/vehicle/aidl/impl/utils/common/test/VehicleUtilsTest.cpp @@ -16,7 +16,6 @@ #include #include -#include #include #include @@ -56,6 +55,9 @@ constexpr int32_t int64Prop = toInt(VehicleProperty::ANDROID_EPOCH_TIME); constexpr int32_t int64VecProp = toInt(VehicleProperty::WHEEL_TICK); constexpr int32_t floatProp = toInt(VehicleProperty::ENV_OUTSIDE_TEMPERATURE); constexpr int32_t floatVecProp = toInt(VehicleProperty::HVAC_TEMPERATURE_VALUE_SUGGESTION); +constexpr int32_t kMixedTypePropertyForTest = 0x1111 | toInt(VehiclePropertyGroup::VENDOR) | + toInt(VehicleArea::GLOBAL) | + toInt(VehiclePropertyType::MIXED); std::vector getInvalidPropValuesTestCases() { return std::vector( diff --git a/automotive/vehicle/aidl/impl/utils/test/include/TestPropertyUtils.h b/automotive/vehicle/aidl/impl/utils/test/include/TestPropertyUtils.h deleted file mode 100644 index 14002884f5..0000000000 --- a/automotive/vehicle/aidl/impl/utils/test/include/TestPropertyUtils.h +++ /dev/null @@ -1,105 +0,0 @@ -/* - * 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_utils_test_include_TestPropertyUtils_H_ -#define android_hardware_automotive_vehicle_utils_test_include_TestPropertyUtils_H_ - -#include -#include - -namespace android { -namespace hardware { -namespace automotive { -namespace vehicle { - -namespace testpropertyutils_impl { - -// These names are not part of the API since we only expose ints. -using ::aidl::android::hardware::automotive::vehicle::VehicleArea; -using ::aidl::android::hardware::automotive::vehicle::VehicleProperty; -using ::aidl::android::hardware::automotive::vehicle::VehiclePropertyGroup; -using ::aidl::android::hardware::automotive::vehicle::VehiclePropertyType; - -} // namespace testpropertyutils_impl - -// Converts the system property to the vendor property. -// WARNING: This is only for the end-to-end testing, Should NOT include in the user build. -inline constexpr int32_t toVendor( - const aidl::android::hardware::automotive::vehicle::VehicleProperty& prop) { - return (toInt(prop) & ~toInt(testpropertyutils_impl::VehiclePropertyGroup::MASK)) | - toInt(testpropertyutils_impl::VehiclePropertyGroup::VENDOR); -} - -// These properties are used for the end-to-end testing of ClusterHomeService. -constexpr int32_t VENDOR_CLUSTER_SWITCH_UI = - toVendor(testpropertyutils_impl::VehicleProperty::CLUSTER_SWITCH_UI); -constexpr int32_t VENDOR_CLUSTER_DISPLAY_STATE = - toVendor(testpropertyutils_impl::VehicleProperty::CLUSTER_DISPLAY_STATE); -constexpr int32_t VENDOR_CLUSTER_REPORT_STATE = - toVendor(testpropertyutils_impl::VehicleProperty::CLUSTER_REPORT_STATE); -constexpr int32_t VENDOR_CLUSTER_REQUEST_DISPLAY = - toVendor(testpropertyutils_impl::VehicleProperty::CLUSTER_REQUEST_DISPLAY); -constexpr int32_t VENDOR_CLUSTER_NAVIGATION_STATE = - toVendor(testpropertyutils_impl::VehicleProperty::CLUSTER_NAVIGATION_STATE); - -// These properties are placeholder properties for developers to test new features without -// implementing a real property. -constexpr int32_t PLACEHOLDER_PROPERTY_INT = - 0x2a11 | toInt(testpropertyutils_impl::VehiclePropertyGroup::VENDOR) | - toInt(testpropertyutils_impl::VehicleArea::GLOBAL) | - toInt(testpropertyutils_impl::VehiclePropertyType::INT32); -constexpr int32_t PLACEHOLDER_PROPERTY_FLOAT = - 0x2a11 | toInt(testpropertyutils_impl::VehiclePropertyGroup::VENDOR) | - toInt(testpropertyutils_impl::VehicleArea::GLOBAL) | - toInt(testpropertyutils_impl::VehiclePropertyType::FLOAT); -constexpr int32_t PLACEHOLDER_PROPERTY_BOOLEAN = - 0x2a11 | toInt(testpropertyutils_impl::VehiclePropertyGroup::VENDOR) | - toInt(testpropertyutils_impl::VehicleArea::GLOBAL) | - toInt(testpropertyutils_impl::VehiclePropertyType::BOOLEAN); -constexpr int32_t PLACEHOLDER_PROPERTY_STRING = - 0x2a11 | toInt(testpropertyutils_impl::VehiclePropertyGroup::VENDOR) | - toInt(testpropertyutils_impl::VehicleArea::GLOBAL) | - toInt(testpropertyutils_impl::VehiclePropertyType::STRING); - -// This property is used for testing LargeParcelable marshalling/unmarhsalling end to end. -// It acts as an regular property that stores the property value when setting and return the value -// when getting, except that all the byteValues used in the setValue response would be filled in -// the reverse order. -// 0x21702a12 -constexpr int32_t ECHO_REVERSE_BYTES = 0x2a12 | - toInt(testpropertyutils_impl::VehiclePropertyGroup::VENDOR) | - toInt(testpropertyutils_impl::VehicleArea::GLOBAL) | - toInt(testpropertyutils_impl::VehiclePropertyType::BYTES); - -// This property is used for testing vendor error codes end to end. -// 0x21402a13 -constexpr int32_t VENDOR_PROPERTY_ID = 0x2a13 | - toInt(testpropertyutils_impl::VehiclePropertyGroup::VENDOR) | - toInt(testpropertyutils_impl::VehicleArea::GLOBAL) | - toInt(testpropertyutils_impl::VehiclePropertyType::INT32); - -// This property is used for test purpose. End to end tests use this property to test set and get -// method for MIXED type properties. -constexpr int32_t kMixedTypePropertyForTest = - 0x1111 | toInt(testpropertyutils_impl::VehiclePropertyGroup::VENDOR) | - toInt(testpropertyutils_impl::VehicleArea::GLOBAL) | - toInt(testpropertyutils_impl::VehiclePropertyType::MIXED); -} // namespace vehicle -} // namespace automotive -} // namespace hardware -} // namespace android - -#endif // android_hardware_automotive_vehicle_utils_test_include_TestPropertyUtils_H_ diff --git a/automotive/vehicle/aidl/impl/utils/test/Android.bp b/automotive/vehicle/aidl/impl/utils/test_vendor_properties/Android.bp similarity index 68% rename from automotive/vehicle/aidl/impl/utils/test/Android.bp rename to automotive/vehicle/aidl/impl/utils/test_vendor_properties/Android.bp index ad9954fbf2..62c89acff8 100644 --- a/automotive/vehicle/aidl/impl/utils/test/Android.bp +++ b/automotive/vehicle/aidl/impl/utils/test_vendor_properties/Android.bp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2021 The Android Open Source Project + * Copyright (C) 2023 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. @@ -18,9 +18,13 @@ package { default_applicable_licenses: ["Android-Apache-2.0"], } -cc_library_headers { - name: "VehicleHalTestUtilHeaders", - vendor: true, - header_libs: ["VehicleHalUtilHeaders"], - export_include_dirs: ["include"], +filegroup { + name: "VhalTestVendorProperties", + srcs: [ + "**/*.aidl", + ], + visibility: [ + "//hardware/interfaces/automotive/vehicle/aidl:__subpackages__", + "//packages/services/Car:__subpackages__", + ], } diff --git a/automotive/vehicle/aidl/impl/utils/test_vendor_properties/android/hardware/automotive/vehicle/TestVendorProperty.aidl b/automotive/vehicle/aidl/impl/utils/test_vendor_properties/android/hardware/automotive/vehicle/TestVendorProperty.aidl new file mode 100644 index 0000000000..3c877fa1ce --- /dev/null +++ b/automotive/vehicle/aidl/impl/utils/test_vendor_properties/android/hardware/automotive/vehicle/TestVendorProperty.aidl @@ -0,0 +1,145 @@ +/* + * Copyright (C) 2023 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 android.hardware.automotive.vehicle; + +/** + * Test vendor properties used in reference VHAL implementation. + */ +@Backing(type="int") +enum TestVendorProperty { + + /** + * Vendor version of CLUSTER_SWITCH_UI, used for the end-to-end testing of ClusterHomeService. + * + * VehiclePropertyGroup.VENDOR | VehicleArea.GLOBAL | VehiclePropertyType.INT32, + */ + VENDOR_CLUSTER_SWITCH_UI = 0x0F34 + 0x20000000 + 0x01000000 + 0x00400000, + + /** + * Vendor version of CLUSTER_DISPLAY_STATE, used for the end-to-end testing of + * ClusterHomeService. + * + * VehiclePropertyGroup.VENDOR | VehicleArea.GLOBAL | VehiclePropertyType.INT32_VEC + */ + VENDOR_CLUSTER_DISPLAY_STATE = 0x0F35 + 0x20000000 + 0x01000000 + 0x00410000, + + /** + * Vendor version of CLUSTER_REPORT_STATE, used for the end-to-end testing of + * ClusterHomeService. + * + * VehiclePropertyGroup.VENDOR | VehicleArea.GLOBAL | VehiclePropertyGroup.MIXED + */ + VENDOR_CLUSTER_REPORT_STATE = 0x0F36 + 0x20000000 + 0x01000000 + 0x00E00000, + + /** + * Vendor version of CLUSTER_REQUEST_DISPLAY, used for the end-to-end testing of + * ClusterHomeService. + * + * VehiclePropertyGroup.VENDOR | VehicleArea.GLOBAL | VehiclePropertyType.INT32 + */ + VENDOR_CLUSTER_REQUEST_DISPLAY = 0x0F37 + 0x20000000 + 0x01000000 + 0x00400000, + + /** + * Vendor version of CLUSTER_NAVIGATION_STATE, used for the end-to-end testing of + * ClusterHomeService. + * + * VehiclePropertyGroup.VENDOR | VehicleArea.GLOBAL | VehiclePropertyType.BYTES + */ + VENDOR_CLUSTER_NAVIGATION_STATE = 0x0F38 + 0x20000000 + 0x01000000 + 0x00700000, + + // These properties are placeholder properties for developers to test new features without + // implementing a real property. + + /** + * VehiclePropertyGroup.VENDOR | VehicleArea.GLOBAL | VehiclePropertyType.INT32 + */ + PLACEHOLDER_PROPERTY_INT = 0x2A11 + 0x20000000 + 0x01000000 + 0x00400000, + + /** + * VehiclePropertyGroup.VENDOR | VehicleArea.GLOBAL | VehiclePropertyType.FLOAT + */ + PLACEHOLDER_PROPERTY_FLOAT = 0x2A11 + 0x20000000 + 0x01000000 + 0x00600000, + + /** + * VehiclePropertyGroup.VENDOR | VehicleArea.GLOBAL | VehiclePropertyType.BOOLEAN + */ + PLACEHOLDER_PROPERTY_BOOLEAN = 0x2A11 + 0x20000000 + 0x01000000 + 0x00200000, + + /** + * VehiclePropertyGroup.VENDOR | VehicleArea.GLOBAL | VehiclePropertyType.STRING + */ + PLACEHOLDER_PROPERTY_STRING = 0x2A11 + 0x20000000 + 0x01000000 + 0x00100000, + + /** + * This property is used for testing LargeParcelable marshalling/unmarhsalling end to end. + * It acts as an regular property that stores the property value when setting and return the + * value when getting, except that all the byteValues used in the setValue response would be + * filled in the reverse order. + * + * This is used in {@code VehicleHalLargeParcelableTest}. + * + * VehiclePropertyGroup.VENDOR | VehicleArea.GLOBAL | VehiclePropertyType.BYTES + * + * 0x21702a12 + */ + ECHO_REVERSE_BYTES = 0x2A12 + 0x20000000 + 0x01000000 + 0x00700000, + + /** + * This property is used for testing vendor error codes end to end. + * + * VehiclePropertyGroup.VENDOR | VehicleArea.GLOBAL | VehiclePropertyType.INT32 + * + * 0x21402a13 + */ + VENDOR_PROPERTY_FOR_ERROR_CODE_TESTING = 0x2A13 + 0x20000000 + 0x01000000 + 0x00400000, + + /** + * This property is used for test purpose. End to end tests use this property to test set and + * get method for MIXED type properties. + * + * VehiclePropertyGroup.VENDOR | VehicleArea.GLOBAL | VehiclePropertyGroup.MIXED + */ + MIXED_TYPE_PROPERTY_FOR_TEST = 0x1111 + 0x20000000 + 0x01000000 + 0x00E00000, + + /** + * Property used for {@code CarVendorPropertyCustomPermissionTest}. + * + * VehiclePropertyGroup.VENDOR | VehicleArea.DOOR | VehiclePropertyGroup.BOOLEAN + */ + VENDOR_EXTENSION_BOOLEAN_PROPERTY = 0x0101 + 0x20000000 + 0x06000000 + 0x00200000, + + /** + * Property used for {@code CarVendorPropertyCustomPermissionTest}. + * + * VehiclePropertyGroup.VENDOR | VehicleArea.SEAT | VehiclePropertyGroup.FLOAT + */ + VENDOR_EXTENSION_FLOAT_PROPERTY = 0x102 + 0x20000000 + 0x05000000 + 0x00600000, + + /** + * Property used for {@code CarVendorPropertyCustomPermissionTest}. + * + * VehiclePropertyGroup.VENDOR | VehicleArea.WINDOW | VehiclePropertyGroup.INT32 + */ + VENDOR_EXTENSION_INT_PROPERTY = 0x103 + 0x20000000 + 0x03000000 + 0x00400000, + + /** + * Property used for {@code CarVendorPropertyCustomPermissionTest}. + * + * VehiclePropertyGroup.VENDOR | VehicleArea.GLOBAL | VehiclePropertyGroup.STRING + */ + VENDOR_EXTENSION_STRING_PROPERTY = 0x103 + 0x20000000 + 0x01000000 + 0x00100000, +}