Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 071eddfe authored by Yu Shan's avatar Yu Shan Committed by Android (Google) Code Review
Browse files

Merge "Use AIDL for test vendor properties." into main

parents 4d05de1b 2fd9496e
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -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"],
+33 −21
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@
#include <PropertyUtils.h>

#ifdef ENABLE_VEHICLE_HAL_TEST_PROPERTIES
#include <TestPropertyUtils.h>
#include <android/hardware/automotive/vehicle/TestVendorProperty.h>
#endif  // ENABLE_VEHICLE_HAL_TEST_PROPERTIES

#include <android-base/strings.h>
@@ -91,10 +91,6 @@ const std::unordered_map<std::string, int> 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<std::string, int> 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 T>
class ConstantParser final : public ConstantParserInterface {
  public:
@@ -181,6 +162,33 @@ class ConstantParser final : public ConstantParserInterface {
    std::unordered_map<std::string, int> 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 T>
class CppConstantParser final : public ConstantParserInterface {
  public:
    CppConstantParser() {
        for (const T& v : android::enum_range<T>()) {
            std::string name = android::hardware::automotive::vehicle::toString(v);
            mValueByName[name] = toInt(v);
        }
    }

    ~CppConstantParser() = default;

    Result<int> 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<std::string, int> 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<ConstantParser<LaneCenteringAssistState>>();
    mConstantParsersByType["Constants"] = std::make_unique<LocalVariableParser>();
#ifdef ENABLE_VEHICLE_HAL_TEST_PROPERTIES
    mConstantParsersByType["TestVendorProperty"] =
            std::make_unique<CppConstantParser<TestVendorProperty>>();
#endif  // ENABLE_VEHICLE_HAL_TEST_PROPERTIES
}

template <>
+14 −14
Original line number Diff line number Diff line
{
    "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"
            ]
+5 −5
Original line number Diff line number Diff line
{
    "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"
        }
+5 −2
Original line number Diff line number Diff line
@@ -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: [
Loading