Merge "Support effect destroy at any state" into main
diff --git a/audio/aidl/default/config/audioPolicy/api/current.txt b/audio/aidl/default/config/audioPolicy/api/current.txt
index 7fce8fb..1249a09 100644
--- a/audio/aidl/default/config/audioPolicy/api/current.txt
+++ b/audio/aidl/default/config/audioPolicy/api/current.txt
@@ -223,6 +223,18 @@
     enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_FLAC;
     enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_HE_AAC_V1;
     enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_HE_AAC_V2;
+    enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_IAMF_BASE_AAC;
+    enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_IAMF_BASE_ENHANCED_AAC;
+    enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_IAMF_BASE_ENHANCED_FLAC;
+    enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_IAMF_BASE_ENHANCED_OPUS;
+    enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_IAMF_BASE_ENHANCED_PCM;
+    enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_IAMF_BASE_FLAC;
+    enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_IAMF_BASE_OPUS;
+    enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_IAMF_BASE_PCM;
+    enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_IAMF_SIMPLE_AAC;
+    enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_IAMF_SIMPLE_FLAC;
+    enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_IAMF_SIMPLE_OPUS;
+    enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_IAMF_SIMPLE_PCM;
     enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_IEC60958;
     enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_IEC61937;
     enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_LC3;
diff --git a/audio/aidl/default/config/audioPolicy/audio_policy_configuration.xsd b/audio/aidl/default/config/audioPolicy/audio_policy_configuration.xsd
index 1f90313..8adac8c 100644
--- a/audio/aidl/default/config/audioPolicy/audio_policy_configuration.xsd
+++ b/audio/aidl/default/config/audioPolicy/audio_policy_configuration.xsd
@@ -417,6 +417,18 @@
             <xs:enumeration value="AUDIO_FORMAT_APTX_ADAPTIVE_R4"/>
             <xs:enumeration value="AUDIO_FORMAT_DTS_HD_MA"/>
             <xs:enumeration value="AUDIO_FORMAT_DTS_UHD_P2"/>
+            <xs:enumeration value="AUDIO_FORMAT_IAMF_SIMPLE_OPUS"/>
+            <xs:enumeration value="AUDIO_FORMAT_IAMF_SIMPLE_AAC"/>
+            <xs:enumeration value="AUDIO_FORMAT_IAMF_SIMPLE_PCM"/>
+            <xs:enumeration value="AUDIO_FORMAT_IAMF_SIMPLE_FLAC"/>
+            <xs:enumeration value="AUDIO_FORMAT_IAMF_BASE_OPUS"/>
+            <xs:enumeration value="AUDIO_FORMAT_IAMF_BASE_AAC"/>
+            <xs:enumeration value="AUDIO_FORMAT_IAMF_BASE_PCM"/>
+            <xs:enumeration value="AUDIO_FORMAT_IAMF_BASE_FLAC"/>
+            <xs:enumeration value="AUDIO_FORMAT_IAMF_BASE_ENHANCED_OPUS"/>
+            <xs:enumeration value="AUDIO_FORMAT_IAMF_BASE_ENHANCED_AAC"/>
+            <xs:enumeration value="AUDIO_FORMAT_IAMF_BASE_ENHANCED_PCM"/>
+            <xs:enumeration value="AUDIO_FORMAT_IAMF_BASE_ENHANCED_FLAC"/>
         </xs:restriction>
     </xs:simpleType>
     <xs:simpleType name="extendableAudioFormat">
diff --git a/automotive/vehicle/Android.bp b/automotive/vehicle/Android.bp
index 606e108..7c2d115 100644
--- a/automotive/vehicle/Android.bp
+++ b/automotive/vehicle/Android.bp
@@ -19,6 +19,14 @@
 }
 
 cc_defaults {
+    name: "VehicleHalInterfaceDefaults-V3",
+    static_libs: [
+        "android.hardware.automotive.vehicle-V3-ndk",
+        "android.hardware.automotive.vehicle.property-V4-ndk",
+    ],
+}
+
+cc_defaults {
     name: "VehicleHalInterfaceDefaults",
     static_libs: [
         "android.hardware.automotive.vehicle-V3-ndk",
diff --git a/automotive/vehicle/aidl/generated_lib/3/cpp/Android.bp b/automotive/vehicle/aidl/generated_lib/3/cpp/Android.bp
index 7ff27a4..8e750b1 100644
--- a/automotive/vehicle/aidl/generated_lib/3/cpp/Android.bp
+++ b/automotive/vehicle/aidl/generated_lib/3/cpp/Android.bp
@@ -19,6 +19,15 @@
 }
 
 cc_library_headers {
+    name: "IVehicleGeneratedHeaders-V3-default",
+    vendor_available: true,
+    local_include_dirs: ["."],
+    export_include_dirs: ["."],
+    defaults: ["VehicleHalInterfaceDefaults-V3"],
+    host_supported: true,
+}
+
+cc_library_headers {
     name: "IVehicleGeneratedHeaders-V3",
     vendor_available: true,
     local_include_dirs: ["."],
diff --git a/automotive/vehicle/aidl/impl/3/Android.bp b/automotive/vehicle/aidl/impl/3/Android.bp
new file mode 100644
index 0000000..e575061
--- /dev/null
+++ b/automotive/vehicle/aidl/impl/3/Android.bp
@@ -0,0 +1,42 @@
+/*
+ * 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_defaults {
+    name: "VehicleHalDefaults-V3",
+    static_libs: [
+        "android-automotive-large-parcelable-lib",
+        "libmath",
+    ],
+    shared_libs: [
+        "libbase",
+        "liblog",
+        "libutils",
+    ],
+    cflags: [
+        "-Wall",
+        "-Wextra",
+        "-Werror",
+        "-Wthread-safety",
+    ],
+    defaults: [
+        "VehicleHalInterfaceDefaults-V3",
+        "android-automotive-large-parcelable-defaults",
+    ],
+}
diff --git a/automotive/vehicle/aidl/impl/3/README.md b/automotive/vehicle/aidl/impl/3/README.md
new file mode 100644
index 0000000..bf80122
--- /dev/null
+++ b/automotive/vehicle/aidl/impl/3/README.md
@@ -0,0 +1,58 @@
+# AIDL VHAL libraries and reference implementation.
+---
+
+This directory stores the libraries useful for implementing vendor AIDL VHAL.
+This directory also stores a reference fake implementation for AIDL VHAL.
+
+## default_config
+
+Stores the default vehicle property configurations for reference vehicle HAL.
+Vendor implementation could copy this library but must update the configuration
+to meet their own requirements, e.g. enable or disable certain properties or
+update the initial value for certain properties.
+
+##	fake_impl
+
+Contains libraries used specifically for the fake reference VHAL implementation.
+These libraries are for test only and must not be directly used for vendor
+VHAL implementation.
+
+These libraries contain test-spcific logic and must not run directly on a real
+vehicle.
+
+## grpc
+
+Stores code for GRPC based VHAL implementation.
+
+## hardware
+
+Defines an interface `IVehicleHardware.h` which vendor must implement for
+vehicle-specific logic if they want to follow our reference VHAL design.
+
+## proto
+
+Stores Some protobuf files translated from AIDL VHAL interface types. These
+files are used in GRPC VHAL implementation.
+
+## utils
+
+Defines a library `VehicleHalUtils-V3` which provides useful utility functions for
+VHAL implementation. Vendor VHAL could use this library.
+
+## vhal
+
+Defines a library `DefaultVehicleHal` which provides generic logic for all VHAL
+implementations (including reference VHAL). Vendor VHAL implementation could
+use this library, along with their own implementation for `IVehicleHardware`
+interface.
+
+Also defines a binary `android.hardware.automotive.vehicle@V3-default-service`
+which is the reference VHAL implementation. It implements `IVehicle.aidl`
+interface. It uses `DefaultVehicleHal`, along with `FakeVehicleHardware`
+(in fake_impl). It simulates the vehicle bus interaction by using an
+in-memory map. Meaning that all properties (except for some special ones) are
+just written into a hash map and read from a hash map without relying on any
+hardware. As a result, the reference implementation can run on emulator or
+any host environment.
+
+Vendor must not directly use the reference implementation for a real vehicle.
\ No newline at end of file
diff --git a/automotive/vehicle/aidl/impl/3/default_config/JsonConfigLoader/Android.bp b/automotive/vehicle/aidl/impl/3/default_config/JsonConfigLoader/Android.bp
new file mode 100644
index 0000000..727c193
--- /dev/null
+++ b/automotive/vehicle/aidl/impl/3/default_config/JsonConfigLoader/Android.bp
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2022 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 {
+    name: "VehicleHalJsonConfigLoader-V3",
+    vendor: true,
+    srcs: ["src/*.cpp"],
+    local_include_dirs: ["include"],
+    export_include_dirs: ["include"],
+    defaults: ["VehicleHalDefaults-V3"],
+    static_libs: ["VehicleHalUtils-V3"],
+    header_libs: [
+        "IVehicleGeneratedHeaders-V3-default",
+    ],
+    shared_libs: ["libjsoncpp"],
+}
+
+cc_library {
+    name: "VehicleHalJsonConfigLoaderEnableTestProperties-V3",
+    vendor: true,
+    srcs: [
+        "src/*.cpp",
+        ":VhalTestVendorProperties-V3",
+    ],
+    local_include_dirs: ["include"],
+    export_include_dirs: ["include"],
+    defaults: ["VehicleHalDefaults-V3"],
+    static_libs: ["VehicleHalUtils-V3"],
+    header_libs: [
+        "IVehicleGeneratedHeaders-V3-default",
+        "libbinder_headers",
+    ],
+    cflags: ["-DENABLE_VEHICLE_HAL_TEST_PROPERTIES"],
+    shared_libs: ["libjsoncpp"],
+    host_supported: true,
+}
+
+cc_library_headers {
+    name: "VehicleHalJsonConfigLoaderHeaders-V3",
+    vendor: true,
+    local_include_dirs: ["include"],
+    export_include_dirs: ["include"],
+    defaults: ["VehicleHalDefaults-V3"],
+    static_libs: ["VehicleHalUtils-V3"],
+    header_libs: [
+        "IVehicleGeneratedHeaders-V3-default",
+    ],
+    shared_libs: ["libjsoncpp"],
+}
diff --git a/automotive/vehicle/aidl/impl/default_config/JsonConfigLoader/include/ConfigDeclaration.h b/automotive/vehicle/aidl/impl/3/default_config/JsonConfigLoader/include/ConfigDeclaration.h
similarity index 100%
rename from automotive/vehicle/aidl/impl/default_config/JsonConfigLoader/include/ConfigDeclaration.h
rename to automotive/vehicle/aidl/impl/3/default_config/JsonConfigLoader/include/ConfigDeclaration.h
diff --git a/automotive/vehicle/aidl/impl/default_config/JsonConfigLoader/include/JsonConfigLoader.h b/automotive/vehicle/aidl/impl/3/default_config/JsonConfigLoader/include/JsonConfigLoader.h
similarity index 100%
rename from automotive/vehicle/aidl/impl/default_config/JsonConfigLoader/include/JsonConfigLoader.h
rename to automotive/vehicle/aidl/impl/3/default_config/JsonConfigLoader/include/JsonConfigLoader.h
diff --git a/automotive/vehicle/aidl/impl/default_config/JsonConfigLoader/src/JsonConfigLoader.cpp b/automotive/vehicle/aidl/impl/3/default_config/JsonConfigLoader/src/JsonConfigLoader.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/default_config/JsonConfigLoader/src/JsonConfigLoader.cpp
rename to automotive/vehicle/aidl/impl/3/default_config/JsonConfigLoader/src/JsonConfigLoader.cpp
diff --git a/automotive/vehicle/aidl/impl/3/default_config/JsonConfigLoader/test/Android.bp b/automotive/vehicle/aidl/impl/3/default_config/JsonConfigLoader/test/Android.bp
new file mode 100644
index 0000000..1ed4df7
--- /dev/null
+++ b/automotive/vehicle/aidl/impl/3/default_config/JsonConfigLoader/test/Android.bp
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2022 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_team: "trendy_team_aaos_framework",
+    default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+cc_test {
+    name: "JsonConfigLoaderUnitTest-V3",
+    vendor: true,
+    srcs: ["*.cpp"],
+    static_libs: [
+        "VehicleHalJsonConfigLoader-V3",
+        "VehicleHalUtils-V3",
+        "libgtest",
+        "libjsoncpp",
+    ],
+    defaults: ["VehicleHalDefaults-V3"],
+    test_suites: ["device-tests"],
+}
+
+cc_test {
+    name: "JsonConfigLoaderUnitTestEnableTestProperties-V3",
+    vendor: true,
+    srcs: ["*.cpp"],
+    static_libs: [
+        "VehicleHalJsonConfigLoaderEnableTestProperties-V3",
+        "VehicleHalUtils-V3",
+        "libgtest",
+        "libjsoncpp",
+    ],
+    defaults: ["VehicleHalDefaults-V3"],
+    test_suites: ["device-tests"],
+}
diff --git a/automotive/vehicle/aidl/impl/default_config/JsonConfigLoader/test/JsonConfigLoaderUnitTest.cpp b/automotive/vehicle/aidl/impl/3/default_config/JsonConfigLoader/test/JsonConfigLoaderUnitTest.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/default_config/JsonConfigLoader/test/JsonConfigLoaderUnitTest.cpp
rename to automotive/vehicle/aidl/impl/3/default_config/JsonConfigLoader/test/JsonConfigLoaderUnitTest.cpp
diff --git a/automotive/vehicle/aidl/impl/default_config/TEST_MAPPING b/automotive/vehicle/aidl/impl/3/default_config/TEST_MAPPING
similarity index 100%
rename from automotive/vehicle/aidl/impl/default_config/TEST_MAPPING
rename to automotive/vehicle/aidl/impl/3/default_config/TEST_MAPPING
diff --git a/automotive/vehicle/aidl/impl/3/default_config/config/Android.bp b/automotive/vehicle/aidl/impl/3/default_config/config/Android.bp
new file mode 100644
index 0000000..bf1aa90
--- /dev/null
+++ b/automotive/vehicle/aidl/impl/3/default_config/config/Android.bp
@@ -0,0 +1,68 @@
+package {
+    // See: http://go/android-license-faq
+    // A large-scale-change added 'default_applicable_licenses' to import
+    // all of the 'license_kinds' from "hardware_interfaces_license"
+    // to get the below license kinds:
+    //   SPDX-license-identifier-Apache-2.0
+    default_applicable_licenses: ["hardware_interfaces_license"],
+}
+
+filegroup {
+    name: "VehicleHalDefaultProperties_JSON-V3",
+    srcs: ["DefaultProperties.json"],
+}
+
+filegroup {
+    name: "VehicleHalTestProperties_JSON-V3",
+    srcs: ["TestProperties.json"],
+}
+
+filegroup {
+    name: "VehicleHalVendorClusterTestProperties_JSON-V3",
+    srcs: ["VendorClusterTestProperties.json"],
+}
+
+prebuilt_etc {
+    name: "Prebuilt_VehicleHalDefaultProperties_JSON-V3",
+    filename_from_src: true,
+    src: "DefaultProperties.json",
+    sub_dir: "automotive/vhalconfig/3/",
+    vendor: true,
+}
+
+prebuilt_etc {
+    name: "Prebuilt_VehicleHalTestProperties_JSON-V3",
+    filename_from_src: true,
+    src: "TestProperties.json",
+    sub_dir: "automotive/vhalconfig/3/",
+    vendor: true,
+}
+
+prebuilt_etc {
+    name: "Prebuilt_VehicleHalVendorClusterTestProperties_JSON-V3",
+    filename_from_src: true,
+    src: "VendorClusterTestProperties.json",
+    sub_dir: "automotive/vhalconfig/3/",
+    vendor: true,
+}
+
+prebuilt_etc_host {
+    name: "Host_Prebuilt_VehicleHalDefaultProperties_JSON-V3",
+    filename_from_src: true,
+    src: "DefaultProperties.json",
+    relative_install_path: "automotive/vhalconfig/3/",
+}
+
+prebuilt_etc_host {
+    name: "Host_Prebuilt_VehicleHalTestProperties_JSON-V3",
+    filename_from_src: true,
+    src: "TestProperties.json",
+    relative_install_path: "automotive/vhalconfig/3/",
+}
+
+prebuilt_etc_host {
+    name: "Host_Prebuilt_VehicleHalVendorClusterTestProperties_JSON-V3",
+    filename_from_src: true,
+    src: "VendorClusterTestProperties.json",
+    relative_install_path: "automotive/vhalconfig/3/",
+}
diff --git a/automotive/vehicle/aidl/impl/default_config/config/DefaultProperties.json b/automotive/vehicle/aidl/impl/3/default_config/config/DefaultProperties.json
similarity index 100%
rename from automotive/vehicle/aidl/impl/default_config/config/DefaultProperties.json
rename to automotive/vehicle/aidl/impl/3/default_config/config/DefaultProperties.json
diff --git a/automotive/vehicle/aidl/impl/default_config/config/README.md b/automotive/vehicle/aidl/impl/3/default_config/config/README.md
similarity index 100%
rename from automotive/vehicle/aidl/impl/default_config/config/README.md
rename to automotive/vehicle/aidl/impl/3/default_config/config/README.md
diff --git a/automotive/vehicle/aidl/impl/default_config/config/TestProperties.json b/automotive/vehicle/aidl/impl/3/default_config/config/TestProperties.json
similarity index 100%
rename from automotive/vehicle/aidl/impl/default_config/config/TestProperties.json
rename to automotive/vehicle/aidl/impl/3/default_config/config/TestProperties.json
diff --git a/automotive/vehicle/aidl/impl/default_config/config/VendorClusterTestProperties.json b/automotive/vehicle/aidl/impl/3/default_config/config/VendorClusterTestProperties.json
similarity index 100%
rename from automotive/vehicle/aidl/impl/default_config/config/VendorClusterTestProperties.json
rename to automotive/vehicle/aidl/impl/3/default_config/config/VendorClusterTestProperties.json
diff --git a/automotive/vehicle/aidl/impl/3/default_config/test/Android.bp b/automotive/vehicle/aidl/impl/3/default_config/test/Android.bp
new file mode 100644
index 0000000..d125d43
--- /dev/null
+++ b/automotive/vehicle/aidl/impl/3/default_config/test/Android.bp
@@ -0,0 +1,67 @@
+/*
+ * 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_team: "trendy_team_aaos_framework",
+    default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+cc_test {
+    name: "VehicleHalDefaultConfigTest-V3",
+    vendor: true,
+    defaults: ["VehicleHalDefaults-V3"],
+    srcs: ["*.cpp"],
+    static_libs: [
+        "VehicleHalJsonConfigLoader-V3",
+        "VehicleHalUtils-V3",
+        "libgmock",
+        "libgtest",
+        "libjsoncpp",
+    ],
+    header_libs: [
+        "IVehicleGeneratedHeaders-V3-default",
+    ],
+    data: [
+        ":VehicleHalDefaultProperties_JSON-V3",
+    ],
+    test_suites: ["device-tests"],
+}
+
+cc_test {
+    name: "VehicleHalDefaultConfigTestEnableTestProperties-V3",
+    vendor: true,
+    defaults: ["VehicleHalDefaults-V3"],
+    srcs: ["*.cpp"],
+    static_libs: [
+        "VehicleHalJsonConfigLoaderEnableTestProperties-V3",
+        "VehicleHalUtils-V3",
+        "libgmock",
+        "libgtest",
+        "libjsoncpp",
+    ],
+    cflags: [
+        "-DENABLE_VEHICLE_HAL_TEST_PROPERTIES",
+    ],
+    header_libs: [
+        "IVehicleGeneratedHeaders-V3-default",
+    ],
+    data: [
+        ":VehicleHalDefaultProperties_JSON-V3",
+        ":VehicleHalTestProperties_JSON-V3",
+        ":VehicleHalVendorClusterTestProperties_JSON-V3",
+    ],
+    test_suites: ["device-tests"],
+}
diff --git a/automotive/vehicle/aidl/impl/default_config/test/DefaultConfigTest.cpp b/automotive/vehicle/aidl/impl/3/default_config/test/DefaultConfigTest.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/default_config/test/DefaultConfigTest.cpp
rename to automotive/vehicle/aidl/impl/3/default_config/test/DefaultConfigTest.cpp
diff --git a/automotive/vehicle/aidl/impl/3/fake_impl/GeneratorHub/Android.bp b/automotive/vehicle/aidl/impl/3/fake_impl/GeneratorHub/Android.bp
new file mode 100644
index 0000000..10e4b7e
--- /dev/null
+++ b/automotive/vehicle/aidl/impl/3/fake_impl/GeneratorHub/Android.bp
@@ -0,0 +1,36 @@
+/*
+ * 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 {
+    name: "FakeVehicleHalValueGenerators-V3",
+    vendor: true,
+    srcs: ["src/*.cpp"],
+    local_include_dirs: ["include"],
+    export_include_dirs: ["include"],
+    defaults: ["VehicleHalDefaults-V3"],
+    static_libs: [
+        "VehicleHalUtils-V3",
+        "FakeObd2Frame-V3",
+    ],
+    shared_libs: [
+        "libjsoncpp",
+    ],
+    host_supported: true,
+}
diff --git a/automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/include/FakeValueGenerator.h b/automotive/vehicle/aidl/impl/3/fake_impl/GeneratorHub/include/FakeValueGenerator.h
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/include/FakeValueGenerator.h
rename to automotive/vehicle/aidl/impl/3/fake_impl/GeneratorHub/include/FakeValueGenerator.h
diff --git a/automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/include/GeneratorHub.h b/automotive/vehicle/aidl/impl/3/fake_impl/GeneratorHub/include/GeneratorHub.h
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/include/GeneratorHub.h
rename to automotive/vehicle/aidl/impl/3/fake_impl/GeneratorHub/include/GeneratorHub.h
diff --git a/automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/include/JsonFakeValueGenerator.h b/automotive/vehicle/aidl/impl/3/fake_impl/GeneratorHub/include/JsonFakeValueGenerator.h
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/include/JsonFakeValueGenerator.h
rename to automotive/vehicle/aidl/impl/3/fake_impl/GeneratorHub/include/JsonFakeValueGenerator.h
diff --git a/automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/include/LinearFakeValueGenerator.h b/automotive/vehicle/aidl/impl/3/fake_impl/GeneratorHub/include/LinearFakeValueGenerator.h
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/include/LinearFakeValueGenerator.h
rename to automotive/vehicle/aidl/impl/3/fake_impl/GeneratorHub/include/LinearFakeValueGenerator.h
diff --git a/automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/src/GeneratorHub.cpp b/automotive/vehicle/aidl/impl/3/fake_impl/GeneratorHub/src/GeneratorHub.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/src/GeneratorHub.cpp
rename to automotive/vehicle/aidl/impl/3/fake_impl/GeneratorHub/src/GeneratorHub.cpp
diff --git a/automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/src/JsonFakeValueGenerator.cpp b/automotive/vehicle/aidl/impl/3/fake_impl/GeneratorHub/src/JsonFakeValueGenerator.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/src/JsonFakeValueGenerator.cpp
rename to automotive/vehicle/aidl/impl/3/fake_impl/GeneratorHub/src/JsonFakeValueGenerator.cpp
diff --git a/automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/src/LinearFakeValueGenerator.cpp b/automotive/vehicle/aidl/impl/3/fake_impl/GeneratorHub/src/LinearFakeValueGenerator.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/src/LinearFakeValueGenerator.cpp
rename to automotive/vehicle/aidl/impl/3/fake_impl/GeneratorHub/src/LinearFakeValueGenerator.cpp
diff --git a/automotive/vehicle/aidl/impl/3/fake_impl/GeneratorHub/test/Android.bp b/automotive/vehicle/aidl/impl/3/fake_impl/GeneratorHub/test/Android.bp
new file mode 100644
index 0000000..623417b
--- /dev/null
+++ b/automotive/vehicle/aidl/impl/3/fake_impl/GeneratorHub/test/Android.bp
@@ -0,0 +1,46 @@
+/*
+ * 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_team: "trendy_team_automotive",
+    default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+cc_test {
+    name: "FakeVehicleHalValueGeneratorsTest-V3",
+    vendor: true,
+    srcs: ["*.cpp"],
+    defaults: ["VehicleHalDefaults-V3"],
+    static_libs: [
+        "VehicleHalUtils-V3",
+        "FakeVehicleHalValueGenerators-V3",
+        "FakeObd2Frame-V3",
+        "libjsoncpp",
+    ],
+    data: [
+        ":FakeVehicleHalValueGeneratorsTestFiles-V3",
+    ],
+    test_suites: ["device-tests"],
+}
+
+filegroup {
+    name: "FakeVehicleHalValueGeneratorsTestFiles-V3",
+    srcs: [
+        "prop.json",
+        "prop_different_types.json",
+        "prop_invalid.json",
+    ],
+}
diff --git a/automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/test/FakeVehicleHalValueGeneratorsTest.cpp b/automotive/vehicle/aidl/impl/3/fake_impl/GeneratorHub/test/FakeVehicleHalValueGeneratorsTest.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/test/FakeVehicleHalValueGeneratorsTest.cpp
rename to automotive/vehicle/aidl/impl/3/fake_impl/GeneratorHub/test/FakeVehicleHalValueGeneratorsTest.cpp
diff --git a/automotive/vehicle/aidl/impl/fake_impl/hardware/test/fakedata/prop.json b/automotive/vehicle/aidl/impl/3/fake_impl/GeneratorHub/test/prop.json
similarity index 100%
copy from automotive/vehicle/aidl/impl/fake_impl/hardware/test/fakedata/prop.json
copy to automotive/vehicle/aidl/impl/3/fake_impl/GeneratorHub/test/prop.json
diff --git a/automotive/vehicle/aidl/impl/3/fake_impl/GeneratorHub/test/prop_different_types.json b/automotive/vehicle/aidl/impl/3/fake_impl/GeneratorHub/test/prop_different_types.json
new file mode 100644
index 0000000..38cd86b
--- /dev/null
+++ b/automotive/vehicle/aidl/impl/3/fake_impl/GeneratorHub/test/prop_different_types.json
@@ -0,0 +1,74 @@
+[
+    {
+        "timestamp": 1000000,
+        "areaId": 0,
+        "value": 1,
+        "prop": 287310600
+    },
+    {
+        "timestamp": 1000000,
+        "areaId": 0,
+        "value": 2,
+        "prop": 289408000
+    },
+    {
+        "timestamp": 1000000,
+        "areaId": 0,
+        "value": 3.3,
+        "prop": 291504905
+    },
+    {
+        "timestamp": 1000000,
+        "areaId": 0,
+        "value": 4,
+        "prop": 290457096
+    },
+    {
+        "timestamp": 1000000,
+        "areaId": 0,
+        "value": "test",
+        "prop": 286265094
+    },
+    {
+        "timestamp": 1000000,
+        "areaId": 0,
+        "value": [
+            1,
+            2
+        ],
+        "prop": 289476368
+    },
+    {
+        "timestamp": 1000000,
+        "areaId": 0,
+        "value": {
+            "int32Values": [
+                1,
+                2
+            ],
+            "int64Values": [
+                3,
+                4
+            ],
+            "floatValues": [
+                5.5,
+                6.6
+            ],
+            "stringValue": "test"
+        },
+        "prop": 299896626
+    },
+    {
+        "timestamp": 1000000,
+        "areaId": 0,
+        "value": {
+            "int32Values": [
+                1
+            ],
+            "floatValues": [
+                1
+            ]
+        },
+        "prop": 299896064
+    }
+]
\ No newline at end of file
diff --git a/automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/test/prop_invalid.json b/automotive/vehicle/aidl/impl/3/fake_impl/GeneratorHub/test/prop_invalid.json
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/test/prop_invalid.json
rename to automotive/vehicle/aidl/impl/3/fake_impl/GeneratorHub/test/prop_invalid.json
diff --git a/automotive/vehicle/aidl/impl/3/fake_impl/README.md b/automotive/vehicle/aidl/impl/3/fake_impl/README.md
new file mode 100644
index 0000000..5e1df94
--- /dev/null
+++ b/automotive/vehicle/aidl/impl/3/fake_impl/README.md
@@ -0,0 +1,28 @@
+# Fake reference AIDL VHAL implementation libraries
+---
+
+This directory stores libraries for implementing a fake reference AIDL VHAL.
+
+WARNING: All the libraries here are for TEST ONLY.
+
+## GeneratorHub
+
+Defines a library `FakeVehicleHalValueGenerators-V3` that could generate fake
+vehicle property values for testing.
+
+## hardware
+
+Defines a fake implementation for device-specifc interface `IVehicleHardware`:
+`FakeVehicleHardware`. This implementation uses a in-memory map for storing
+property values and does not communicate with or depending on any specific
+vehicle bus.
+
+## obd2frame
+
+Defines a library `FakeObd2Frame` that generates fake OBD2 frame for OBD2
+properties.
+
+## userhal
+
+Defines a library `FakeUserHal` that emulates a real User HAL behavior by
+parsing debug commands.
diff --git a/automotive/vehicle/aidl/impl/3/fake_impl/hardware/Android.bp b/automotive/vehicle/aidl/impl/3/fake_impl/hardware/Android.bp
new file mode 100644
index 0000000..9b9b4f4
--- /dev/null
+++ b/automotive/vehicle/aidl/impl/3/fake_impl/hardware/Android.bp
@@ -0,0 +1,68 @@
+/*
+ * 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 {
+    name: "FakeVehicleHardware-V3",
+    vendor: true,
+    srcs: [
+        "src/*.cpp",
+        ":VhalTestVendorProperties-V3",
+    ],
+    local_include_dirs: ["include"],
+    export_include_dirs: ["include"],
+    cflags: [
+        "-DENABLE_VEHICLE_HAL_TEST_PROPERTIES",
+    ],
+    defaults: [
+        "VehicleHalDefaults-V3",
+        "FakeVehicleHardwareDefaults-V3",
+    ],
+    whole_static_libs: [
+        "wakeup_client_protos",
+    ],
+    host_supported: true,
+}
+
+cc_defaults {
+    name: "FakeVehicleHardwareDefaults-V3",
+    header_libs: [
+        "IVehicleHardware-V3",
+        "libbinder_headers",
+    ],
+    export_header_lib_headers: ["IVehicleHardware-V3"],
+    static_libs: [
+        "VehicleHalJsonConfigLoaderEnableTestProperties-V3",
+        "VehicleHalUtils-V3",
+        "FakeVehicleHalValueGenerators-V3",
+        "FakeObd2Frame-V3",
+        "FakeUserHal-V3",
+    ],
+    required: [
+        "Prebuilt_VehicleHalDefaultProperties_JSON-V3",
+        "Prebuilt_VehicleHalTestProperties_JSON-V3",
+        "Prebuilt_VehicleHalVendorClusterTestProperties_JSON-V3",
+    ],
+    shared_libs: [
+        "libgrpc++",
+        "libjsoncpp",
+        "libprotobuf-cpp-full",
+    ],
+    export_static_lib_headers: ["VehicleHalUtils-V3"],
+}
diff --git a/automotive/vehicle/aidl/impl/fake_impl/hardware/include/FakeVehicleHardware.h b/automotive/vehicle/aidl/impl/3/fake_impl/hardware/include/FakeVehicleHardware.h
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/hardware/include/FakeVehicleHardware.h
rename to automotive/vehicle/aidl/impl/3/fake_impl/hardware/include/FakeVehicleHardware.h
diff --git a/automotive/vehicle/aidl/impl/fake_impl/hardware/src/FakeVehicleHardware.cpp b/automotive/vehicle/aidl/impl/3/fake_impl/hardware/src/FakeVehicleHardware.cpp
similarity index 99%
copy from automotive/vehicle/aidl/impl/fake_impl/hardware/src/FakeVehicleHardware.cpp
copy to automotive/vehicle/aidl/impl/3/fake_impl/hardware/src/FakeVehicleHardware.cpp
index a6247a7..fbd20c5 100644
--- a/automotive/vehicle/aidl/impl/fake_impl/hardware/src/FakeVehicleHardware.cpp
+++ b/automotive/vehicle/aidl/impl/3/fake_impl/hardware/src/FakeVehicleHardware.cpp
@@ -110,7 +110,7 @@
         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/";
+constexpr char DEFAULT_CONFIG_DIR[] = "/vendor/etc/automotive/vhalconfig/3/";
 // The directory for property configuration file that overrides the default configuration file.
 // For config file format, see impl/default_config/config/README.md.
 constexpr char OVERRIDE_CONFIG_DIR[] = "/vendor/etc/automotive/vhaloverride/";
@@ -928,8 +928,8 @@
     grpc::ClientContext context;
     auto status = clientStub->IsVehicleInUse(&context, request, &response);
     if (!status.ok()) {
-        return StatusError(StatusCode::TRY_AGAIN) << "Cannot connect to GRPC service "
-                                                  << ", error: " << status.error_message();
+        return StatusError(StatusCode::TRY_AGAIN)
+               << "Cannot connect to GRPC service " << ", error: " << status.error_message();
     }
     auto result = mValuePool->obtainBoolean(response.isvehicleinuse());
     result->prop = toInt(VehicleProperty::VEHICLE_IN_USE);
@@ -946,8 +946,8 @@
     grpc::ClientContext context;
     auto status = clientStub->GetApPowerBootupReason(&context, request, &response);
     if (!status.ok()) {
-        return StatusError(StatusCode::TRY_AGAIN) << "Cannot connect to GRPC service "
-                                                  << ", error: " << status.error_message();
+        return StatusError(StatusCode::TRY_AGAIN)
+               << "Cannot connect to GRPC service " << ", error: " << status.error_message();
     }
     auto result = mValuePool->obtainInt32(response.bootupreason());
     result->prop = toInt(VehicleProperty::AP_POWER_BOOTUP_REASON);
diff --git a/automotive/vehicle/aidl/impl/3/fake_impl/hardware/test/Android.bp b/automotive/vehicle/aidl/impl/3/fake_impl/hardware/test/Android.bp
new file mode 100644
index 0000000..e7e5ba7
--- /dev/null
+++ b/automotive/vehicle/aidl/impl/3/fake_impl/hardware/test/Android.bp
@@ -0,0 +1,72 @@
+/*
+ * 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_team: "trendy_team_aaos_framework",
+    default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+cc_test {
+    name: "FakeVehicleHardwareTest-V3",
+    vendor: true,
+    srcs: [
+        "*.cpp",
+        ":VhalTestVendorProperties-V3",
+    ],
+    cflags: ["-DENABLE_VEHICLE_HAL_TEST_PROPERTIES"],
+    header_libs: [
+        "IVehicleHardware-V3",
+        "libbinder_headers",
+    ],
+    static_libs: [
+        "VehicleHalJsonConfigLoaderEnableTestProperties-V3",
+        "VehicleHalUtils-V3",
+        "FakeVehicleHardware-V3",
+        "FakeVehicleHalValueGenerators-V3",
+        "FakeObd2Frame-V3",
+        "FakeUserHal-V3",
+        "libgtest",
+        "libgmock",
+        "libjsoncpp",
+    ],
+    shared_libs: [
+        "libgrpc++",
+        "libprotobuf-cpp-full",
+    ],
+    data: [
+        ":VehicleHalDefaultProperties_JSON-V3",
+        ":VehicleHalTestProperties_JSON-V3",
+        ":VehicleHalVendorClusterTestProperties_JSON-V3",
+        ":FakeVehicleHardwareTestOverrideJson-V3",
+        ":FakeVehicleHardwareTestPropJson-V3",
+    ],
+    defaults: [
+        "VehicleHalDefaults-V3",
+    ],
+    // Need root to use vendor lib: libgrpc++.
+    require_root: true,
+    test_suites: ["device-tests"],
+}
+
+filegroup {
+    name: "FakeVehicleHardwareTestOverrideJson-V3",
+    srcs: ["override/*"],
+}
+
+filegroup {
+    name: "FakeVehicleHardwareTestPropJson-V3",
+    srcs: ["fakedata/prop.json"],
+}
diff --git a/automotive/vehicle/aidl/impl/fake_impl/hardware/test/FakeVehicleHardwareTest.cpp b/automotive/vehicle/aidl/impl/3/fake_impl/hardware/test/FakeVehicleHardwareTest.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/hardware/test/FakeVehicleHardwareTest.cpp
rename to automotive/vehicle/aidl/impl/3/fake_impl/hardware/test/FakeVehicleHardwareTest.cpp
diff --git a/automotive/vehicle/aidl/impl/fake_impl/hardware/test/fakedata/prop.json b/automotive/vehicle/aidl/impl/3/fake_impl/hardware/test/fakedata/prop.json
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/hardware/test/fakedata/prop.json
rename to automotive/vehicle/aidl/impl/3/fake_impl/hardware/test/fakedata/prop.json
diff --git a/automotive/vehicle/aidl/impl/fake_impl/hardware/test/override/gear_selection.json b/automotive/vehicle/aidl/impl/3/fake_impl/hardware/test/override/gear_selection.json
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/hardware/test/override/gear_selection.json
rename to automotive/vehicle/aidl/impl/3/fake_impl/hardware/test/override/gear_selection.json
diff --git a/automotive/vehicle/aidl/impl/fake_impl/hardware/test/override/hvac_temperature_set.json b/automotive/vehicle/aidl/impl/3/fake_impl/hardware/test/override/hvac_temperature_set.json
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/hardware/test/override/hvac_temperature_set.json
rename to automotive/vehicle/aidl/impl/3/fake_impl/hardware/test/override/hvac_temperature_set.json
diff --git a/automotive/vehicle/aidl/impl/3/fake_impl/obd2frame/Android.bp b/automotive/vehicle/aidl/impl/3/fake_impl/obd2frame/Android.bp
new file mode 100644
index 0000000..1e71661
--- /dev/null
+++ b/automotive/vehicle/aidl/impl/3/fake_impl/obd2frame/Android.bp
@@ -0,0 +1,33 @@
+/*
+ * 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 {
+    name: "FakeObd2Frame-V3",
+    vendor: true,
+    srcs: ["src/*.cpp"],
+    local_include_dirs: ["include"],
+    export_include_dirs: ["include"],
+    defaults: ["VehicleHalDefaults-V3"],
+    static_libs: [
+        "VehicleHalUtils-V3",
+    ],
+    export_static_lib_headers: ["VehicleHalUtils-V3"],
+    host_supported: true,
+}
diff --git a/automotive/vehicle/aidl/impl/fake_impl/obd2frame/include/FakeObd2Frame.h b/automotive/vehicle/aidl/impl/3/fake_impl/obd2frame/include/FakeObd2Frame.h
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/obd2frame/include/FakeObd2Frame.h
rename to automotive/vehicle/aidl/impl/3/fake_impl/obd2frame/include/FakeObd2Frame.h
diff --git a/automotive/vehicle/aidl/impl/fake_impl/obd2frame/include/Obd2SensorStore.h b/automotive/vehicle/aidl/impl/3/fake_impl/obd2frame/include/Obd2SensorStore.h
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/obd2frame/include/Obd2SensorStore.h
rename to automotive/vehicle/aidl/impl/3/fake_impl/obd2frame/include/Obd2SensorStore.h
diff --git a/automotive/vehicle/aidl/impl/fake_impl/obd2frame/src/FakeObd2Frame.cpp b/automotive/vehicle/aidl/impl/3/fake_impl/obd2frame/src/FakeObd2Frame.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/obd2frame/src/FakeObd2Frame.cpp
rename to automotive/vehicle/aidl/impl/3/fake_impl/obd2frame/src/FakeObd2Frame.cpp
diff --git a/automotive/vehicle/aidl/impl/fake_impl/obd2frame/src/Obd2SensorStore.cpp b/automotive/vehicle/aidl/impl/3/fake_impl/obd2frame/src/Obd2SensorStore.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/obd2frame/src/Obd2SensorStore.cpp
rename to automotive/vehicle/aidl/impl/3/fake_impl/obd2frame/src/Obd2SensorStore.cpp
diff --git a/automotive/vehicle/aidl/impl/3/fake_impl/obd2frame/test/Android.bp b/automotive/vehicle/aidl/impl/3/fake_impl/obd2frame/test/Android.bp
new file mode 100644
index 0000000..8b30477
--- /dev/null
+++ b/automotive/vehicle/aidl/impl/3/fake_impl/obd2frame/test/Android.bp
@@ -0,0 +1,32 @@
+/*
+ * 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_team: "trendy_team_aaos_framework",
+    default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+cc_test {
+    name: "FakeObd2FrameTest-V3",
+    vendor: true,
+    srcs: ["*.cpp"],
+    defaults: ["VehicleHalDefaults-V3"],
+    static_libs: [
+        "FakeObd2Frame-V3",
+        "VehicleHalUtils-V3",
+    ],
+    test_suites: ["device-tests"],
+}
diff --git a/automotive/vehicle/aidl/impl/fake_impl/obd2frame/test/FakeObd2FrameTest.cpp b/automotive/vehicle/aidl/impl/3/fake_impl/obd2frame/test/FakeObd2FrameTest.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/obd2frame/test/FakeObd2FrameTest.cpp
rename to automotive/vehicle/aidl/impl/3/fake_impl/obd2frame/test/FakeObd2FrameTest.cpp
diff --git a/automotive/vehicle/aidl/impl/fake_impl/obd2frame/test/Obd2SensorStoreTest.cpp b/automotive/vehicle/aidl/impl/3/fake_impl/obd2frame/test/Obd2SensorStoreTest.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/obd2frame/test/Obd2SensorStoreTest.cpp
rename to automotive/vehicle/aidl/impl/3/fake_impl/obd2frame/test/Obd2SensorStoreTest.cpp
diff --git a/automotive/vehicle/aidl/impl/3/fake_impl/userhal/Android.bp b/automotive/vehicle/aidl/impl/3/fake_impl/userhal/Android.bp
new file mode 100644
index 0000000..2adf7c4
--- /dev/null
+++ b/automotive/vehicle/aidl/impl/3/fake_impl/userhal/Android.bp
@@ -0,0 +1,33 @@
+/*
+ * 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 {
+    name: "FakeUserHal-V3",
+    vendor: true,
+    srcs: ["src/*.cpp"],
+    local_include_dirs: ["include"],
+    export_include_dirs: ["include"],
+    defaults: ["VehicleHalDefaults-V3"],
+    static_libs: [
+        "VehicleHalUtils-V3",
+    ],
+    export_static_lib_headers: ["VehicleHalUtils-V3"],
+    host_supported: true,
+}
diff --git a/automotive/vehicle/aidl/impl/fake_impl/userhal/include/FakeUserHal.h b/automotive/vehicle/aidl/impl/3/fake_impl/userhal/include/FakeUserHal.h
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/userhal/include/FakeUserHal.h
rename to automotive/vehicle/aidl/impl/3/fake_impl/userhal/include/FakeUserHal.h
diff --git a/automotive/vehicle/aidl/impl/fake_impl/userhal/include/UserHalHelper.h b/automotive/vehicle/aidl/impl/3/fake_impl/userhal/include/UserHalHelper.h
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/userhal/include/UserHalHelper.h
rename to automotive/vehicle/aidl/impl/3/fake_impl/userhal/include/UserHalHelper.h
diff --git a/automotive/vehicle/aidl/impl/fake_impl/userhal/include/UserHalTypes.h b/automotive/vehicle/aidl/impl/3/fake_impl/userhal/include/UserHalTypes.h
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/userhal/include/UserHalTypes.h
rename to automotive/vehicle/aidl/impl/3/fake_impl/userhal/include/UserHalTypes.h
diff --git a/automotive/vehicle/aidl/impl/fake_impl/userhal/src/FakeUserHal.cpp b/automotive/vehicle/aidl/impl/3/fake_impl/userhal/src/FakeUserHal.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/userhal/src/FakeUserHal.cpp
rename to automotive/vehicle/aidl/impl/3/fake_impl/userhal/src/FakeUserHal.cpp
diff --git a/automotive/vehicle/aidl/impl/fake_impl/userhal/src/UserHalHelper.cpp b/automotive/vehicle/aidl/impl/3/fake_impl/userhal/src/UserHalHelper.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/userhal/src/UserHalHelper.cpp
rename to automotive/vehicle/aidl/impl/3/fake_impl/userhal/src/UserHalHelper.cpp
diff --git a/automotive/vehicle/aidl/impl/3/fake_impl/userhal/test/Android.bp b/automotive/vehicle/aidl/impl/3/fake_impl/userhal/test/Android.bp
new file mode 100644
index 0000000..55178dc
--- /dev/null
+++ b/automotive/vehicle/aidl/impl/3/fake_impl/userhal/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_team: "trendy_team_aaos_framework",
+    default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+cc_test {
+    name: "FakeUserHalTest-V3",
+    vendor: true,
+    srcs: ["*.cpp"],
+    defaults: ["VehicleHalDefaults-V3"],
+    static_libs: [
+        "FakeUserHal-V3",
+        "VehicleHalUtils-V3",
+        "libgtest",
+        "libgmock",
+    ],
+    test_suites: ["device-tests"],
+}
diff --git a/automotive/vehicle/aidl/impl/fake_impl/userhal/test/UserHalHelper_test.cpp b/automotive/vehicle/aidl/impl/3/fake_impl/userhal/test/UserHalHelper_test.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/userhal/test/UserHalHelper_test.cpp
rename to automotive/vehicle/aidl/impl/3/fake_impl/userhal/test/UserHalHelper_test.cpp
diff --git a/automotive/vehicle/aidl/impl/grpc/Android.bp b/automotive/vehicle/aidl/impl/3/grpc/Android.bp
similarity index 73%
copy from automotive/vehicle/aidl/impl/grpc/Android.bp
copy to automotive/vehicle/aidl/impl/3/grpc/Android.bp
index 7a8da59..6fa2bfa 100644
--- a/automotive/vehicle/aidl/impl/grpc/Android.bp
+++ b/automotive/vehicle/aidl/impl/3/grpc/Android.bp
@@ -17,16 +17,16 @@
 }
 
 genrule {
-    name: "VehicleServerProtoStub_h@default-grpc",
+    name: "VehicleServerProtoStub_h@default-grpc-V3",
     tools: [
         "aprotoc",
         "protoc-gen-grpc-cpp-plugin",
     ],
-    cmd: "$(location aprotoc) -I$$(dirname $(location proto/VehicleServer.proto)) -Ihardware/interfaces/automotive/vehicle/aidl/impl/proto -Iexternal/protobuf/src --plugin=protoc-gen-grpc=$(location protoc-gen-grpc-cpp-plugin) $(location proto/VehicleServer.proto) --grpc_opt=generate_mock_code=true --grpc_out=$(genDir) --cpp_out=$(genDir)",
+    cmd: "$(location aprotoc) -I$$(dirname $(location proto/VehicleServer.proto)) -Ihardware/interfaces/automotive/vehicle/aidl/impl/3/proto -Iexternal/protobuf/src --plugin=protoc-gen-grpc=$(location protoc-gen-grpc-cpp-plugin) $(location proto/VehicleServer.proto) --grpc_opt=generate_mock_code=true --grpc_out=$(genDir) --cpp_out=$(genDir)",
     srcs: [
         "proto/VehicleServer.proto",
         ":libprotobuf-internal-protos",
-        ":VehicleHalProtoFiles",
+        ":VehicleHalProtoFiles-V3",
     ],
     out: [
         "VehicleServer.pb.h",
@@ -37,16 +37,16 @@
 }
 
 genrule {
-    name: "VehicleServerProtoStub_cc@default-grpc",
+    name: "VehicleServerProtoStub_cc@default-grpc-V3",
     tools: [
         "aprotoc",
         "protoc-gen-grpc-cpp-plugin",
     ],
-    cmd: "$(location aprotoc) -I$$(dirname $(location proto/VehicleServer.proto)) -Ihardware/interfaces/automotive/vehicle/aidl/impl/proto -Iexternal/protobuf/src --plugin=protoc-gen-grpc=$(location protoc-gen-grpc-cpp-plugin) $(location proto/VehicleServer.proto) --grpc_out=$(genDir) --cpp_out=$(genDir)",
+    cmd: "$(location aprotoc) -I$$(dirname $(location proto/VehicleServer.proto)) -Ihardware/interfaces/automotive/vehicle/aidl/impl/3/proto -Iexternal/protobuf/src --plugin=protoc-gen-grpc=$(location protoc-gen-grpc-cpp-plugin) $(location proto/VehicleServer.proto) --grpc_out=$(genDir) --cpp_out=$(genDir)",
     srcs: [
         "proto/VehicleServer.proto",
         ":libprotobuf-internal-protos",
-        ":VehicleHalProtoFiles",
+        ":VehicleHalProtoFiles-V3",
     ],
     out: [
         "VehicleServer.pb.cc",
@@ -56,23 +56,23 @@
 }
 
 cc_library_static {
-    name: "android.hardware.automotive.vehicle@default-grpc-libgrpc",
+    name: "android.hardware.automotive.vehicle@default-grpc-libgrpc-V3",
     vendor: true,
     host_supported: true,
     include_dirs: [
         "external/protobuf/src",
     ],
     generated_headers: [
-        "VehicleServerProtoStub_h@default-grpc",
+        "VehicleServerProtoStub_h@default-grpc-V3",
     ],
     export_generated_headers: [
-        "VehicleServerProtoStub_h@default-grpc",
+        "VehicleServerProtoStub_h@default-grpc-V3",
     ],
     generated_sources: [
-        "VehicleServerProtoStub_cc@default-grpc",
+        "VehicleServerProtoStub_cc@default-grpc-V3",
     ],
     whole_static_libs: [
-        "VehicleHalProtos",
+        "VehicleHalProtos-V3",
     ],
     shared_libs: [
         "libgrpc++",
@@ -83,18 +83,18 @@
 }
 
 cc_library_static {
-    name: "android.hardware.automotive.vehicle@default-grpc-hardware-lib",
-    defaults: ["VehicleHalDefaults"],
+    name: "android.hardware.automotive.vehicle@default-grpc-hardware-lib-V3",
+    defaults: ["VehicleHalDefaults-V3"],
     vendor: true,
     srcs: [
         "GRPCVehicleHardware.cpp",
     ],
     whole_static_libs: [
-        "android.hardware.automotive.vehicle@default-grpc-libgrpc",
-        "VehicleHalProtoMessageConverter",
+        "android.hardware.automotive.vehicle@default-grpc-libgrpc-V3",
+        "VehicleHalProtoMessageConverter-V3",
     ],
     header_libs: [
-        "IVehicleHardware",
+        "IVehicleHardware-V3",
     ],
     shared_libs: [
         "libgrpc++",
@@ -107,18 +107,18 @@
 }
 
 cc_library_static {
-    name: "android.hardware.automotive.vehicle@default-grpc-server-lib",
-    defaults: ["VehicleHalDefaults"],
+    name: "android.hardware.automotive.vehicle@default-grpc-server-lib-V3",
+    defaults: ["VehicleHalDefaults-V3"],
     vendor: true,
     srcs: [
         "GRPCVehicleProxyServer.cpp",
     ],
     whole_static_libs: [
-        "android.hardware.automotive.vehicle@default-grpc-libgrpc",
-        "VehicleHalProtoMessageConverter",
+        "android.hardware.automotive.vehicle@default-grpc-libgrpc-V3",
+        "VehicleHalProtoMessageConverter-V3",
     ],
     header_libs: [
-        "IVehicleHardware",
+        "IVehicleHardware-V3",
     ],
     shared_libs: [
         "libgrpc++",
diff --git a/automotive/vehicle/aidl/impl/grpc/GRPCVehicleHardware.cpp b/automotive/vehicle/aidl/impl/3/grpc/GRPCVehicleHardware.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/grpc/GRPCVehicleHardware.cpp
rename to automotive/vehicle/aidl/impl/3/grpc/GRPCVehicleHardware.cpp
diff --git a/automotive/vehicle/aidl/impl/grpc/GRPCVehicleHardware.h b/automotive/vehicle/aidl/impl/3/grpc/GRPCVehicleHardware.h
similarity index 97%
rename from automotive/vehicle/aidl/impl/grpc/GRPCVehicleHardware.h
rename to automotive/vehicle/aidl/impl/3/grpc/GRPCVehicleHardware.h
index 15f473c..ad2f512 100644
--- a/automotive/vehicle/aidl/impl/grpc/GRPCVehicleHardware.h
+++ b/automotive/vehicle/aidl/impl/3/grpc/GRPCVehicleHardware.h
@@ -115,9 +115,8 @@
     // A map from [propId, areaId] to the latest timestamp this property is updated.
     // The key is a tuple, the first element is the external timestamp (timestamp set by VHAL
     // server), the second element is the Android timestamp (elapsedRealtimeNano).
-    mutable std::unordered_map<PropIdAreaId, std::pair<int64_t, int64_t>,
-                               PropIdAreaIdHash> mLatestUpdateTimestamps
-            GUARDED_BY(mLatestUpdateTimestampsMutex);
+    mutable std::unordered_map<PropIdAreaId, std::pair<int64_t, int64_t>, PropIdAreaIdHash>
+            mLatestUpdateTimestamps GUARDED_BY(mLatestUpdateTimestampsMutex);
 
     // Only used for unit testing.
     GRPCVehicleHardware(std::unique_ptr<proto::VehicleServer::StubInterface> stub,
diff --git a/automotive/vehicle/aidl/impl/grpc/GRPCVehicleProxyServer.cpp b/automotive/vehicle/aidl/impl/3/grpc/GRPCVehicleProxyServer.cpp
similarity index 99%
rename from automotive/vehicle/aidl/impl/grpc/GRPCVehicleProxyServer.cpp
rename to automotive/vehicle/aidl/impl/3/grpc/GRPCVehicleProxyServer.cpp
index 7697c03..927a595 100644
--- a/automotive/vehicle/aidl/impl/grpc/GRPCVehicleProxyServer.cpp
+++ b/automotive/vehicle/aidl/impl/3/grpc/GRPCVehicleProxyServer.cpp
@@ -40,7 +40,7 @@
 
 GrpcVehicleProxyServer::GrpcVehicleProxyServer(std::string serverAddr,
                                                std::unique_ptr<IVehicleHardware>&& hardware)
-    : GrpcVehicleProxyServer(std::vector<std::string>({serverAddr}), std::move(hardware)){};
+    : GrpcVehicleProxyServer(std::vector<std::string>({serverAddr}), std::move(hardware)) {};
 
 GrpcVehicleProxyServer::GrpcVehicleProxyServer(std::vector<std::string> serverAddrs,
                                                std::unique_ptr<IVehicleHardware>&& hardware)
diff --git a/automotive/vehicle/aidl/impl/grpc/GRPCVehicleProxyServer.h b/automotive/vehicle/aidl/impl/3/grpc/GRPCVehicleProxyServer.h
similarity index 100%
rename from automotive/vehicle/aidl/impl/grpc/GRPCVehicleProxyServer.h
rename to automotive/vehicle/aidl/impl/3/grpc/GRPCVehicleProxyServer.h
diff --git a/automotive/vehicle/aidl/impl/grpc/proto/VehicleServer.proto b/automotive/vehicle/aidl/impl/3/grpc/proto/VehicleServer.proto
similarity index 100%
rename from automotive/vehicle/aidl/impl/grpc/proto/VehicleServer.proto
rename to automotive/vehicle/aidl/impl/3/grpc/proto/VehicleServer.proto
diff --git a/automotive/vehicle/aidl/impl/3/grpc/test/Android.bp b/automotive/vehicle/aidl/impl/3/grpc/test/Android.bp
new file mode 100644
index 0000000..1ab946b
--- /dev/null
+++ b/automotive/vehicle/aidl/impl/3/grpc/test/Android.bp
@@ -0,0 +1,75 @@
+// 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 {
+    default_team: "trendy_team_automotive",
+    default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+cc_test {
+    name: "GRPCVehicleHardwareUnitTest-V3",
+    vendor: true,
+    srcs: ["GRPCVehicleHardwareUnitTest.cpp"],
+    whole_static_libs: [
+        "android.hardware.automotive.vehicle@default-grpc-hardware-lib-V3",
+    ],
+    header_libs: [
+        "IVehicleHardware-V3",
+    ],
+    static_libs: [
+        "libgtest",
+        "libgmock",
+    ],
+    shared_libs: [
+        "libgrpc++",
+        "libprotobuf-cpp-full",
+    ],
+    // libgrpc++.so is installed as root, require root to access it.
+    require_root: true,
+    defaults: [
+        "VehicleHalDefaults-V3",
+    ],
+    cflags: [
+        "-Wno-unused-parameter",
+    ],
+    test_suites: ["device-tests"],
+}
+
+cc_test {
+    name: "GRPCVehicleProxyServerUnitTest-V3",
+    vendor: true,
+    srcs: ["GRPCVehicleProxyServerUnitTest.cpp"],
+    header_libs: [
+        "IVehicleHardware-V3",
+    ],
+    static_libs: [
+        "android.hardware.automotive.vehicle@default-grpc-hardware-lib-V3",
+        "android.hardware.automotive.vehicle@default-grpc-server-lib-V3",
+        "libgtest",
+        "libgmock",
+    ],
+    shared_libs: [
+        "libgrpc++",
+        "libprotobuf-cpp-full",
+    ],
+    // libgrpc++.so is installed as root, require root to access it.
+    require_root: true,
+    defaults: [
+        "VehicleHalDefaults-V3",
+    ],
+    cflags: [
+        "-Wno-unused-parameter",
+    ],
+    test_suites: ["device-tests"],
+}
diff --git a/automotive/vehicle/aidl/impl/grpc/test/GRPCVehicleHardwareUnitTest.cpp b/automotive/vehicle/aidl/impl/3/grpc/test/GRPCVehicleHardwareUnitTest.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/grpc/test/GRPCVehicleHardwareUnitTest.cpp
rename to automotive/vehicle/aidl/impl/3/grpc/test/GRPCVehicleHardwareUnitTest.cpp
diff --git a/automotive/vehicle/aidl/impl/grpc/test/GRPCVehicleProxyServerUnitTest.cpp b/automotive/vehicle/aidl/impl/3/grpc/test/GRPCVehicleProxyServerUnitTest.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/grpc/test/GRPCVehicleProxyServerUnitTest.cpp
rename to automotive/vehicle/aidl/impl/3/grpc/test/GRPCVehicleProxyServerUnitTest.cpp
diff --git a/automotive/vehicle/aidl/impl/3/grpc/utils/proto_message_converter/Android.bp b/automotive/vehicle/aidl/impl/3/grpc/utils/proto_message_converter/Android.bp
new file mode 100644
index 0000000..5ae94b5
--- /dev/null
+++ b/automotive/vehicle/aidl/impl/3/grpc/utils/proto_message_converter/Android.bp
@@ -0,0 +1,65 @@
+/*
+ * 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_team: "trendy_team_automotive",
+    // See: http://go/android-license-faq
+    // A large-scale-change added 'default_applicable_licenses' to import
+    // all of the 'license_kinds' from "hardware_interfaces_license"
+    // to get the below license kinds:
+    //   SPDX-license-identifier-Apache-2.0
+    default_applicable_licenses: ["hardware_interfaces_license"],
+}
+
+cc_library {
+    name: "VehicleHalProtoMessageConverter-V3",
+    srcs: [
+        "src/*.cpp",
+    ],
+    vendor: true,
+    local_include_dirs: ["include"],
+    export_include_dirs: ["include"],
+    shared_libs: ["libprotobuf-cpp-full"],
+    static_libs: [
+        "VehicleHalProtos-V3",
+        "VehicleHalUtils-V3",
+    ],
+    defaults: ["VehicleHalDefaults-V3"],
+    export_static_lib_headers: ["VehicleHalUtils-V3"],
+    host_supported: true,
+}
+
+cc_test_host {
+    name: "VehicleHalProtoMessageConverterTest-V3",
+    srcs: [
+        "test/*.cpp",
+    ],
+    vendor: true,
+    defaults: ["VehicleHalDefaults-V3"],
+    static_libs: [
+        "VehicleHalJsonConfigLoaderEnableTestProperties-V3",
+        "VehicleHalProtoMessageConverter-V3",
+        "VehicleHalProtos-V3",
+        "VehicleHalUtils-V3",
+        "libgtest",
+        "libprotobuf-cpp-full",
+        "libjsoncpp",
+    ],
+    data: [
+        ":VehicleHalDefaultProperties_JSON-V3",
+    ],
+    test_suites: ["device-tests"],
+}
diff --git a/automotive/vehicle/aidl/impl/grpc/utils/proto_message_converter/include/ProtoMessageConverter.h b/automotive/vehicle/aidl/impl/3/grpc/utils/proto_message_converter/include/ProtoMessageConverter.h
similarity index 100%
rename from automotive/vehicle/aidl/impl/grpc/utils/proto_message_converter/include/ProtoMessageConverter.h
rename to automotive/vehicle/aidl/impl/3/grpc/utils/proto_message_converter/include/ProtoMessageConverter.h
diff --git a/automotive/vehicle/aidl/impl/grpc/utils/proto_message_converter/src/ProtoMessageConverter.cpp b/automotive/vehicle/aidl/impl/3/grpc/utils/proto_message_converter/src/ProtoMessageConverter.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/grpc/utils/proto_message_converter/src/ProtoMessageConverter.cpp
rename to automotive/vehicle/aidl/impl/3/grpc/utils/proto_message_converter/src/ProtoMessageConverter.cpp
diff --git a/automotive/vehicle/aidl/impl/grpc/utils/proto_message_converter/test/proto_message_converter_test.cpp b/automotive/vehicle/aidl/impl/3/grpc/utils/proto_message_converter/test/proto_message_converter_test.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/grpc/utils/proto_message_converter/test/proto_message_converter_test.cpp
rename to automotive/vehicle/aidl/impl/3/grpc/utils/proto_message_converter/test/proto_message_converter_test.cpp
diff --git a/automotive/vehicle/aidl/impl/3/hardware/Android.bp b/automotive/vehicle/aidl/impl/3/hardware/Android.bp
new file mode 100644
index 0000000..953760f
--- /dev/null
+++ b/automotive/vehicle/aidl/impl/3/hardware/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_library_headers {
+    name: "IVehicleHardware-V3",
+    vendor: true,
+    export_include_dirs: [
+        "include",
+    ],
+    header_libs: [
+        "VehicleHalUtilHeaders-V3",
+    ],
+    export_header_lib_headers: [
+        "VehicleHalUtilHeaders-V3",
+    ],
+    host_supported: true,
+}
diff --git a/automotive/vehicle/aidl/impl/hardware/include/IVehicleHardware.h b/automotive/vehicle/aidl/impl/3/hardware/include/IVehicleHardware.h
similarity index 100%
rename from automotive/vehicle/aidl/impl/hardware/include/IVehicleHardware.h
rename to automotive/vehicle/aidl/impl/3/hardware/include/IVehicleHardware.h
diff --git a/automotive/vehicle/aidl/impl/proto/Android.bp b/automotive/vehicle/aidl/impl/3/proto/Android.bp
similarity index 84%
copy from automotive/vehicle/aidl/impl/proto/Android.bp
copy to automotive/vehicle/aidl/impl/3/proto/Android.bp
index 0d3df49..9840e63 100644
--- a/automotive/vehicle/aidl/impl/proto/Android.bp
+++ b/automotive/vehicle/aidl/impl/3/proto/Android.bp
@@ -24,20 +24,20 @@
 }
 
 filegroup {
-    name: "VehicleHalProtoFiles",
+    name: "VehicleHalProtoFiles-V3",
     srcs: ["**/*.proto"],
     visibility: ["//hardware/interfaces/automotive/vehicle:__subpackages__"],
 }
 
 genrule {
-    name: "VehicleProtoStub_h",
+    name: "VehicleProtoStub_h-V3",
     tools: [
         "aprotoc",
         "protoc-gen-grpc-cpp-plugin",
     ],
-    cmd: "$(location aprotoc) -Ihardware/interfaces/automotive/vehicle/aidl/impl/proto -Iexternal/protobuf/src --plugin=protoc-gen-grpc=$(location protoc-gen-grpc-cpp-plugin) $(in) --grpc_out=$(genDir) --cpp_out=$(genDir)",
+    cmd: "$(location aprotoc) -Ihardware/interfaces/automotive/vehicle/aidl/impl/3/proto -Iexternal/protobuf/src --plugin=protoc-gen-grpc=$(location protoc-gen-grpc-cpp-plugin) $(in) --grpc_out=$(genDir) --cpp_out=$(genDir)",
     srcs: [
-        ":VehicleHalProtoFiles",
+        ":VehicleHalProtoFiles-V3",
     ],
     out: [
         "android/hardware/automotive/vehicle/DumpOptions.pb.h",
@@ -57,14 +57,14 @@
 }
 
 genrule {
-    name: "VehicleProtoStub_cc",
+    name: "VehicleProtoStub_cc-V3",
     tools: [
         "aprotoc",
         "protoc-gen-grpc-cpp-plugin",
     ],
-    cmd: "$(location aprotoc) -Ihardware/interfaces/automotive/vehicle/aidl/impl/proto -Iexternal/protobuf/src --plugin=protoc-gen-grpc=$(location protoc-gen-grpc-cpp-plugin) $(in) --grpc_out=$(genDir) --cpp_out=$(genDir)",
+    cmd: "$(location aprotoc) -Ihardware/interfaces/automotive/vehicle/aidl/impl/3/proto -Iexternal/protobuf/src --plugin=protoc-gen-grpc=$(location protoc-gen-grpc-cpp-plugin) $(in) --grpc_out=$(genDir) --cpp_out=$(genDir)",
     srcs: [
-        ":VehicleHalProtoFiles",
+        ":VehicleHalProtoFiles-V3",
     ],
     out: [
         "android/hardware/automotive/vehicle/DumpOptions.pb.cc",
@@ -84,20 +84,20 @@
 }
 
 cc_library_static {
-    name: "VehicleHalProtos",
+    name: "VehicleHalProtos-V3",
     vendor: true,
     host_supported: true,
     include_dirs: [
         "external/protobuf/src",
     ],
     generated_headers: [
-        "VehicleProtoStub_h",
+        "VehicleProtoStub_h-V3",
     ],
     export_generated_headers: [
-        "VehicleProtoStub_h",
+        "VehicleProtoStub_h-V3",
     ],
     generated_sources: [
-        "VehicleProtoStub_cc",
+        "VehicleProtoStub_cc-V3",
     ],
     shared_libs: [
         "libgrpc++_unsecure",
@@ -108,9 +108,9 @@
 }
 
 rust_protobuf {
-    name: "libvehicle_hal_property_protos",
+    name: "libvehicle_hal_property_protos-V3",
     crate_name: "vehicle_hal_property_protos",
-    protos: [":VehicleHalProtoFiles"],
+    protos: [":VehicleHalProtoFiles-V3"],
     source_stem: "vehicle_hal_property_protos",
     host_supported: true,
     vendor_available: true,
diff --git a/automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/DumpOptions.proto b/automotive/vehicle/aidl/impl/3/proto/android/hardware/automotive/vehicle/DumpOptions.proto
similarity index 100%
rename from automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/DumpOptions.proto
rename to automotive/vehicle/aidl/impl/3/proto/android/hardware/automotive/vehicle/DumpOptions.proto
diff --git a/automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/DumpResult.proto b/automotive/vehicle/aidl/impl/3/proto/android/hardware/automotive/vehicle/DumpResult.proto
similarity index 100%
rename from automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/DumpResult.proto
rename to automotive/vehicle/aidl/impl/3/proto/android/hardware/automotive/vehicle/DumpResult.proto
diff --git a/automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/StatusCode.proto b/automotive/vehicle/aidl/impl/3/proto/android/hardware/automotive/vehicle/StatusCode.proto
similarity index 100%
rename from automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/StatusCode.proto
rename to automotive/vehicle/aidl/impl/3/proto/android/hardware/automotive/vehicle/StatusCode.proto
diff --git a/automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/SubscribeOptions.proto b/automotive/vehicle/aidl/impl/3/proto/android/hardware/automotive/vehicle/SubscribeOptions.proto
similarity index 100%
rename from automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/SubscribeOptions.proto
rename to automotive/vehicle/aidl/impl/3/proto/android/hardware/automotive/vehicle/SubscribeOptions.proto
diff --git a/automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/SubscribeRequest.proto b/automotive/vehicle/aidl/impl/3/proto/android/hardware/automotive/vehicle/SubscribeRequest.proto
similarity index 100%
rename from automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/SubscribeRequest.proto
rename to automotive/vehicle/aidl/impl/3/proto/android/hardware/automotive/vehicle/SubscribeRequest.proto
diff --git a/automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/UnsubscribeRequest.proto b/automotive/vehicle/aidl/impl/3/proto/android/hardware/automotive/vehicle/UnsubscribeRequest.proto
similarity index 100%
rename from automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/UnsubscribeRequest.proto
rename to automotive/vehicle/aidl/impl/3/proto/android/hardware/automotive/vehicle/UnsubscribeRequest.proto
diff --git a/automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/VehicleAreaConfig.proto b/automotive/vehicle/aidl/impl/3/proto/android/hardware/automotive/vehicle/VehicleAreaConfig.proto
similarity index 100%
rename from automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/VehicleAreaConfig.proto
rename to automotive/vehicle/aidl/impl/3/proto/android/hardware/automotive/vehicle/VehicleAreaConfig.proto
diff --git a/automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/VehiclePropConfig.proto b/automotive/vehicle/aidl/impl/3/proto/android/hardware/automotive/vehicle/VehiclePropConfig.proto
similarity index 100%
rename from automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/VehiclePropConfig.proto
rename to automotive/vehicle/aidl/impl/3/proto/android/hardware/automotive/vehicle/VehiclePropConfig.proto
diff --git a/automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/VehiclePropValue.proto b/automotive/vehicle/aidl/impl/3/proto/android/hardware/automotive/vehicle/VehiclePropValue.proto
similarity index 100%
rename from automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/VehiclePropValue.proto
rename to automotive/vehicle/aidl/impl/3/proto/android/hardware/automotive/vehicle/VehiclePropValue.proto
diff --git a/automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/VehiclePropValueRequest.proto b/automotive/vehicle/aidl/impl/3/proto/android/hardware/automotive/vehicle/VehiclePropValueRequest.proto
similarity index 100%
rename from automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/VehiclePropValueRequest.proto
rename to automotive/vehicle/aidl/impl/3/proto/android/hardware/automotive/vehicle/VehiclePropValueRequest.proto
diff --git a/automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/VehiclePropertyAccess.proto b/automotive/vehicle/aidl/impl/3/proto/android/hardware/automotive/vehicle/VehiclePropertyAccess.proto
similarity index 100%
rename from automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/VehiclePropertyAccess.proto
rename to automotive/vehicle/aidl/impl/3/proto/android/hardware/automotive/vehicle/VehiclePropertyAccess.proto
diff --git a/automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/VehiclePropertyChangeMode.proto b/automotive/vehicle/aidl/impl/3/proto/android/hardware/automotive/vehicle/VehiclePropertyChangeMode.proto
similarity index 100%
rename from automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/VehiclePropertyChangeMode.proto
rename to automotive/vehicle/aidl/impl/3/proto/android/hardware/automotive/vehicle/VehiclePropertyChangeMode.proto
diff --git a/automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/VehiclePropertyStatus.proto b/automotive/vehicle/aidl/impl/3/proto/android/hardware/automotive/vehicle/VehiclePropertyStatus.proto
similarity index 100%
rename from automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/VehiclePropertyStatus.proto
rename to automotive/vehicle/aidl/impl/3/proto/android/hardware/automotive/vehicle/VehiclePropertyStatus.proto
diff --git a/automotive/vehicle/aidl/impl/utils/README.md b/automotive/vehicle/aidl/impl/3/utils/README.md
similarity index 100%
rename from automotive/vehicle/aidl/impl/utils/README.md
rename to automotive/vehicle/aidl/impl/3/utils/README.md
diff --git a/automotive/vehicle/aidl/impl/3/utils/common/Android.bp b/automotive/vehicle/aidl/impl/3/utils/common/Android.bp
new file mode 100644
index 0000000..f653d90
--- /dev/null
+++ b/automotive/vehicle/aidl/impl/3/utils/common/Android.bp
@@ -0,0 +1,36 @@
+/*
+ * 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 {
+    name: "VehicleHalUtils-V3",
+    srcs: ["src/*.cpp"],
+    vendor_available: true,
+    local_include_dirs: ["include"],
+    export_include_dirs: ["include"],
+    defaults: ["VehicleHalDefaults-V3"],
+    host_supported: true,
+}
+
+cc_library_headers {
+    name: "VehicleHalUtilHeaders-V3",
+    export_include_dirs: ["include"],
+    vendor: true,
+    host_supported: true,
+}
diff --git a/automotive/vehicle/aidl/impl/utils/common/include/ConcurrentQueue.h b/automotive/vehicle/aidl/impl/3/utils/common/include/ConcurrentQueue.h
similarity index 100%
rename from automotive/vehicle/aidl/impl/utils/common/include/ConcurrentQueue.h
rename to automotive/vehicle/aidl/impl/3/utils/common/include/ConcurrentQueue.h
diff --git a/automotive/vehicle/aidl/impl/utils/common/include/ParcelableUtils.h b/automotive/vehicle/aidl/impl/3/utils/common/include/ParcelableUtils.h
similarity index 100%
rename from automotive/vehicle/aidl/impl/utils/common/include/ParcelableUtils.h
rename to automotive/vehicle/aidl/impl/3/utils/common/include/ParcelableUtils.h
diff --git a/automotive/vehicle/aidl/impl/utils/common/include/PendingRequestPool.h b/automotive/vehicle/aidl/impl/3/utils/common/include/PendingRequestPool.h
similarity index 100%
rename from automotive/vehicle/aidl/impl/utils/common/include/PendingRequestPool.h
rename to automotive/vehicle/aidl/impl/3/utils/common/include/PendingRequestPool.h
diff --git a/automotive/vehicle/aidl/impl/utils/common/include/PropertyUtils.h b/automotive/vehicle/aidl/impl/3/utils/common/include/PropertyUtils.h
similarity index 100%
rename from automotive/vehicle/aidl/impl/utils/common/include/PropertyUtils.h
rename to automotive/vehicle/aidl/impl/3/utils/common/include/PropertyUtils.h
diff --git a/automotive/vehicle/aidl/impl/utils/common/include/RecurrentTimer.h b/automotive/vehicle/aidl/impl/3/utils/common/include/RecurrentTimer.h
similarity index 100%
rename from automotive/vehicle/aidl/impl/utils/common/include/RecurrentTimer.h
rename to automotive/vehicle/aidl/impl/3/utils/common/include/RecurrentTimer.h
diff --git a/automotive/vehicle/aidl/impl/utils/common/include/VehicleHalTypes.h b/automotive/vehicle/aidl/impl/3/utils/common/include/VehicleHalTypes.h
similarity index 100%
rename from automotive/vehicle/aidl/impl/utils/common/include/VehicleHalTypes.h
rename to automotive/vehicle/aidl/impl/3/utils/common/include/VehicleHalTypes.h
diff --git a/automotive/vehicle/aidl/impl/utils/common/include/VehicleObjectPool.h b/automotive/vehicle/aidl/impl/3/utils/common/include/VehicleObjectPool.h
similarity index 98%
rename from automotive/vehicle/aidl/impl/utils/common/include/VehicleObjectPool.h
rename to automotive/vehicle/aidl/impl/3/utils/common/include/VehicleObjectPool.h
index 501ce40..e18413b 100644
--- a/automotive/vehicle/aidl/impl/utils/common/include/VehicleObjectPool.h
+++ b/automotive/vehicle/aidl/impl/3/utils/common/include/VehicleObjectPool.h
@@ -50,7 +50,7 @@
 struct Deleter {
     using OnDeleteFunc = std::function<void(T*)>;
 
-    explicit Deleter(const OnDeleteFunc& f) : mOnDelete(f){};
+    explicit Deleter(const OnDeleteFunc& f) : mOnDelete(f) {};
 
     Deleter() = default;
     Deleter(const Deleter&) = default;
@@ -76,7 +76,7 @@
     using GetSizeFunc = std::function<size_t(const T&)>;
 
     ObjectPool(size_t maxPoolObjectsSize, GetSizeFunc getSizeFunc)
-        : mMaxPoolObjectsSize(maxPoolObjectsSize), mGetSizeFunc(getSizeFunc){};
+        : mMaxPoolObjectsSize(maxPoolObjectsSize), mGetSizeFunc(getSizeFunc) {};
     virtual ~ObjectPool() = default;
 
     virtual recyclable_ptr<T> obtain() {
@@ -182,7 +182,7 @@
     // approximately this pool would at-most take 4 * 4 * 10240 = 160k memory.
     VehiclePropValuePool(size_t maxRecyclableVectorSize = 4, size_t maxPoolObjectsSize = 10240)
         : mMaxRecyclableVectorSize(maxRecyclableVectorSize),
-          mMaxPoolObjectsSize(maxPoolObjectsSize){};
+          mMaxPoolObjectsSize(maxPoolObjectsSize) {};
 
     // Obtain a recyclable VehiclePropertyValue object from the pool for the given type. If the
     // given type is not MIXED or STRING, the internal value vector size would be set to 1.
diff --git a/automotive/vehicle/aidl/impl/utils/common/include/VehiclePropertyStore.h b/automotive/vehicle/aidl/impl/3/utils/common/include/VehiclePropertyStore.h
similarity index 100%
rename from automotive/vehicle/aidl/impl/utils/common/include/VehiclePropertyStore.h
rename to automotive/vehicle/aidl/impl/3/utils/common/include/VehiclePropertyStore.h
diff --git a/automotive/vehicle/aidl/impl/utils/common/include/VehicleUtils.h b/automotive/vehicle/aidl/impl/3/utils/common/include/VehicleUtils.h
similarity index 100%
rename from automotive/vehicle/aidl/impl/utils/common/include/VehicleUtils.h
rename to automotive/vehicle/aidl/impl/3/utils/common/include/VehicleUtils.h
diff --git a/automotive/vehicle/aidl/impl/utils/common/src/PendingRequestPool.cpp b/automotive/vehicle/aidl/impl/3/utils/common/src/PendingRequestPool.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/utils/common/src/PendingRequestPool.cpp
rename to automotive/vehicle/aidl/impl/3/utils/common/src/PendingRequestPool.cpp
diff --git a/automotive/vehicle/aidl/impl/utils/common/src/RecurrentTimer.cpp b/automotive/vehicle/aidl/impl/3/utils/common/src/RecurrentTimer.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/utils/common/src/RecurrentTimer.cpp
rename to automotive/vehicle/aidl/impl/3/utils/common/src/RecurrentTimer.cpp
diff --git a/automotive/vehicle/aidl/impl/utils/common/src/VehicleObjectPool.cpp b/automotive/vehicle/aidl/impl/3/utils/common/src/VehicleObjectPool.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/utils/common/src/VehicleObjectPool.cpp
rename to automotive/vehicle/aidl/impl/3/utils/common/src/VehicleObjectPool.cpp
diff --git a/automotive/vehicle/aidl/impl/utils/common/src/VehiclePropertyStore.cpp b/automotive/vehicle/aidl/impl/3/utils/common/src/VehiclePropertyStore.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/utils/common/src/VehiclePropertyStore.cpp
rename to automotive/vehicle/aidl/impl/3/utils/common/src/VehiclePropertyStore.cpp
diff --git a/automotive/vehicle/aidl/impl/utils/common/src/VehicleUtils.cpp b/automotive/vehicle/aidl/impl/3/utils/common/src/VehicleUtils.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/utils/common/src/VehicleUtils.cpp
rename to automotive/vehicle/aidl/impl/3/utils/common/src/VehicleUtils.cpp
diff --git a/automotive/vehicle/aidl/impl/3/utils/common/test/Android.bp b/automotive/vehicle/aidl/impl/3/utils/common/test/Android.bp
new file mode 100644
index 0000000..0450e99
--- /dev/null
+++ b/automotive/vehicle/aidl/impl/3/utils/common/test/Android.bp
@@ -0,0 +1,33 @@
+/*
+ * 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_team: "trendy_team_aaos_framework",
+    default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+cc_test {
+    name: "VehicleHalVehicleUtilsTest-V3",
+    srcs: ["*.cpp"],
+    vendor: true,
+    static_libs: [
+        "VehicleHalUtils-V3",
+        "libgtest",
+        "libgmock",
+    ],
+    defaults: ["VehicleHalDefaults-V3"],
+    test_suites: ["device-tests"],
+}
diff --git a/automotive/vehicle/aidl/impl/utils/common/test/PendingRequestPoolTest.cpp b/automotive/vehicle/aidl/impl/3/utils/common/test/PendingRequestPoolTest.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/utils/common/test/PendingRequestPoolTest.cpp
rename to automotive/vehicle/aidl/impl/3/utils/common/test/PendingRequestPoolTest.cpp
diff --git a/automotive/vehicle/aidl/impl/utils/common/test/RecurrentTimerTest.cpp b/automotive/vehicle/aidl/impl/3/utils/common/test/RecurrentTimerTest.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/utils/common/test/RecurrentTimerTest.cpp
rename to automotive/vehicle/aidl/impl/3/utils/common/test/RecurrentTimerTest.cpp
diff --git a/automotive/vehicle/aidl/impl/utils/common/test/VehicleObjectPoolTest.cpp b/automotive/vehicle/aidl/impl/3/utils/common/test/VehicleObjectPoolTest.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/utils/common/test/VehicleObjectPoolTest.cpp
rename to automotive/vehicle/aidl/impl/3/utils/common/test/VehicleObjectPoolTest.cpp
diff --git a/automotive/vehicle/aidl/impl/utils/common/test/VehiclePropertyStoreTest.cpp b/automotive/vehicle/aidl/impl/3/utils/common/test/VehiclePropertyStoreTest.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/utils/common/test/VehiclePropertyStoreTest.cpp
rename to automotive/vehicle/aidl/impl/3/utils/common/test/VehiclePropertyStoreTest.cpp
diff --git a/automotive/vehicle/aidl/impl/utils/common/test/VehicleUtilsTest.cpp b/automotive/vehicle/aidl/impl/3/utils/common/test/VehicleUtilsTest.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/utils/common/test/VehicleUtilsTest.cpp
rename to automotive/vehicle/aidl/impl/3/utils/common/test/VehicleUtilsTest.cpp
diff --git a/automotive/vehicle/aidl/impl/3/utils/test_vendor_properties/Android.bp b/automotive/vehicle/aidl/impl/3/utils/test_vendor_properties/Android.bp
new file mode 100644
index 0000000..42e2317
--- /dev/null
+++ b/automotive/vehicle/aidl/impl/3/utils/test_vendor_properties/Android.bp
@@ -0,0 +1,31 @@
+/*
+ * 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 {
+    default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+filegroup {
+    name: "VhalTestVendorProperties-V3",
+    srcs: [
+        "**/*.aidl",
+    ],
+    visibility: [
+        "//hardware/interfaces/automotive/vehicle/aidl:__subpackages__",
+        "//packages/services/Car:__subpackages__",
+        "//cts/tests/tests/car_permission_tests",
+    ],
+}
diff --git a/automotive/vehicle/aidl/impl/utils/test_vendor_properties/android/hardware/automotive/vehicle/TestVendorProperty.aidl b/automotive/vehicle/aidl/impl/3/utils/test_vendor_properties/android/hardware/automotive/vehicle/TestVendorProperty.aidl
similarity index 100%
rename from automotive/vehicle/aidl/impl/utils/test_vendor_properties/android/hardware/automotive/vehicle/TestVendorProperty.aidl
rename to automotive/vehicle/aidl/impl/3/utils/test_vendor_properties/android/hardware/automotive/vehicle/TestVendorProperty.aidl
diff --git a/automotive/vehicle/aidl/impl/vhal/Android.bp b/automotive/vehicle/aidl/impl/3/vhal/Android.bp
similarity index 75%
copy from automotive/vehicle/aidl/impl/vhal/Android.bp
copy to automotive/vehicle/aidl/impl/3/vhal/Android.bp
index 54d148e..a648fd4 100644
--- a/automotive/vehicle/aidl/impl/vhal/Android.bp
+++ b/automotive/vehicle/aidl/impl/3/vhal/Android.bp
@@ -23,21 +23,21 @@
     name: "android.hardware.automotive.vehicle@V3-default-service",
     vendor: true,
     defaults: [
-        "FakeVehicleHardwareDefaults",
-        "VehicleHalDefaults",
+        "FakeVehicleHardwareDefaults-V3",
+        "VehicleHalDefaults-V3",
         "android-automotive-large-parcelable-defaults",
     ],
-    vintf_fragments: ["vhal-default-service.xml"],
-    init_rc: ["vhal-default-service.rc"],
+    vintf_fragments: ["vhal-default-service-v3.xml"],
+    init_rc: ["vhal-default-service-v3.rc"],
     relative_install_path: "hw",
     srcs: ["src/VehicleService.cpp"],
     static_libs: [
-        "DefaultVehicleHal",
-        "FakeVehicleHardware",
-        "VehicleHalUtils",
+        "DefaultVehicleHal-V3",
+        "FakeVehicleHardware-V3",
+        "VehicleHalUtils-V3",
     ],
     header_libs: [
-        "IVehicleHardware",
+        "IVehicleHardware-V3",
     ],
     shared_libs: [
         "libbinder_ndk",
@@ -45,10 +45,10 @@
 }
 
 cc_library {
-    name: "DefaultVehicleHal",
+    name: "DefaultVehicleHal-V3",
     vendor: true,
     defaults: [
-        "VehicleHalDefaults",
+        "VehicleHalDefaults-V3",
     ],
     local_include_dirs: ["include"],
     export_include_dirs: ["include"],
@@ -62,11 +62,11 @@
         ":check_generated_enum_metadata_json",
     ],
     static_libs: [
-        "VehicleHalUtils",
+        "VehicleHalUtils-V3",
     ],
     header_libs: [
-        "IVehicleHardware",
-        "IVehicleGeneratedHeaders-V4",
+        "IVehicleHardware-V3",
+        "IVehicleGeneratedHeaders-V3-default",
     ],
     shared_libs: [
         "libbinder_ndk",
@@ -74,18 +74,18 @@
 }
 
 cc_fuzz {
-    name: "android.hardware.automotive.vehicle-default-service_fuzzer",
+    name: "android.hardware.automotive.vehicle-default-service_fuzzer-V3",
     vendor: true,
     defaults: [
-        "FakeVehicleHardwareDefaults",
-        "VehicleHalDefaults",
+        "FakeVehicleHardwareDefaults-V3",
+        "VehicleHalDefaults-V3",
         "android-automotive-large-parcelable-defaults",
         "service_fuzzer_defaults",
     ],
     static_libs: [
-        "DefaultVehicleHal",
-        "FakeVehicleHardware",
-        "VehicleHalUtils",
+        "DefaultVehicleHal-V3",
+        "FakeVehicleHardware-V3",
+        "VehicleHalUtils-V3",
     ],
     srcs: ["src/fuzzer.cpp"],
     fuzz_config: {
diff --git a/automotive/vehicle/aidl/impl/vhal/include/ConnectedClient.h b/automotive/vehicle/aidl/impl/3/vhal/include/ConnectedClient.h
similarity index 100%
rename from automotive/vehicle/aidl/impl/vhal/include/ConnectedClient.h
rename to automotive/vehicle/aidl/impl/3/vhal/include/ConnectedClient.h
diff --git a/automotive/vehicle/aidl/impl/vhal/include/DefaultVehicleHal.h b/automotive/vehicle/aidl/impl/3/vhal/include/DefaultVehicleHal.h
similarity index 100%
rename from automotive/vehicle/aidl/impl/vhal/include/DefaultVehicleHal.h
rename to automotive/vehicle/aidl/impl/3/vhal/include/DefaultVehicleHal.h
diff --git a/automotive/vehicle/aidl/impl/vhal/include/SubscriptionManager.h b/automotive/vehicle/aidl/impl/3/vhal/include/SubscriptionManager.h
similarity index 100%
rename from automotive/vehicle/aidl/impl/vhal/include/SubscriptionManager.h
rename to automotive/vehicle/aidl/impl/3/vhal/include/SubscriptionManager.h
diff --git a/automotive/vehicle/aidl/impl/vhal/src/ConnectedClient.cpp b/automotive/vehicle/aidl/impl/3/vhal/src/ConnectedClient.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/vhal/src/ConnectedClient.cpp
rename to automotive/vehicle/aidl/impl/3/vhal/src/ConnectedClient.cpp
diff --git a/automotive/vehicle/aidl/impl/vhal/src/DefaultVehicleHal.cpp b/automotive/vehicle/aidl/impl/3/vhal/src/DefaultVehicleHal.cpp
similarity index 99%
rename from automotive/vehicle/aidl/impl/vhal/src/DefaultVehicleHal.cpp
rename to automotive/vehicle/aidl/impl/3/vhal/src/DefaultVehicleHal.cpp
index 0ead819..aa9ef53 100644
--- a/automotive/vehicle/aidl/impl/vhal/src/DefaultVehicleHal.cpp
+++ b/automotive/vehicle/aidl/impl/3/vhal/src/DefaultVehicleHal.cpp
@@ -110,7 +110,7 @@
 }  // namespace
 
 DefaultVehicleHal::DefaultVehicleHal(std::unique_ptr<IVehicleHardware> vehicleHardware)
-    : DefaultVehicleHal(std::move(vehicleHardware), /* testInterfaceVersion= */ 0){};
+    : DefaultVehicleHal(std::move(vehicleHardware), /* testInterfaceVersion= */ 0) {};
 
 DefaultVehicleHal::DefaultVehicleHal(std::unique_ptr<IVehicleHardware> vehicleHardware,
                                      int32_t testInterfaceVersion)
diff --git a/automotive/vehicle/aidl/impl/vhal/src/SubscriptionManager.cpp b/automotive/vehicle/aidl/impl/3/vhal/src/SubscriptionManager.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/vhal/src/SubscriptionManager.cpp
rename to automotive/vehicle/aidl/impl/3/vhal/src/SubscriptionManager.cpp
diff --git a/automotive/vehicle/aidl/impl/vhal/src/VehicleService.cpp b/automotive/vehicle/aidl/impl/3/vhal/src/VehicleService.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/vhal/src/VehicleService.cpp
rename to automotive/vehicle/aidl/impl/3/vhal/src/VehicleService.cpp
diff --git a/automotive/vehicle/aidl/impl/vhal/src/fuzzer.cpp b/automotive/vehicle/aidl/impl/3/vhal/src/fuzzer.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/vhal/src/fuzzer.cpp
rename to automotive/vehicle/aidl/impl/3/vhal/src/fuzzer.cpp
diff --git a/automotive/vehicle/aidl/impl/3/vhal/test/Android.bp b/automotive/vehicle/aidl/impl/3/vhal/test/Android.bp
new file mode 100644
index 0000000..e86bc81
--- /dev/null
+++ b/automotive/vehicle/aidl/impl/3/vhal/test/Android.bp
@@ -0,0 +1,45 @@
+/*
+ * 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_team: "trendy_team_aaos_framework",
+    default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+cc_test {
+    name: "DefaultVehicleHalTest-V3",
+    vendor: true,
+    srcs: ["*.cpp"],
+    static_libs: [
+        "DefaultVehicleHal-V3",
+        "VehicleHalUtils-V3",
+        "libgtest",
+        "libgmock",
+    ],
+    shared_libs: [
+        "libbase",
+        "libbinder_ndk",
+        "liblog",
+        "libutils",
+    ],
+    header_libs: [
+        "IVehicleHardware-V3",
+    ],
+    defaults: [
+        "VehicleHalDefaults-V3",
+    ],
+    test_suites: ["device-tests"],
+}
diff --git a/automotive/vehicle/aidl/impl/vhal/test/ConnectedClientTest.cpp b/automotive/vehicle/aidl/impl/3/vhal/test/ConnectedClientTest.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/vhal/test/ConnectedClientTest.cpp
rename to automotive/vehicle/aidl/impl/3/vhal/test/ConnectedClientTest.cpp
diff --git a/automotive/vehicle/aidl/impl/vhal/test/DefaultVehicleHalTest.cpp b/automotive/vehicle/aidl/impl/3/vhal/test/DefaultVehicleHalTest.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/vhal/test/DefaultVehicleHalTest.cpp
rename to automotive/vehicle/aidl/impl/3/vhal/test/DefaultVehicleHalTest.cpp
diff --git a/automotive/vehicle/aidl/impl/vhal/test/MockVehicleCallback.cpp b/automotive/vehicle/aidl/impl/3/vhal/test/MockVehicleCallback.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/vhal/test/MockVehicleCallback.cpp
rename to automotive/vehicle/aidl/impl/3/vhal/test/MockVehicleCallback.cpp
diff --git a/automotive/vehicle/aidl/impl/vhal/test/MockVehicleCallback.h b/automotive/vehicle/aidl/impl/3/vhal/test/MockVehicleCallback.h
similarity index 100%
rename from automotive/vehicle/aidl/impl/vhal/test/MockVehicleCallback.h
rename to automotive/vehicle/aidl/impl/3/vhal/test/MockVehicleCallback.h
diff --git a/automotive/vehicle/aidl/impl/vhal/test/MockVehicleHardware.cpp b/automotive/vehicle/aidl/impl/3/vhal/test/MockVehicleHardware.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/vhal/test/MockVehicleHardware.cpp
rename to automotive/vehicle/aidl/impl/3/vhal/test/MockVehicleHardware.cpp
diff --git a/automotive/vehicle/aidl/impl/vhal/test/MockVehicleHardware.h b/automotive/vehicle/aidl/impl/3/vhal/test/MockVehicleHardware.h
similarity index 100%
rename from automotive/vehicle/aidl/impl/vhal/test/MockVehicleHardware.h
rename to automotive/vehicle/aidl/impl/3/vhal/test/MockVehicleHardware.h
diff --git a/automotive/vehicle/aidl/impl/vhal/test/SubscriptionManagerTest.cpp b/automotive/vehicle/aidl/impl/3/vhal/test/SubscriptionManagerTest.cpp
similarity index 100%
rename from automotive/vehicle/aidl/impl/vhal/test/SubscriptionManagerTest.cpp
rename to automotive/vehicle/aidl/impl/3/vhal/test/SubscriptionManagerTest.cpp
diff --git a/automotive/vehicle/aidl/impl/vhal/vhal-default-service.rc b/automotive/vehicle/aidl/impl/3/vhal/vhal-default-service-v3.rc
similarity index 100%
rename from automotive/vehicle/aidl/impl/vhal/vhal-default-service.rc
rename to automotive/vehicle/aidl/impl/3/vhal/vhal-default-service-v3.rc
diff --git a/automotive/vehicle/aidl/impl/vhal/vhal-default-service.xml b/automotive/vehicle/aidl/impl/3/vhal/vhal-default-service-v3.xml
similarity index 100%
rename from automotive/vehicle/aidl/impl/vhal/vhal-default-service.xml
rename to automotive/vehicle/aidl/impl/3/vhal/vhal-default-service-v3.xml
diff --git a/automotive/vehicle/aidl/impl/Android.bp b/automotive/vehicle/aidl/impl/current/Android.bp
similarity index 100%
rename from automotive/vehicle/aidl/impl/Android.bp
rename to automotive/vehicle/aidl/impl/current/Android.bp
diff --git a/automotive/vehicle/aidl/impl/README.md b/automotive/vehicle/aidl/impl/current/README.md
similarity index 100%
rename from automotive/vehicle/aidl/impl/README.md
rename to automotive/vehicle/aidl/impl/current/README.md
diff --git a/automotive/vehicle/aidl/impl/default_config/JsonConfigLoader/Android.bp b/automotive/vehicle/aidl/impl/current/default_config/JsonConfigLoader/Android.bp
similarity index 100%
rename from automotive/vehicle/aidl/impl/default_config/JsonConfigLoader/Android.bp
rename to automotive/vehicle/aidl/impl/current/default_config/JsonConfigLoader/Android.bp
diff --git a/automotive/vehicle/aidl/impl/default_config/JsonConfigLoader/include/ConfigDeclaration.h b/automotive/vehicle/aidl/impl/current/default_config/JsonConfigLoader/include/ConfigDeclaration.h
similarity index 100%
copy from automotive/vehicle/aidl/impl/default_config/JsonConfigLoader/include/ConfigDeclaration.h
copy to automotive/vehicle/aidl/impl/current/default_config/JsonConfigLoader/include/ConfigDeclaration.h
diff --git a/automotive/vehicle/aidl/impl/default_config/JsonConfigLoader/include/JsonConfigLoader.h b/automotive/vehicle/aidl/impl/current/default_config/JsonConfigLoader/include/JsonConfigLoader.h
similarity index 100%
copy from automotive/vehicle/aidl/impl/default_config/JsonConfigLoader/include/JsonConfigLoader.h
copy to automotive/vehicle/aidl/impl/current/default_config/JsonConfigLoader/include/JsonConfigLoader.h
diff --git a/automotive/vehicle/aidl/impl/default_config/JsonConfigLoader/src/JsonConfigLoader.cpp b/automotive/vehicle/aidl/impl/current/default_config/JsonConfigLoader/src/JsonConfigLoader.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/default_config/JsonConfigLoader/src/JsonConfigLoader.cpp
copy to automotive/vehicle/aidl/impl/current/default_config/JsonConfigLoader/src/JsonConfigLoader.cpp
diff --git a/automotive/vehicle/aidl/impl/default_config/JsonConfigLoader/test/Android.bp b/automotive/vehicle/aidl/impl/current/default_config/JsonConfigLoader/test/Android.bp
similarity index 100%
rename from automotive/vehicle/aidl/impl/default_config/JsonConfigLoader/test/Android.bp
rename to automotive/vehicle/aidl/impl/current/default_config/JsonConfigLoader/test/Android.bp
diff --git a/automotive/vehicle/aidl/impl/default_config/JsonConfigLoader/test/JsonConfigLoaderUnitTest.cpp b/automotive/vehicle/aidl/impl/current/default_config/JsonConfigLoader/test/JsonConfigLoaderUnitTest.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/default_config/JsonConfigLoader/test/JsonConfigLoaderUnitTest.cpp
copy to automotive/vehicle/aidl/impl/current/default_config/JsonConfigLoader/test/JsonConfigLoaderUnitTest.cpp
diff --git a/automotive/vehicle/aidl/impl/default_config/TEST_MAPPING b/automotive/vehicle/aidl/impl/current/default_config/TEST_MAPPING
similarity index 100%
copy from automotive/vehicle/aidl/impl/default_config/TEST_MAPPING
copy to automotive/vehicle/aidl/impl/current/default_config/TEST_MAPPING
diff --git a/automotive/vehicle/aidl/impl/default_config/config/Android.bp b/automotive/vehicle/aidl/impl/current/default_config/config/Android.bp
similarity index 100%
rename from automotive/vehicle/aidl/impl/default_config/config/Android.bp
rename to automotive/vehicle/aidl/impl/current/default_config/config/Android.bp
diff --git a/automotive/vehicle/aidl/impl/default_config/config/DefaultProperties.json b/automotive/vehicle/aidl/impl/current/default_config/config/DefaultProperties.json
similarity index 100%
copy from automotive/vehicle/aidl/impl/default_config/config/DefaultProperties.json
copy to automotive/vehicle/aidl/impl/current/default_config/config/DefaultProperties.json
diff --git a/automotive/vehicle/aidl/impl/default_config/config/README.md b/automotive/vehicle/aidl/impl/current/default_config/config/README.md
similarity index 100%
copy from automotive/vehicle/aidl/impl/default_config/config/README.md
copy to automotive/vehicle/aidl/impl/current/default_config/config/README.md
diff --git a/automotive/vehicle/aidl/impl/default_config/config/TestProperties.json b/automotive/vehicle/aidl/impl/current/default_config/config/TestProperties.json
similarity index 100%
copy from automotive/vehicle/aidl/impl/default_config/config/TestProperties.json
copy to automotive/vehicle/aidl/impl/current/default_config/config/TestProperties.json
diff --git a/automotive/vehicle/aidl/impl/default_config/config/VendorClusterTestProperties.json b/automotive/vehicle/aidl/impl/current/default_config/config/VendorClusterTestProperties.json
similarity index 100%
copy from automotive/vehicle/aidl/impl/default_config/config/VendorClusterTestProperties.json
copy to automotive/vehicle/aidl/impl/current/default_config/config/VendorClusterTestProperties.json
diff --git a/automotive/vehicle/aidl/impl/default_config/test/Android.bp b/automotive/vehicle/aidl/impl/current/default_config/test/Android.bp
similarity index 100%
rename from automotive/vehicle/aidl/impl/default_config/test/Android.bp
rename to automotive/vehicle/aidl/impl/current/default_config/test/Android.bp
diff --git a/automotive/vehicle/aidl/impl/default_config/test/DefaultConfigTest.cpp b/automotive/vehicle/aidl/impl/current/default_config/test/DefaultConfigTest.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/default_config/test/DefaultConfigTest.cpp
copy to automotive/vehicle/aidl/impl/current/default_config/test/DefaultConfigTest.cpp
diff --git a/automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/Android.bp b/automotive/vehicle/aidl/impl/current/fake_impl/GeneratorHub/Android.bp
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/Android.bp
rename to automotive/vehicle/aidl/impl/current/fake_impl/GeneratorHub/Android.bp
diff --git a/automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/include/FakeValueGenerator.h b/automotive/vehicle/aidl/impl/current/fake_impl/GeneratorHub/include/FakeValueGenerator.h
similarity index 100%
copy from automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/include/FakeValueGenerator.h
copy to automotive/vehicle/aidl/impl/current/fake_impl/GeneratorHub/include/FakeValueGenerator.h
diff --git a/automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/include/GeneratorHub.h b/automotive/vehicle/aidl/impl/current/fake_impl/GeneratorHub/include/GeneratorHub.h
similarity index 100%
copy from automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/include/GeneratorHub.h
copy to automotive/vehicle/aidl/impl/current/fake_impl/GeneratorHub/include/GeneratorHub.h
diff --git a/automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/include/JsonFakeValueGenerator.h b/automotive/vehicle/aidl/impl/current/fake_impl/GeneratorHub/include/JsonFakeValueGenerator.h
similarity index 100%
copy from automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/include/JsonFakeValueGenerator.h
copy to automotive/vehicle/aidl/impl/current/fake_impl/GeneratorHub/include/JsonFakeValueGenerator.h
diff --git a/automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/include/LinearFakeValueGenerator.h b/automotive/vehicle/aidl/impl/current/fake_impl/GeneratorHub/include/LinearFakeValueGenerator.h
similarity index 100%
copy from automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/include/LinearFakeValueGenerator.h
copy to automotive/vehicle/aidl/impl/current/fake_impl/GeneratorHub/include/LinearFakeValueGenerator.h
diff --git a/automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/src/GeneratorHub.cpp b/automotive/vehicle/aidl/impl/current/fake_impl/GeneratorHub/src/GeneratorHub.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/src/GeneratorHub.cpp
copy to automotive/vehicle/aidl/impl/current/fake_impl/GeneratorHub/src/GeneratorHub.cpp
diff --git a/automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/src/JsonFakeValueGenerator.cpp b/automotive/vehicle/aidl/impl/current/fake_impl/GeneratorHub/src/JsonFakeValueGenerator.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/src/JsonFakeValueGenerator.cpp
copy to automotive/vehicle/aidl/impl/current/fake_impl/GeneratorHub/src/JsonFakeValueGenerator.cpp
diff --git a/automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/src/LinearFakeValueGenerator.cpp b/automotive/vehicle/aidl/impl/current/fake_impl/GeneratorHub/src/LinearFakeValueGenerator.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/src/LinearFakeValueGenerator.cpp
copy to automotive/vehicle/aidl/impl/current/fake_impl/GeneratorHub/src/LinearFakeValueGenerator.cpp
diff --git a/automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/test/Android.bp b/automotive/vehicle/aidl/impl/current/fake_impl/GeneratorHub/test/Android.bp
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/test/Android.bp
rename to automotive/vehicle/aidl/impl/current/fake_impl/GeneratorHub/test/Android.bp
diff --git a/automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/test/FakeVehicleHalValueGeneratorsTest.cpp b/automotive/vehicle/aidl/impl/current/fake_impl/GeneratorHub/test/FakeVehicleHalValueGeneratorsTest.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/test/FakeVehicleHalValueGeneratorsTest.cpp
copy to automotive/vehicle/aidl/impl/current/fake_impl/GeneratorHub/test/FakeVehicleHalValueGeneratorsTest.cpp
diff --git a/automotive/vehicle/aidl/impl/fake_impl/hardware/test/fakedata/prop.json b/automotive/vehicle/aidl/impl/current/fake_impl/GeneratorHub/test/prop.json
similarity index 100%
copy from automotive/vehicle/aidl/impl/fake_impl/hardware/test/fakedata/prop.json
copy to automotive/vehicle/aidl/impl/current/fake_impl/GeneratorHub/test/prop.json
diff --git a/automotive/vehicle/aidl/impl/current/fake_impl/GeneratorHub/test/prop_different_types.json b/automotive/vehicle/aidl/impl/current/fake_impl/GeneratorHub/test/prop_different_types.json
new file mode 100644
index 0000000..38cd86b
--- /dev/null
+++ b/automotive/vehicle/aidl/impl/current/fake_impl/GeneratorHub/test/prop_different_types.json
@@ -0,0 +1,74 @@
+[
+    {
+        "timestamp": 1000000,
+        "areaId": 0,
+        "value": 1,
+        "prop": 287310600
+    },
+    {
+        "timestamp": 1000000,
+        "areaId": 0,
+        "value": 2,
+        "prop": 289408000
+    },
+    {
+        "timestamp": 1000000,
+        "areaId": 0,
+        "value": 3.3,
+        "prop": 291504905
+    },
+    {
+        "timestamp": 1000000,
+        "areaId": 0,
+        "value": 4,
+        "prop": 290457096
+    },
+    {
+        "timestamp": 1000000,
+        "areaId": 0,
+        "value": "test",
+        "prop": 286265094
+    },
+    {
+        "timestamp": 1000000,
+        "areaId": 0,
+        "value": [
+            1,
+            2
+        ],
+        "prop": 289476368
+    },
+    {
+        "timestamp": 1000000,
+        "areaId": 0,
+        "value": {
+            "int32Values": [
+                1,
+                2
+            ],
+            "int64Values": [
+                3,
+                4
+            ],
+            "floatValues": [
+                5.5,
+                6.6
+            ],
+            "stringValue": "test"
+        },
+        "prop": 299896626
+    },
+    {
+        "timestamp": 1000000,
+        "areaId": 0,
+        "value": {
+            "int32Values": [
+                1
+            ],
+            "floatValues": [
+                1
+            ]
+        },
+        "prop": 299896064
+    }
+]
\ No newline at end of file
diff --git a/automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/test/prop_invalid.json b/automotive/vehicle/aidl/impl/current/fake_impl/GeneratorHub/test/prop_invalid.json
similarity index 100%
copy from automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/test/prop_invalid.json
copy to automotive/vehicle/aidl/impl/current/fake_impl/GeneratorHub/test/prop_invalid.json
diff --git a/automotive/vehicle/aidl/impl/fake_impl/README.md b/automotive/vehicle/aidl/impl/current/fake_impl/README.md
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/README.md
rename to automotive/vehicle/aidl/impl/current/fake_impl/README.md
diff --git a/automotive/vehicle/aidl/impl/fake_impl/hardware/Android.bp b/automotive/vehicle/aidl/impl/current/fake_impl/hardware/Android.bp
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/hardware/Android.bp
rename to automotive/vehicle/aidl/impl/current/fake_impl/hardware/Android.bp
diff --git a/automotive/vehicle/aidl/impl/fake_impl/hardware/include/FakeVehicleHardware.h b/automotive/vehicle/aidl/impl/current/fake_impl/hardware/include/FakeVehicleHardware.h
similarity index 100%
copy from automotive/vehicle/aidl/impl/fake_impl/hardware/include/FakeVehicleHardware.h
copy to automotive/vehicle/aidl/impl/current/fake_impl/hardware/include/FakeVehicleHardware.h
diff --git a/automotive/vehicle/aidl/impl/fake_impl/hardware/src/FakeVehicleHardware.cpp b/automotive/vehicle/aidl/impl/current/fake_impl/hardware/src/FakeVehicleHardware.cpp
similarity index 99%
rename from automotive/vehicle/aidl/impl/fake_impl/hardware/src/FakeVehicleHardware.cpp
rename to automotive/vehicle/aidl/impl/current/fake_impl/hardware/src/FakeVehicleHardware.cpp
index a6247a7..52daf68 100644
--- a/automotive/vehicle/aidl/impl/fake_impl/hardware/src/FakeVehicleHardware.cpp
+++ b/automotive/vehicle/aidl/impl/current/fake_impl/hardware/src/FakeVehicleHardware.cpp
@@ -928,8 +928,8 @@
     grpc::ClientContext context;
     auto status = clientStub->IsVehicleInUse(&context, request, &response);
     if (!status.ok()) {
-        return StatusError(StatusCode::TRY_AGAIN) << "Cannot connect to GRPC service "
-                                                  << ", error: " << status.error_message();
+        return StatusError(StatusCode::TRY_AGAIN)
+               << "Cannot connect to GRPC service " << ", error: " << status.error_message();
     }
     auto result = mValuePool->obtainBoolean(response.isvehicleinuse());
     result->prop = toInt(VehicleProperty::VEHICLE_IN_USE);
@@ -946,8 +946,8 @@
     grpc::ClientContext context;
     auto status = clientStub->GetApPowerBootupReason(&context, request, &response);
     if (!status.ok()) {
-        return StatusError(StatusCode::TRY_AGAIN) << "Cannot connect to GRPC service "
-                                                  << ", error: " << status.error_message();
+        return StatusError(StatusCode::TRY_AGAIN)
+               << "Cannot connect to GRPC service " << ", error: " << status.error_message();
     }
     auto result = mValuePool->obtainInt32(response.bootupreason());
     result->prop = toInt(VehicleProperty::AP_POWER_BOOTUP_REASON);
diff --git a/automotive/vehicle/aidl/impl/fake_impl/hardware/test/Android.bp b/automotive/vehicle/aidl/impl/current/fake_impl/hardware/test/Android.bp
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/hardware/test/Android.bp
rename to automotive/vehicle/aidl/impl/current/fake_impl/hardware/test/Android.bp
diff --git a/automotive/vehicle/aidl/impl/fake_impl/hardware/test/FakeVehicleHardwareTest.cpp b/automotive/vehicle/aidl/impl/current/fake_impl/hardware/test/FakeVehicleHardwareTest.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/fake_impl/hardware/test/FakeVehicleHardwareTest.cpp
copy to automotive/vehicle/aidl/impl/current/fake_impl/hardware/test/FakeVehicleHardwareTest.cpp
diff --git a/automotive/vehicle/aidl/impl/fake_impl/hardware/test/fakedata/prop.json b/automotive/vehicle/aidl/impl/current/fake_impl/hardware/test/fakedata/prop.json
similarity index 100%
copy from automotive/vehicle/aidl/impl/fake_impl/hardware/test/fakedata/prop.json
copy to automotive/vehicle/aidl/impl/current/fake_impl/hardware/test/fakedata/prop.json
diff --git a/automotive/vehicle/aidl/impl/fake_impl/hardware/test/override/gear_selection.json b/automotive/vehicle/aidl/impl/current/fake_impl/hardware/test/override/gear_selection.json
similarity index 100%
copy from automotive/vehicle/aidl/impl/fake_impl/hardware/test/override/gear_selection.json
copy to automotive/vehicle/aidl/impl/current/fake_impl/hardware/test/override/gear_selection.json
diff --git a/automotive/vehicle/aidl/impl/fake_impl/hardware/test/override/hvac_temperature_set.json b/automotive/vehicle/aidl/impl/current/fake_impl/hardware/test/override/hvac_temperature_set.json
similarity index 100%
copy from automotive/vehicle/aidl/impl/fake_impl/hardware/test/override/hvac_temperature_set.json
copy to automotive/vehicle/aidl/impl/current/fake_impl/hardware/test/override/hvac_temperature_set.json
diff --git a/automotive/vehicle/aidl/impl/fake_impl/obd2frame/Android.bp b/automotive/vehicle/aidl/impl/current/fake_impl/obd2frame/Android.bp
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/obd2frame/Android.bp
rename to automotive/vehicle/aidl/impl/current/fake_impl/obd2frame/Android.bp
diff --git a/automotive/vehicle/aidl/impl/fake_impl/obd2frame/include/FakeObd2Frame.h b/automotive/vehicle/aidl/impl/current/fake_impl/obd2frame/include/FakeObd2Frame.h
similarity index 100%
copy from automotive/vehicle/aidl/impl/fake_impl/obd2frame/include/FakeObd2Frame.h
copy to automotive/vehicle/aidl/impl/current/fake_impl/obd2frame/include/FakeObd2Frame.h
diff --git a/automotive/vehicle/aidl/impl/fake_impl/obd2frame/include/Obd2SensorStore.h b/automotive/vehicle/aidl/impl/current/fake_impl/obd2frame/include/Obd2SensorStore.h
similarity index 100%
copy from automotive/vehicle/aidl/impl/fake_impl/obd2frame/include/Obd2SensorStore.h
copy to automotive/vehicle/aidl/impl/current/fake_impl/obd2frame/include/Obd2SensorStore.h
diff --git a/automotive/vehicle/aidl/impl/fake_impl/obd2frame/src/FakeObd2Frame.cpp b/automotive/vehicle/aidl/impl/current/fake_impl/obd2frame/src/FakeObd2Frame.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/fake_impl/obd2frame/src/FakeObd2Frame.cpp
copy to automotive/vehicle/aidl/impl/current/fake_impl/obd2frame/src/FakeObd2Frame.cpp
diff --git a/automotive/vehicle/aidl/impl/fake_impl/obd2frame/src/Obd2SensorStore.cpp b/automotive/vehicle/aidl/impl/current/fake_impl/obd2frame/src/Obd2SensorStore.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/fake_impl/obd2frame/src/Obd2SensorStore.cpp
copy to automotive/vehicle/aidl/impl/current/fake_impl/obd2frame/src/Obd2SensorStore.cpp
diff --git a/automotive/vehicle/aidl/impl/fake_impl/obd2frame/test/Android.bp b/automotive/vehicle/aidl/impl/current/fake_impl/obd2frame/test/Android.bp
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/obd2frame/test/Android.bp
rename to automotive/vehicle/aidl/impl/current/fake_impl/obd2frame/test/Android.bp
diff --git a/automotive/vehicle/aidl/impl/fake_impl/obd2frame/test/FakeObd2FrameTest.cpp b/automotive/vehicle/aidl/impl/current/fake_impl/obd2frame/test/FakeObd2FrameTest.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/fake_impl/obd2frame/test/FakeObd2FrameTest.cpp
copy to automotive/vehicle/aidl/impl/current/fake_impl/obd2frame/test/FakeObd2FrameTest.cpp
diff --git a/automotive/vehicle/aidl/impl/fake_impl/obd2frame/test/Obd2SensorStoreTest.cpp b/automotive/vehicle/aidl/impl/current/fake_impl/obd2frame/test/Obd2SensorStoreTest.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/fake_impl/obd2frame/test/Obd2SensorStoreTest.cpp
copy to automotive/vehicle/aidl/impl/current/fake_impl/obd2frame/test/Obd2SensorStoreTest.cpp
diff --git a/automotive/vehicle/aidl/impl/fake_impl/userhal/Android.bp b/automotive/vehicle/aidl/impl/current/fake_impl/userhal/Android.bp
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/userhal/Android.bp
rename to automotive/vehicle/aidl/impl/current/fake_impl/userhal/Android.bp
diff --git a/automotive/vehicle/aidl/impl/fake_impl/userhal/include/FakeUserHal.h b/automotive/vehicle/aidl/impl/current/fake_impl/userhal/include/FakeUserHal.h
similarity index 100%
copy from automotive/vehicle/aidl/impl/fake_impl/userhal/include/FakeUserHal.h
copy to automotive/vehicle/aidl/impl/current/fake_impl/userhal/include/FakeUserHal.h
diff --git a/automotive/vehicle/aidl/impl/fake_impl/userhal/include/UserHalHelper.h b/automotive/vehicle/aidl/impl/current/fake_impl/userhal/include/UserHalHelper.h
similarity index 100%
copy from automotive/vehicle/aidl/impl/fake_impl/userhal/include/UserHalHelper.h
copy to automotive/vehicle/aidl/impl/current/fake_impl/userhal/include/UserHalHelper.h
diff --git a/automotive/vehicle/aidl/impl/fake_impl/userhal/include/UserHalTypes.h b/automotive/vehicle/aidl/impl/current/fake_impl/userhal/include/UserHalTypes.h
similarity index 100%
copy from automotive/vehicle/aidl/impl/fake_impl/userhal/include/UserHalTypes.h
copy to automotive/vehicle/aidl/impl/current/fake_impl/userhal/include/UserHalTypes.h
diff --git a/automotive/vehicle/aidl/impl/fake_impl/userhal/src/FakeUserHal.cpp b/automotive/vehicle/aidl/impl/current/fake_impl/userhal/src/FakeUserHal.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/fake_impl/userhal/src/FakeUserHal.cpp
copy to automotive/vehicle/aidl/impl/current/fake_impl/userhal/src/FakeUserHal.cpp
diff --git a/automotive/vehicle/aidl/impl/fake_impl/userhal/src/UserHalHelper.cpp b/automotive/vehicle/aidl/impl/current/fake_impl/userhal/src/UserHalHelper.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/fake_impl/userhal/src/UserHalHelper.cpp
copy to automotive/vehicle/aidl/impl/current/fake_impl/userhal/src/UserHalHelper.cpp
diff --git a/automotive/vehicle/aidl/impl/fake_impl/userhal/test/Android.bp b/automotive/vehicle/aidl/impl/current/fake_impl/userhal/test/Android.bp
similarity index 100%
rename from automotive/vehicle/aidl/impl/fake_impl/userhal/test/Android.bp
rename to automotive/vehicle/aidl/impl/current/fake_impl/userhal/test/Android.bp
diff --git a/automotive/vehicle/aidl/impl/fake_impl/userhal/test/UserHalHelper_test.cpp b/automotive/vehicle/aidl/impl/current/fake_impl/userhal/test/UserHalHelper_test.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/fake_impl/userhal/test/UserHalHelper_test.cpp
copy to automotive/vehicle/aidl/impl/current/fake_impl/userhal/test/UserHalHelper_test.cpp
diff --git a/automotive/vehicle/aidl/impl/grpc/Android.bp b/automotive/vehicle/aidl/impl/current/grpc/Android.bp
similarity index 89%
rename from automotive/vehicle/aidl/impl/grpc/Android.bp
rename to automotive/vehicle/aidl/impl/current/grpc/Android.bp
index 7a8da59..f798b72 100644
--- a/automotive/vehicle/aidl/impl/grpc/Android.bp
+++ b/automotive/vehicle/aidl/impl/current/grpc/Android.bp
@@ -22,7 +22,7 @@
         "aprotoc",
         "protoc-gen-grpc-cpp-plugin",
     ],
-    cmd: "$(location aprotoc) -I$$(dirname $(location proto/VehicleServer.proto)) -Ihardware/interfaces/automotive/vehicle/aidl/impl/proto -Iexternal/protobuf/src --plugin=protoc-gen-grpc=$(location protoc-gen-grpc-cpp-plugin) $(location proto/VehicleServer.proto) --grpc_opt=generate_mock_code=true --grpc_out=$(genDir) --cpp_out=$(genDir)",
+    cmd: "$(location aprotoc) -I$$(dirname $(location proto/VehicleServer.proto)) -Ihardware/interfaces/automotive/vehicle/aidl/impl/current/proto -Iexternal/protobuf/src --plugin=protoc-gen-grpc=$(location protoc-gen-grpc-cpp-plugin) $(location proto/VehicleServer.proto) --grpc_opt=generate_mock_code=true --grpc_out=$(genDir) --cpp_out=$(genDir)",
     srcs: [
         "proto/VehicleServer.proto",
         ":libprotobuf-internal-protos",
@@ -42,7 +42,7 @@
         "aprotoc",
         "protoc-gen-grpc-cpp-plugin",
     ],
-    cmd: "$(location aprotoc) -I$$(dirname $(location proto/VehicleServer.proto)) -Ihardware/interfaces/automotive/vehicle/aidl/impl/proto -Iexternal/protobuf/src --plugin=protoc-gen-grpc=$(location protoc-gen-grpc-cpp-plugin) $(location proto/VehicleServer.proto) --grpc_out=$(genDir) --cpp_out=$(genDir)",
+    cmd: "$(location aprotoc) -I$$(dirname $(location proto/VehicleServer.proto)) -Ihardware/interfaces/automotive/vehicle/aidl/impl/current/proto -Iexternal/protobuf/src --plugin=protoc-gen-grpc=$(location protoc-gen-grpc-cpp-plugin) $(location proto/VehicleServer.proto) --grpc_out=$(genDir) --cpp_out=$(genDir)",
     srcs: [
         "proto/VehicleServer.proto",
         ":libprotobuf-internal-protos",
diff --git a/automotive/vehicle/aidl/impl/grpc/GRPCVehicleHardware.cpp b/automotive/vehicle/aidl/impl/current/grpc/GRPCVehicleHardware.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/grpc/GRPCVehicleHardware.cpp
copy to automotive/vehicle/aidl/impl/current/grpc/GRPCVehicleHardware.cpp
diff --git a/automotive/vehicle/aidl/impl/grpc/GRPCVehicleHardware.h b/automotive/vehicle/aidl/impl/current/grpc/GRPCVehicleHardware.h
similarity index 97%
copy from automotive/vehicle/aidl/impl/grpc/GRPCVehicleHardware.h
copy to automotive/vehicle/aidl/impl/current/grpc/GRPCVehicleHardware.h
index 15f473c..ad2f512 100644
--- a/automotive/vehicle/aidl/impl/grpc/GRPCVehicleHardware.h
+++ b/automotive/vehicle/aidl/impl/current/grpc/GRPCVehicleHardware.h
@@ -115,9 +115,8 @@
     // A map from [propId, areaId] to the latest timestamp this property is updated.
     // The key is a tuple, the first element is the external timestamp (timestamp set by VHAL
     // server), the second element is the Android timestamp (elapsedRealtimeNano).
-    mutable std::unordered_map<PropIdAreaId, std::pair<int64_t, int64_t>,
-                               PropIdAreaIdHash> mLatestUpdateTimestamps
-            GUARDED_BY(mLatestUpdateTimestampsMutex);
+    mutable std::unordered_map<PropIdAreaId, std::pair<int64_t, int64_t>, PropIdAreaIdHash>
+            mLatestUpdateTimestamps GUARDED_BY(mLatestUpdateTimestampsMutex);
 
     // Only used for unit testing.
     GRPCVehicleHardware(std::unique_ptr<proto::VehicleServer::StubInterface> stub,
diff --git a/automotive/vehicle/aidl/impl/grpc/GRPCVehicleProxyServer.cpp b/automotive/vehicle/aidl/impl/current/grpc/GRPCVehicleProxyServer.cpp
similarity index 99%
copy from automotive/vehicle/aidl/impl/grpc/GRPCVehicleProxyServer.cpp
copy to automotive/vehicle/aidl/impl/current/grpc/GRPCVehicleProxyServer.cpp
index 7697c03..927a595 100644
--- a/automotive/vehicle/aidl/impl/grpc/GRPCVehicleProxyServer.cpp
+++ b/automotive/vehicle/aidl/impl/current/grpc/GRPCVehicleProxyServer.cpp
@@ -40,7 +40,7 @@
 
 GrpcVehicleProxyServer::GrpcVehicleProxyServer(std::string serverAddr,
                                                std::unique_ptr<IVehicleHardware>&& hardware)
-    : GrpcVehicleProxyServer(std::vector<std::string>({serverAddr}), std::move(hardware)){};
+    : GrpcVehicleProxyServer(std::vector<std::string>({serverAddr}), std::move(hardware)) {};
 
 GrpcVehicleProxyServer::GrpcVehicleProxyServer(std::vector<std::string> serverAddrs,
                                                std::unique_ptr<IVehicleHardware>&& hardware)
diff --git a/automotive/vehicle/aidl/impl/grpc/GRPCVehicleProxyServer.h b/automotive/vehicle/aidl/impl/current/grpc/GRPCVehicleProxyServer.h
similarity index 100%
copy from automotive/vehicle/aidl/impl/grpc/GRPCVehicleProxyServer.h
copy to automotive/vehicle/aidl/impl/current/grpc/GRPCVehicleProxyServer.h
diff --git a/automotive/vehicle/aidl/impl/grpc/proto/VehicleServer.proto b/automotive/vehicle/aidl/impl/current/grpc/proto/VehicleServer.proto
similarity index 100%
copy from automotive/vehicle/aidl/impl/grpc/proto/VehicleServer.proto
copy to automotive/vehicle/aidl/impl/current/grpc/proto/VehicleServer.proto
diff --git a/automotive/vehicle/aidl/impl/grpc/test/Android.bp b/automotive/vehicle/aidl/impl/current/grpc/test/Android.bp
similarity index 100%
rename from automotive/vehicle/aidl/impl/grpc/test/Android.bp
rename to automotive/vehicle/aidl/impl/current/grpc/test/Android.bp
diff --git a/automotive/vehicle/aidl/impl/grpc/test/GRPCVehicleHardwareUnitTest.cpp b/automotive/vehicle/aidl/impl/current/grpc/test/GRPCVehicleHardwareUnitTest.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/grpc/test/GRPCVehicleHardwareUnitTest.cpp
copy to automotive/vehicle/aidl/impl/current/grpc/test/GRPCVehicleHardwareUnitTest.cpp
diff --git a/automotive/vehicle/aidl/impl/grpc/test/GRPCVehicleProxyServerUnitTest.cpp b/automotive/vehicle/aidl/impl/current/grpc/test/GRPCVehicleProxyServerUnitTest.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/grpc/test/GRPCVehicleProxyServerUnitTest.cpp
copy to automotive/vehicle/aidl/impl/current/grpc/test/GRPCVehicleProxyServerUnitTest.cpp
diff --git a/automotive/vehicle/aidl/impl/grpc/utils/proto_message_converter/Android.bp b/automotive/vehicle/aidl/impl/current/grpc/utils/proto_message_converter/Android.bp
similarity index 100%
rename from automotive/vehicle/aidl/impl/grpc/utils/proto_message_converter/Android.bp
rename to automotive/vehicle/aidl/impl/current/grpc/utils/proto_message_converter/Android.bp
diff --git a/automotive/vehicle/aidl/impl/grpc/utils/proto_message_converter/include/ProtoMessageConverter.h b/automotive/vehicle/aidl/impl/current/grpc/utils/proto_message_converter/include/ProtoMessageConverter.h
similarity index 100%
copy from automotive/vehicle/aidl/impl/grpc/utils/proto_message_converter/include/ProtoMessageConverter.h
copy to automotive/vehicle/aidl/impl/current/grpc/utils/proto_message_converter/include/ProtoMessageConverter.h
diff --git a/automotive/vehicle/aidl/impl/grpc/utils/proto_message_converter/src/ProtoMessageConverter.cpp b/automotive/vehicle/aidl/impl/current/grpc/utils/proto_message_converter/src/ProtoMessageConverter.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/grpc/utils/proto_message_converter/src/ProtoMessageConverter.cpp
copy to automotive/vehicle/aidl/impl/current/grpc/utils/proto_message_converter/src/ProtoMessageConverter.cpp
diff --git a/automotive/vehicle/aidl/impl/grpc/utils/proto_message_converter/test/proto_message_converter_test.cpp b/automotive/vehicle/aidl/impl/current/grpc/utils/proto_message_converter/test/proto_message_converter_test.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/grpc/utils/proto_message_converter/test/proto_message_converter_test.cpp
copy to automotive/vehicle/aidl/impl/current/grpc/utils/proto_message_converter/test/proto_message_converter_test.cpp
diff --git a/automotive/vehicle/aidl/impl/hardware/Android.bp b/automotive/vehicle/aidl/impl/current/hardware/Android.bp
similarity index 100%
rename from automotive/vehicle/aidl/impl/hardware/Android.bp
rename to automotive/vehicle/aidl/impl/current/hardware/Android.bp
diff --git a/automotive/vehicle/aidl/impl/hardware/include/IVehicleHardware.h b/automotive/vehicle/aidl/impl/current/hardware/include/IVehicleHardware.h
similarity index 100%
copy from automotive/vehicle/aidl/impl/hardware/include/IVehicleHardware.h
copy to automotive/vehicle/aidl/impl/current/hardware/include/IVehicleHardware.h
diff --git a/automotive/vehicle/aidl/impl/proto/Android.bp b/automotive/vehicle/aidl/impl/current/proto/Android.bp
similarity index 92%
rename from automotive/vehicle/aidl/impl/proto/Android.bp
rename to automotive/vehicle/aidl/impl/current/proto/Android.bp
index 0d3df49..2f8ed08 100644
--- a/automotive/vehicle/aidl/impl/proto/Android.bp
+++ b/automotive/vehicle/aidl/impl/current/proto/Android.bp
@@ -35,7 +35,7 @@
         "aprotoc",
         "protoc-gen-grpc-cpp-plugin",
     ],
-    cmd: "$(location aprotoc) -Ihardware/interfaces/automotive/vehicle/aidl/impl/proto -Iexternal/protobuf/src --plugin=protoc-gen-grpc=$(location protoc-gen-grpc-cpp-plugin) $(in) --grpc_out=$(genDir) --cpp_out=$(genDir)",
+    cmd: "$(location aprotoc) -Ihardware/interfaces/automotive/vehicle/aidl/impl/current/proto -Iexternal/protobuf/src --plugin=protoc-gen-grpc=$(location protoc-gen-grpc-cpp-plugin) $(in) --grpc_out=$(genDir) --cpp_out=$(genDir)",
     srcs: [
         ":VehicleHalProtoFiles",
     ],
@@ -62,7 +62,7 @@
         "aprotoc",
         "protoc-gen-grpc-cpp-plugin",
     ],
-    cmd: "$(location aprotoc) -Ihardware/interfaces/automotive/vehicle/aidl/impl/proto -Iexternal/protobuf/src --plugin=protoc-gen-grpc=$(location protoc-gen-grpc-cpp-plugin) $(in) --grpc_out=$(genDir) --cpp_out=$(genDir)",
+    cmd: "$(location aprotoc) -Ihardware/interfaces/automotive/vehicle/aidl/impl/current/proto -Iexternal/protobuf/src --plugin=protoc-gen-grpc=$(location protoc-gen-grpc-cpp-plugin) $(in) --grpc_out=$(genDir) --cpp_out=$(genDir)",
     srcs: [
         ":VehicleHalProtoFiles",
     ],
diff --git a/automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/DumpOptions.proto b/automotive/vehicle/aidl/impl/current/proto/android/hardware/automotive/vehicle/DumpOptions.proto
similarity index 100%
copy from automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/DumpOptions.proto
copy to automotive/vehicle/aidl/impl/current/proto/android/hardware/automotive/vehicle/DumpOptions.proto
diff --git a/automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/DumpResult.proto b/automotive/vehicle/aidl/impl/current/proto/android/hardware/automotive/vehicle/DumpResult.proto
similarity index 100%
copy from automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/DumpResult.proto
copy to automotive/vehicle/aidl/impl/current/proto/android/hardware/automotive/vehicle/DumpResult.proto
diff --git a/automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/StatusCode.proto b/automotive/vehicle/aidl/impl/current/proto/android/hardware/automotive/vehicle/StatusCode.proto
similarity index 100%
copy from automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/StatusCode.proto
copy to automotive/vehicle/aidl/impl/current/proto/android/hardware/automotive/vehicle/StatusCode.proto
diff --git a/automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/SubscribeOptions.proto b/automotive/vehicle/aidl/impl/current/proto/android/hardware/automotive/vehicle/SubscribeOptions.proto
similarity index 100%
copy from automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/SubscribeOptions.proto
copy to automotive/vehicle/aidl/impl/current/proto/android/hardware/automotive/vehicle/SubscribeOptions.proto
diff --git a/automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/SubscribeRequest.proto b/automotive/vehicle/aidl/impl/current/proto/android/hardware/automotive/vehicle/SubscribeRequest.proto
similarity index 100%
copy from automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/SubscribeRequest.proto
copy to automotive/vehicle/aidl/impl/current/proto/android/hardware/automotive/vehicle/SubscribeRequest.proto
diff --git a/automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/UnsubscribeRequest.proto b/automotive/vehicle/aidl/impl/current/proto/android/hardware/automotive/vehicle/UnsubscribeRequest.proto
similarity index 100%
copy from automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/UnsubscribeRequest.proto
copy to automotive/vehicle/aidl/impl/current/proto/android/hardware/automotive/vehicle/UnsubscribeRequest.proto
diff --git a/automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/VehicleAreaConfig.proto b/automotive/vehicle/aidl/impl/current/proto/android/hardware/automotive/vehicle/VehicleAreaConfig.proto
similarity index 100%
copy from automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/VehicleAreaConfig.proto
copy to automotive/vehicle/aidl/impl/current/proto/android/hardware/automotive/vehicle/VehicleAreaConfig.proto
diff --git a/automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/VehiclePropConfig.proto b/automotive/vehicle/aidl/impl/current/proto/android/hardware/automotive/vehicle/VehiclePropConfig.proto
similarity index 100%
copy from automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/VehiclePropConfig.proto
copy to automotive/vehicle/aidl/impl/current/proto/android/hardware/automotive/vehicle/VehiclePropConfig.proto
diff --git a/automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/VehiclePropValue.proto b/automotive/vehicle/aidl/impl/current/proto/android/hardware/automotive/vehicle/VehiclePropValue.proto
similarity index 100%
copy from automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/VehiclePropValue.proto
copy to automotive/vehicle/aidl/impl/current/proto/android/hardware/automotive/vehicle/VehiclePropValue.proto
diff --git a/automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/VehiclePropValueRequest.proto b/automotive/vehicle/aidl/impl/current/proto/android/hardware/automotive/vehicle/VehiclePropValueRequest.proto
similarity index 100%
copy from automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/VehiclePropValueRequest.proto
copy to automotive/vehicle/aidl/impl/current/proto/android/hardware/automotive/vehicle/VehiclePropValueRequest.proto
diff --git a/automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/VehiclePropertyAccess.proto b/automotive/vehicle/aidl/impl/current/proto/android/hardware/automotive/vehicle/VehiclePropertyAccess.proto
similarity index 100%
copy from automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/VehiclePropertyAccess.proto
copy to automotive/vehicle/aidl/impl/current/proto/android/hardware/automotive/vehicle/VehiclePropertyAccess.proto
diff --git a/automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/VehiclePropertyChangeMode.proto b/automotive/vehicle/aidl/impl/current/proto/android/hardware/automotive/vehicle/VehiclePropertyChangeMode.proto
similarity index 100%
copy from automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/VehiclePropertyChangeMode.proto
copy to automotive/vehicle/aidl/impl/current/proto/android/hardware/automotive/vehicle/VehiclePropertyChangeMode.proto
diff --git a/automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/VehiclePropertyStatus.proto b/automotive/vehicle/aidl/impl/current/proto/android/hardware/automotive/vehicle/VehiclePropertyStatus.proto
similarity index 100%
copy from automotive/vehicle/aidl/impl/proto/android/hardware/automotive/vehicle/VehiclePropertyStatus.proto
copy to automotive/vehicle/aidl/impl/current/proto/android/hardware/automotive/vehicle/VehiclePropertyStatus.proto
diff --git a/automotive/vehicle/aidl/impl/utils/README.md b/automotive/vehicle/aidl/impl/current/utils/README.md
similarity index 100%
copy from automotive/vehicle/aidl/impl/utils/README.md
copy to automotive/vehicle/aidl/impl/current/utils/README.md
diff --git a/automotive/vehicle/aidl/impl/utils/common/Android.bp b/automotive/vehicle/aidl/impl/current/utils/common/Android.bp
similarity index 100%
rename from automotive/vehicle/aidl/impl/utils/common/Android.bp
rename to automotive/vehicle/aidl/impl/current/utils/common/Android.bp
diff --git a/automotive/vehicle/aidl/impl/utils/common/include/ConcurrentQueue.h b/automotive/vehicle/aidl/impl/current/utils/common/include/ConcurrentQueue.h
similarity index 100%
copy from automotive/vehicle/aidl/impl/utils/common/include/ConcurrentQueue.h
copy to automotive/vehicle/aidl/impl/current/utils/common/include/ConcurrentQueue.h
diff --git a/automotive/vehicle/aidl/impl/utils/common/include/ParcelableUtils.h b/automotive/vehicle/aidl/impl/current/utils/common/include/ParcelableUtils.h
similarity index 100%
copy from automotive/vehicle/aidl/impl/utils/common/include/ParcelableUtils.h
copy to automotive/vehicle/aidl/impl/current/utils/common/include/ParcelableUtils.h
diff --git a/automotive/vehicle/aidl/impl/utils/common/include/PendingRequestPool.h b/automotive/vehicle/aidl/impl/current/utils/common/include/PendingRequestPool.h
similarity index 100%
copy from automotive/vehicle/aidl/impl/utils/common/include/PendingRequestPool.h
copy to automotive/vehicle/aidl/impl/current/utils/common/include/PendingRequestPool.h
diff --git a/automotive/vehicle/aidl/impl/utils/common/include/PropertyUtils.h b/automotive/vehicle/aidl/impl/current/utils/common/include/PropertyUtils.h
similarity index 100%
copy from automotive/vehicle/aidl/impl/utils/common/include/PropertyUtils.h
copy to automotive/vehicle/aidl/impl/current/utils/common/include/PropertyUtils.h
diff --git a/automotive/vehicle/aidl/impl/utils/common/include/RecurrentTimer.h b/automotive/vehicle/aidl/impl/current/utils/common/include/RecurrentTimer.h
similarity index 100%
copy from automotive/vehicle/aidl/impl/utils/common/include/RecurrentTimer.h
copy to automotive/vehicle/aidl/impl/current/utils/common/include/RecurrentTimer.h
diff --git a/automotive/vehicle/aidl/impl/utils/common/include/VehicleHalTypes.h b/automotive/vehicle/aidl/impl/current/utils/common/include/VehicleHalTypes.h
similarity index 100%
copy from automotive/vehicle/aidl/impl/utils/common/include/VehicleHalTypes.h
copy to automotive/vehicle/aidl/impl/current/utils/common/include/VehicleHalTypes.h
diff --git a/automotive/vehicle/aidl/impl/utils/common/include/VehicleObjectPool.h b/automotive/vehicle/aidl/impl/current/utils/common/include/VehicleObjectPool.h
similarity index 98%
copy from automotive/vehicle/aidl/impl/utils/common/include/VehicleObjectPool.h
copy to automotive/vehicle/aidl/impl/current/utils/common/include/VehicleObjectPool.h
index 501ce40..e18413b 100644
--- a/automotive/vehicle/aidl/impl/utils/common/include/VehicleObjectPool.h
+++ b/automotive/vehicle/aidl/impl/current/utils/common/include/VehicleObjectPool.h
@@ -50,7 +50,7 @@
 struct Deleter {
     using OnDeleteFunc = std::function<void(T*)>;
 
-    explicit Deleter(const OnDeleteFunc& f) : mOnDelete(f){};
+    explicit Deleter(const OnDeleteFunc& f) : mOnDelete(f) {};
 
     Deleter() = default;
     Deleter(const Deleter&) = default;
@@ -76,7 +76,7 @@
     using GetSizeFunc = std::function<size_t(const T&)>;
 
     ObjectPool(size_t maxPoolObjectsSize, GetSizeFunc getSizeFunc)
-        : mMaxPoolObjectsSize(maxPoolObjectsSize), mGetSizeFunc(getSizeFunc){};
+        : mMaxPoolObjectsSize(maxPoolObjectsSize), mGetSizeFunc(getSizeFunc) {};
     virtual ~ObjectPool() = default;
 
     virtual recyclable_ptr<T> obtain() {
@@ -182,7 +182,7 @@
     // approximately this pool would at-most take 4 * 4 * 10240 = 160k memory.
     VehiclePropValuePool(size_t maxRecyclableVectorSize = 4, size_t maxPoolObjectsSize = 10240)
         : mMaxRecyclableVectorSize(maxRecyclableVectorSize),
-          mMaxPoolObjectsSize(maxPoolObjectsSize){};
+          mMaxPoolObjectsSize(maxPoolObjectsSize) {};
 
     // Obtain a recyclable VehiclePropertyValue object from the pool for the given type. If the
     // given type is not MIXED or STRING, the internal value vector size would be set to 1.
diff --git a/automotive/vehicle/aidl/impl/utils/common/include/VehiclePropertyStore.h b/automotive/vehicle/aidl/impl/current/utils/common/include/VehiclePropertyStore.h
similarity index 100%
copy from automotive/vehicle/aidl/impl/utils/common/include/VehiclePropertyStore.h
copy to automotive/vehicle/aidl/impl/current/utils/common/include/VehiclePropertyStore.h
diff --git a/automotive/vehicle/aidl/impl/utils/common/include/VehicleUtils.h b/automotive/vehicle/aidl/impl/current/utils/common/include/VehicleUtils.h
similarity index 100%
copy from automotive/vehicle/aidl/impl/utils/common/include/VehicleUtils.h
copy to automotive/vehicle/aidl/impl/current/utils/common/include/VehicleUtils.h
diff --git a/automotive/vehicle/aidl/impl/utils/common/src/PendingRequestPool.cpp b/automotive/vehicle/aidl/impl/current/utils/common/src/PendingRequestPool.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/utils/common/src/PendingRequestPool.cpp
copy to automotive/vehicle/aidl/impl/current/utils/common/src/PendingRequestPool.cpp
diff --git a/automotive/vehicle/aidl/impl/utils/common/src/RecurrentTimer.cpp b/automotive/vehicle/aidl/impl/current/utils/common/src/RecurrentTimer.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/utils/common/src/RecurrentTimer.cpp
copy to automotive/vehicle/aidl/impl/current/utils/common/src/RecurrentTimer.cpp
diff --git a/automotive/vehicle/aidl/impl/utils/common/src/VehicleObjectPool.cpp b/automotive/vehicle/aidl/impl/current/utils/common/src/VehicleObjectPool.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/utils/common/src/VehicleObjectPool.cpp
copy to automotive/vehicle/aidl/impl/current/utils/common/src/VehicleObjectPool.cpp
diff --git a/automotive/vehicle/aidl/impl/utils/common/src/VehiclePropertyStore.cpp b/automotive/vehicle/aidl/impl/current/utils/common/src/VehiclePropertyStore.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/utils/common/src/VehiclePropertyStore.cpp
copy to automotive/vehicle/aidl/impl/current/utils/common/src/VehiclePropertyStore.cpp
diff --git a/automotive/vehicle/aidl/impl/utils/common/src/VehicleUtils.cpp b/automotive/vehicle/aidl/impl/current/utils/common/src/VehicleUtils.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/utils/common/src/VehicleUtils.cpp
copy to automotive/vehicle/aidl/impl/current/utils/common/src/VehicleUtils.cpp
diff --git a/automotive/vehicle/aidl/impl/utils/common/test/Android.bp b/automotive/vehicle/aidl/impl/current/utils/common/test/Android.bp
similarity index 100%
rename from automotive/vehicle/aidl/impl/utils/common/test/Android.bp
rename to automotive/vehicle/aidl/impl/current/utils/common/test/Android.bp
diff --git a/automotive/vehicle/aidl/impl/utils/common/test/PendingRequestPoolTest.cpp b/automotive/vehicle/aidl/impl/current/utils/common/test/PendingRequestPoolTest.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/utils/common/test/PendingRequestPoolTest.cpp
copy to automotive/vehicle/aidl/impl/current/utils/common/test/PendingRequestPoolTest.cpp
diff --git a/automotive/vehicle/aidl/impl/utils/common/test/RecurrentTimerTest.cpp b/automotive/vehicle/aidl/impl/current/utils/common/test/RecurrentTimerTest.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/utils/common/test/RecurrentTimerTest.cpp
copy to automotive/vehicle/aidl/impl/current/utils/common/test/RecurrentTimerTest.cpp
diff --git a/automotive/vehicle/aidl/impl/utils/common/test/VehicleObjectPoolTest.cpp b/automotive/vehicle/aidl/impl/current/utils/common/test/VehicleObjectPoolTest.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/utils/common/test/VehicleObjectPoolTest.cpp
copy to automotive/vehicle/aidl/impl/current/utils/common/test/VehicleObjectPoolTest.cpp
diff --git a/automotive/vehicle/aidl/impl/utils/common/test/VehiclePropertyStoreTest.cpp b/automotive/vehicle/aidl/impl/current/utils/common/test/VehiclePropertyStoreTest.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/utils/common/test/VehiclePropertyStoreTest.cpp
copy to automotive/vehicle/aidl/impl/current/utils/common/test/VehiclePropertyStoreTest.cpp
diff --git a/automotive/vehicle/aidl/impl/utils/common/test/VehicleUtilsTest.cpp b/automotive/vehicle/aidl/impl/current/utils/common/test/VehicleUtilsTest.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/utils/common/test/VehicleUtilsTest.cpp
copy to automotive/vehicle/aidl/impl/current/utils/common/test/VehicleUtilsTest.cpp
diff --git a/automotive/vehicle/aidl/impl/utils/test_vendor_properties/Android.bp b/automotive/vehicle/aidl/impl/current/utils/test_vendor_properties/Android.bp
similarity index 100%
rename from automotive/vehicle/aidl/impl/utils/test_vendor_properties/Android.bp
rename to automotive/vehicle/aidl/impl/current/utils/test_vendor_properties/Android.bp
diff --git a/automotive/vehicle/aidl/impl/utils/test_vendor_properties/android/hardware/automotive/vehicle/TestVendorProperty.aidl b/automotive/vehicle/aidl/impl/current/utils/test_vendor_properties/android/hardware/automotive/vehicle/TestVendorProperty.aidl
similarity index 100%
copy from automotive/vehicle/aidl/impl/utils/test_vendor_properties/android/hardware/automotive/vehicle/TestVendorProperty.aidl
copy to automotive/vehicle/aidl/impl/current/utils/test_vendor_properties/android/hardware/automotive/vehicle/TestVendorProperty.aidl
diff --git a/automotive/vehicle/aidl/impl/vhal/Android.bp b/automotive/vehicle/aidl/impl/current/vhal/Android.bp
similarity index 97%
rename from automotive/vehicle/aidl/impl/vhal/Android.bp
rename to automotive/vehicle/aidl/impl/current/vhal/Android.bp
index 54d148e..8764eff 100644
--- a/automotive/vehicle/aidl/impl/vhal/Android.bp
+++ b/automotive/vehicle/aidl/impl/current/vhal/Android.bp
@@ -20,7 +20,7 @@
 }
 
 cc_binary {
-    name: "android.hardware.automotive.vehicle@V3-default-service",
+    name: "android.hardware.automotive.vehicle@V4-default-service",
     vendor: true,
     defaults: [
         "FakeVehicleHardwareDefaults",
diff --git a/automotive/vehicle/aidl/impl/vhal/include/ConnectedClient.h b/automotive/vehicle/aidl/impl/current/vhal/include/ConnectedClient.h
similarity index 100%
copy from automotive/vehicle/aidl/impl/vhal/include/ConnectedClient.h
copy to automotive/vehicle/aidl/impl/current/vhal/include/ConnectedClient.h
diff --git a/automotive/vehicle/aidl/impl/vhal/include/DefaultVehicleHal.h b/automotive/vehicle/aidl/impl/current/vhal/include/DefaultVehicleHal.h
similarity index 100%
copy from automotive/vehicle/aidl/impl/vhal/include/DefaultVehicleHal.h
copy to automotive/vehicle/aidl/impl/current/vhal/include/DefaultVehicleHal.h
diff --git a/automotive/vehicle/aidl/impl/vhal/include/SubscriptionManager.h b/automotive/vehicle/aidl/impl/current/vhal/include/SubscriptionManager.h
similarity index 100%
copy from automotive/vehicle/aidl/impl/vhal/include/SubscriptionManager.h
copy to automotive/vehicle/aidl/impl/current/vhal/include/SubscriptionManager.h
diff --git a/automotive/vehicle/aidl/impl/vhal/src/ConnectedClient.cpp b/automotive/vehicle/aidl/impl/current/vhal/src/ConnectedClient.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/vhal/src/ConnectedClient.cpp
copy to automotive/vehicle/aidl/impl/current/vhal/src/ConnectedClient.cpp
diff --git a/automotive/vehicle/aidl/impl/vhal/src/DefaultVehicleHal.cpp b/automotive/vehicle/aidl/impl/current/vhal/src/DefaultVehicleHal.cpp
similarity index 99%
copy from automotive/vehicle/aidl/impl/vhal/src/DefaultVehicleHal.cpp
copy to automotive/vehicle/aidl/impl/current/vhal/src/DefaultVehicleHal.cpp
index 0ead819..aa9ef53 100644
--- a/automotive/vehicle/aidl/impl/vhal/src/DefaultVehicleHal.cpp
+++ b/automotive/vehicle/aidl/impl/current/vhal/src/DefaultVehicleHal.cpp
@@ -110,7 +110,7 @@
 }  // namespace
 
 DefaultVehicleHal::DefaultVehicleHal(std::unique_ptr<IVehicleHardware> vehicleHardware)
-    : DefaultVehicleHal(std::move(vehicleHardware), /* testInterfaceVersion= */ 0){};
+    : DefaultVehicleHal(std::move(vehicleHardware), /* testInterfaceVersion= */ 0) {};
 
 DefaultVehicleHal::DefaultVehicleHal(std::unique_ptr<IVehicleHardware> vehicleHardware,
                                      int32_t testInterfaceVersion)
diff --git a/automotive/vehicle/aidl/impl/vhal/src/SubscriptionManager.cpp b/automotive/vehicle/aidl/impl/current/vhal/src/SubscriptionManager.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/vhal/src/SubscriptionManager.cpp
copy to automotive/vehicle/aidl/impl/current/vhal/src/SubscriptionManager.cpp
diff --git a/automotive/vehicle/aidl/impl/vhal/src/VehicleService.cpp b/automotive/vehicle/aidl/impl/current/vhal/src/VehicleService.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/vhal/src/VehicleService.cpp
copy to automotive/vehicle/aidl/impl/current/vhal/src/VehicleService.cpp
diff --git a/automotive/vehicle/aidl/impl/vhal/src/fuzzer.cpp b/automotive/vehicle/aidl/impl/current/vhal/src/fuzzer.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/vhal/src/fuzzer.cpp
copy to automotive/vehicle/aidl/impl/current/vhal/src/fuzzer.cpp
diff --git a/automotive/vehicle/aidl/impl/vhal/test/Android.bp b/automotive/vehicle/aidl/impl/current/vhal/test/Android.bp
similarity index 100%
rename from automotive/vehicle/aidl/impl/vhal/test/Android.bp
rename to automotive/vehicle/aidl/impl/current/vhal/test/Android.bp
diff --git a/automotive/vehicle/aidl/impl/vhal/test/ConnectedClientTest.cpp b/automotive/vehicle/aidl/impl/current/vhal/test/ConnectedClientTest.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/vhal/test/ConnectedClientTest.cpp
copy to automotive/vehicle/aidl/impl/current/vhal/test/ConnectedClientTest.cpp
diff --git a/automotive/vehicle/aidl/impl/vhal/test/DefaultVehicleHalTest.cpp b/automotive/vehicle/aidl/impl/current/vhal/test/DefaultVehicleHalTest.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/vhal/test/DefaultVehicleHalTest.cpp
copy to automotive/vehicle/aidl/impl/current/vhal/test/DefaultVehicleHalTest.cpp
diff --git a/automotive/vehicle/aidl/impl/vhal/test/MockVehicleCallback.cpp b/automotive/vehicle/aidl/impl/current/vhal/test/MockVehicleCallback.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/vhal/test/MockVehicleCallback.cpp
copy to automotive/vehicle/aidl/impl/current/vhal/test/MockVehicleCallback.cpp
diff --git a/automotive/vehicle/aidl/impl/vhal/test/MockVehicleCallback.h b/automotive/vehicle/aidl/impl/current/vhal/test/MockVehicleCallback.h
similarity index 100%
copy from automotive/vehicle/aidl/impl/vhal/test/MockVehicleCallback.h
copy to automotive/vehicle/aidl/impl/current/vhal/test/MockVehicleCallback.h
diff --git a/automotive/vehicle/aidl/impl/vhal/test/MockVehicleHardware.cpp b/automotive/vehicle/aidl/impl/current/vhal/test/MockVehicleHardware.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/vhal/test/MockVehicleHardware.cpp
copy to automotive/vehicle/aidl/impl/current/vhal/test/MockVehicleHardware.cpp
diff --git a/automotive/vehicle/aidl/impl/vhal/test/MockVehicleHardware.h b/automotive/vehicle/aidl/impl/current/vhal/test/MockVehicleHardware.h
similarity index 100%
copy from automotive/vehicle/aidl/impl/vhal/test/MockVehicleHardware.h
copy to automotive/vehicle/aidl/impl/current/vhal/test/MockVehicleHardware.h
diff --git a/automotive/vehicle/aidl/impl/vhal/test/SubscriptionManagerTest.cpp b/automotive/vehicle/aidl/impl/current/vhal/test/SubscriptionManagerTest.cpp
similarity index 100%
copy from automotive/vehicle/aidl/impl/vhal/test/SubscriptionManagerTest.cpp
copy to automotive/vehicle/aidl/impl/current/vhal/test/SubscriptionManagerTest.cpp
diff --git a/automotive/vehicle/aidl/impl/current/vhal/vhal-default-service.rc b/automotive/vehicle/aidl/impl/current/vhal/vhal-default-service.rc
new file mode 100644
index 0000000..761053f
--- /dev/null
+++ b/automotive/vehicle/aidl/impl/current/vhal/vhal-default-service.rc
@@ -0,0 +1,4 @@
+service vendor.vehicle-hal-default /vendor/bin/hw/android.hardware.automotive.vehicle@V4-default-service
+    class early_hal
+    user vehicle_network
+    group system inet
diff --git a/automotive/vehicle/aidl/impl/current/vhal/vhal-default-service.xml b/automotive/vehicle/aidl/impl/current/vhal/vhal-default-service.xml
new file mode 100644
index 0000000..4695bf7
--- /dev/null
+++ b/automotive/vehicle/aidl/impl/current/vhal/vhal-default-service.xml
@@ -0,0 +1,7 @@
+<manifest version="1.0" type="device">
+    <hal format="aidl">
+        <name>android.hardware.automotive.vehicle</name>
+        <version>4</version>
+        <fqname>IVehicle/default</fqname>
+    </hal>
+</manifest>
diff --git a/automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/test/prop.json b/automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/test/prop.json
deleted file mode 100644
index b881109..0000000
--- a/automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/test/prop.json
+++ /dev/null
@@ -1,26 +0,0 @@
-[
-  {
-    "timestamp": 1000000,
-    "areaId": 0,
-    "value": 8,
-    "prop": 289408000
-  },
-  {
-    "timestamp": 2000000,
-    "areaId": 0,
-    "value": 4,
-    "prop": 289408000
-  },
-  {
-    "timestamp": 3000000,
-    "areaId": 0,
-    "value": 16,
-    "prop": 289408000
-  },
-  {
-    "timestamp": 4000000,
-    "areaId": 0,
-    "value": 10,
-    "prop": 289408000
-  }
-]
diff --git a/automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/test/prop_different_types.json b/automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/test/prop_different_types.json
deleted file mode 100644
index 0363ebd..0000000
--- a/automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/test/prop_different_types.json
+++ /dev/null
@@ -1,58 +0,0 @@
-[
-  {
-    "timestamp": 1000000,
-    "areaId": 0,
-    "value": 1,
-    "prop": 287310600
-  },
-  {
-    "timestamp": 1000000,
-    "areaId": 0,
-    "value": 2,
-    "prop": 289408000
-  },
-  {
-    "timestamp": 1000000,
-    "areaId": 0,
-    "value": 3.3,
-    "prop": 291504905
-  },
-  {
-    "timestamp": 1000000,
-    "areaId": 0,
-    "value": 4,
-    "prop": 290457096
-  },
-  {
-    "timestamp": 1000000,
-    "areaId": 0,
-    "value": "test",
-    "prop": 286265094
-  },
-  {
-    "timestamp": 1000000,
-    "areaId": 0,
-    "value": [1, 2],
-    "prop": 289476368
-  },
-  {
-    "timestamp": 1000000,
-    "areaId": 0,
-    "value": {
-      "int32Values": [1, 2],
-      "int64Values": [3, 4],
-      "floatValues": [5.5, 6.6],
-      "stringValue": "test"
-    },
-    "prop": 299896626
-  },
-  {
-    "timestamp": 1000000,
-    "areaId": 0,
-    "value": {
-      "int32Values": [1],
-      "floatValues": [1]
-    },
-    "prop": 299896064
-  }
-]
\ No newline at end of file
diff --git a/camera/metadata/aidl/aidl_api/android.hardware.camera.metadata/current/android/hardware/camera/metadata/CameraMetadataSection.aidl b/camera/metadata/aidl/aidl_api/android.hardware.camera.metadata/current/android/hardware/camera/metadata/CameraMetadataSection.aidl
index 5a35915..49243dd 100644
--- a/camera/metadata/aidl/aidl_api/android.hardware.camera.metadata/current/android/hardware/camera/metadata/CameraMetadataSection.aidl
+++ b/camera/metadata/aidl/aidl_api/android.hardware.camera.metadata/current/android/hardware/camera/metadata/CameraMetadataSection.aidl
@@ -73,5 +73,6 @@
   ANDROID_EXTENSION,
   ANDROID_JPEGR,
   ANDROID_SHARED_SESSION,
+  ANDROID_DESKTOP_EFFECTS,
   VENDOR_SECTION = 0x8000,
 }
diff --git a/camera/metadata/aidl/aidl_api/android.hardware.camera.metadata/current/android/hardware/camera/metadata/CameraMetadataSectionStart.aidl b/camera/metadata/aidl/aidl_api/android.hardware.camera.metadata/current/android/hardware/camera/metadata/CameraMetadataSectionStart.aidl
index 4cdca62..588179f 100644
--- a/camera/metadata/aidl/aidl_api/android.hardware.camera.metadata/current/android/hardware/camera/metadata/CameraMetadataSectionStart.aidl
+++ b/camera/metadata/aidl/aidl_api/android.hardware.camera.metadata/current/android/hardware/camera/metadata/CameraMetadataSectionStart.aidl
@@ -73,5 +73,6 @@
   ANDROID_EXTENSION_START = (android.hardware.camera.metadata.CameraMetadataSection.ANDROID_EXTENSION << 16) /* 2097152 */,
   ANDROID_JPEGR_START = (android.hardware.camera.metadata.CameraMetadataSection.ANDROID_JPEGR << 16) /* 2162688 */,
   ANDROID_SHARED_SESSION_START = (android.hardware.camera.metadata.CameraMetadataSection.ANDROID_SHARED_SESSION << 16) /* 2228224 */,
+  ANDROID_DESKTOP_EFFECTS_START = (android.hardware.camera.metadata.CameraMetadataSection.ANDROID_DESKTOP_EFFECTS << 16) /* 2293760 */,
   VENDOR_SECTION_START = (android.hardware.camera.metadata.CameraMetadataSection.VENDOR_SECTION << 16) /* -2147483648 */,
 }
diff --git a/camera/metadata/aidl/aidl_api/android.hardware.camera.metadata/current/android/hardware/camera/metadata/CameraMetadataTag.aidl b/camera/metadata/aidl/aidl_api/android.hardware.camera.metadata/current/android/hardware/camera/metadata/CameraMetadataTag.aidl
index 2615270..c3cb3f7 100644
--- a/camera/metadata/aidl/aidl_api/android.hardware.camera.metadata/current/android/hardware/camera/metadata/CameraMetadataTag.aidl
+++ b/camera/metadata/aidl/aidl_api/android.hardware.camera.metadata/current/android/hardware/camera/metadata/CameraMetadataTag.aidl
@@ -366,4 +366,10 @@
   ANDROID_JPEGR_AVAILABLE_JPEG_R_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION,
   ANDROID_JPEGR_AVAILABLE_JPEG_R_MIN_FRAME_DURATIONS_MAXIMUM_RESOLUTION,
   ANDROID_JPEGR_AVAILABLE_JPEG_R_STALL_DURATIONS_MAXIMUM_RESOLUTION,
+  ANDROID_DESKTOP_EFFECTS_CAPABILITIES = android.hardware.camera.metadata.CameraMetadataSectionStart.ANDROID_DESKTOP_EFFECTS_START /* 2293760 */,
+  ANDROID_DESKTOP_EFFECTS_BACKGROUND_BLUR_MODES,
+  ANDROID_DESKTOP_EFFECTS_BACKGROUND_BLUR_MODE,
+  ANDROID_DESKTOP_EFFECTS_FACE_RETOUCH_MODE,
+  ANDROID_DESKTOP_EFFECTS_FACE_RETOUCH_STRENGTH,
+  ANDROID_DESKTOP_EFFECTS_PORTRAIT_RELIGHT_MODE,
 }
diff --git a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl b/camera/metadata/aidl/aidl_api/android.hardware.camera.metadata/current/android/hardware/camera/metadata/DesktopEffectsBackgroundBlurMode.aidl
similarity index 79%
copy from gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl
copy to camera/metadata/aidl/aidl_api/android.hardware.camera.metadata/current/android/hardware/camera/metadata/DesktopEffectsBackgroundBlurMode.aidl
index ae709d4..36da888 100644
--- a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl
+++ b/camera/metadata/aidl/aidl_api/android.hardware.camera.metadata/current/android/hardware/camera/metadata/DesktopEffectsBackgroundBlurMode.aidl
@@ -12,6 +12,10 @@
  * 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.
+ *//*
+ * Autogenerated from camera metadata definitions in
+ * /system/media/camera/docs/metadata_definitions.xml
+ * *** DO NOT EDIT BY HAND ***
  */
 ///////////////////////////////////////////////////////////////////////////////
 // THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
@@ -31,14 +35,10 @@
 // with such a backward incompatible change, it has a high risk of breaking
 // later when a module using the interface is updated, e.g., Mainline modules.
 
-package android.hardware.gnss.gnss_assistance;
-/* @hide */
-@VintfStability
-parcelable TimeOfClock {
-  int year;
-  int month;
-  int day;
-  int hour;
-  int minute;
-  int seconds;
+package android.hardware.camera.metadata;
+@Backing(type="int") @VintfStability
+enum DesktopEffectsBackgroundBlurMode {
+  ANDROID_DESKTOP_EFFECTS_BACKGROUND_BLUR_MODE_OFF,
+  ANDROID_DESKTOP_EFFECTS_BACKGROUND_BLUR_MODE_LIGHT,
+  ANDROID_DESKTOP_EFFECTS_BACKGROUND_BLUR_MODE_FULL,
 }
diff --git a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl b/camera/metadata/aidl/aidl_api/android.hardware.camera.metadata/current/android/hardware/camera/metadata/DesktopEffectsCapabilities.aidl
similarity index 79%
copy from gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl
copy to camera/metadata/aidl/aidl_api/android.hardware.camera.metadata/current/android/hardware/camera/metadata/DesktopEffectsCapabilities.aidl
index ae709d4..d16ef99 100644
--- a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl
+++ b/camera/metadata/aidl/aidl_api/android.hardware.camera.metadata/current/android/hardware/camera/metadata/DesktopEffectsCapabilities.aidl
@@ -12,6 +12,10 @@
  * 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.
+ *//*
+ * Autogenerated from camera metadata definitions in
+ * /system/media/camera/docs/metadata_definitions.xml
+ * *** DO NOT EDIT BY HAND ***
  */
 ///////////////////////////////////////////////////////////////////////////////
 // THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
@@ -31,14 +35,10 @@
 // with such a backward incompatible change, it has a high risk of breaking
 // later when a module using the interface is updated, e.g., Mainline modules.
 
-package android.hardware.gnss.gnss_assistance;
-/* @hide */
-@VintfStability
-parcelable TimeOfClock {
-  int year;
-  int month;
-  int day;
-  int hour;
-  int minute;
-  int seconds;
+package android.hardware.camera.metadata;
+@Backing(type="int") @VintfStability
+enum DesktopEffectsCapabilities {
+  ANDROID_DESKTOP_EFFECTS_CAPABILITIES_BACKGROUND_BLUR,
+  ANDROID_DESKTOP_EFFECTS_CAPABILITIES_FACE_RETOUCH,
+  ANDROID_DESKTOP_EFFECTS_CAPABILITIES_PORTRAIT_RELIGHT,
 }
diff --git a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl b/camera/metadata/aidl/aidl_api/android.hardware.camera.metadata/current/android/hardware/camera/metadata/DesktopEffectsFaceRetouchMode.aidl
similarity index 81%
copy from gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl
copy to camera/metadata/aidl/aidl_api/android.hardware.camera.metadata/current/android/hardware/camera/metadata/DesktopEffectsFaceRetouchMode.aidl
index ae709d4..8004b91 100644
--- a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl
+++ b/camera/metadata/aidl/aidl_api/android.hardware.camera.metadata/current/android/hardware/camera/metadata/DesktopEffectsFaceRetouchMode.aidl
@@ -12,6 +12,10 @@
  * 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.
+ *//*
+ * Autogenerated from camera metadata definitions in
+ * /system/media/camera/docs/metadata_definitions.xml
+ * *** DO NOT EDIT BY HAND ***
  */
 ///////////////////////////////////////////////////////////////////////////////
 // THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
@@ -31,14 +35,9 @@
 // with such a backward incompatible change, it has a high risk of breaking
 // later when a module using the interface is updated, e.g., Mainline modules.
 
-package android.hardware.gnss.gnss_assistance;
-/* @hide */
-@VintfStability
-parcelable TimeOfClock {
-  int year;
-  int month;
-  int day;
-  int hour;
-  int minute;
-  int seconds;
+package android.hardware.camera.metadata;
+@Backing(type="int") @VintfStability
+enum DesktopEffectsFaceRetouchMode {
+  ANDROID_DESKTOP_EFFECTS_FACE_RETOUCH_MODE_OFF,
+  ANDROID_DESKTOP_EFFECTS_FACE_RETOUCH_MODE_ON,
 }
diff --git a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl b/camera/metadata/aidl/aidl_api/android.hardware.camera.metadata/current/android/hardware/camera/metadata/DesktopEffectsPortraitRelightMode.aidl
similarity index 81%
copy from gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl
copy to camera/metadata/aidl/aidl_api/android.hardware.camera.metadata/current/android/hardware/camera/metadata/DesktopEffectsPortraitRelightMode.aidl
index ae709d4..abd06a7 100644
--- a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl
+++ b/camera/metadata/aidl/aidl_api/android.hardware.camera.metadata/current/android/hardware/camera/metadata/DesktopEffectsPortraitRelightMode.aidl
@@ -12,6 +12,10 @@
  * 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.
+ *//*
+ * Autogenerated from camera metadata definitions in
+ * /system/media/camera/docs/metadata_definitions.xml
+ * *** DO NOT EDIT BY HAND ***
  */
 ///////////////////////////////////////////////////////////////////////////////
 // THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
@@ -31,14 +35,9 @@
 // with such a backward incompatible change, it has a high risk of breaking
 // later when a module using the interface is updated, e.g., Mainline modules.
 
-package android.hardware.gnss.gnss_assistance;
-/* @hide */
-@VintfStability
-parcelable TimeOfClock {
-  int year;
-  int month;
-  int day;
-  int hour;
-  int minute;
-  int seconds;
+package android.hardware.camera.metadata;
+@Backing(type="int") @VintfStability
+enum DesktopEffectsPortraitRelightMode {
+  ANDROID_DESKTOP_EFFECTS_PORTRAIT_RELIGHT_MODE_OFF,
+  ANDROID_DESKTOP_EFFECTS_PORTRAIT_RELIGHT_MODE_ON,
 }
diff --git a/camera/metadata/aidl/android/hardware/camera/metadata/CameraMetadataSection.aidl b/camera/metadata/aidl/android/hardware/camera/metadata/CameraMetadataSection.aidl
index 2268dfd..b7edaf2 100644
--- a/camera/metadata/aidl/android/hardware/camera/metadata/CameraMetadataSection.aidl
+++ b/camera/metadata/aidl/android/hardware/camera/metadata/CameraMetadataSection.aidl
@@ -64,5 +64,6 @@
     ANDROID_EXTENSION,
     ANDROID_JPEGR,
     ANDROID_SHARED_SESSION,
+    ANDROID_DESKTOP_EFFECTS,
     VENDOR_SECTION = 0x8000,
 }
diff --git a/camera/metadata/aidl/android/hardware/camera/metadata/CameraMetadataSectionStart.aidl b/camera/metadata/aidl/android/hardware/camera/metadata/CameraMetadataSectionStart.aidl
index 3ec54d4..b36a433 100644
--- a/camera/metadata/aidl/android/hardware/camera/metadata/CameraMetadataSectionStart.aidl
+++ b/camera/metadata/aidl/android/hardware/camera/metadata/CameraMetadataSectionStart.aidl
@@ -66,5 +66,6 @@
     ANDROID_EXTENSION_START = CameraMetadataSection.ANDROID_EXTENSION << 16,
     ANDROID_JPEGR_START = CameraMetadataSection.ANDROID_JPEGR << 16,
     ANDROID_SHARED_SESSION_START = CameraMetadataSection.ANDROID_SHARED_SESSION << 16,
+    ANDROID_DESKTOP_EFFECTS_START = CameraMetadataSection.ANDROID_DESKTOP_EFFECTS << 16,
     VENDOR_SECTION_START = CameraMetadataSection.VENDOR_SECTION << 16,
 }
diff --git a/camera/metadata/aidl/android/hardware/camera/metadata/CameraMetadataTag.aidl b/camera/metadata/aidl/android/hardware/camera/metadata/CameraMetadataTag.aidl
index 66ca912..8b2ac72 100644
--- a/camera/metadata/aidl/android/hardware/camera/metadata/CameraMetadataTag.aidl
+++ b/camera/metadata/aidl/android/hardware/camera/metadata/CameraMetadataTag.aidl
@@ -2536,4 +2536,50 @@
      * @see ANDROID_SENSOR_PIXEL_MODE
      */
     ANDROID_JPEGR_AVAILABLE_JPEG_R_STALL_DURATIONS_MAXIMUM_RESOLUTION,
+    /**
+     * android.desktopEffects.capabilities [static, enum[], system]
+     *
+     * <p>List of special effects supported by the camera device.</p>
+     */
+    ANDROID_DESKTOP_EFFECTS_CAPABILITIES = CameraMetadataSectionStart.ANDROID_DESKTOP_EFFECTS_START,
+    /**
+     * android.desktopEffects.backgroundBlurModes [static, byte[], system]
+     *
+     * <p>List of background blur modes supported by the camera device. The key will only exist
+     * if BACKGROUND_BLUR is listed by ANDROID_DESKTOP_EFFECTS_CAPABILITIES.</p>
+     *
+     * @see ANDROID_DESKTOP_EFFECTS_CAPABILITIES
+     */
+    ANDROID_DESKTOP_EFFECTS_BACKGROUND_BLUR_MODES,
+    /**
+     * android.desktopEffects.backgroundBlurMode [controls, enum, system]
+     *
+     * <p>Control how the background should be blurred. Supported modes are listed in
+     * ANDROID_DESKTOP_EFFECTS_BACKGROUND_BLUR_MODES by the camera device.</p>
+     *
+     * @see ANDROID_DESKTOP_EFFECTS_BACKGROUND_BLUR_MODES
+     */
+    ANDROID_DESKTOP_EFFECTS_BACKGROUND_BLUR_MODE,
+    /**
+     * android.desktopEffects.faceRetouchMode [controls, enum, system]
+     *
+     * <p>Whether to enable face retouch effect.</p>
+     */
+    ANDROID_DESKTOP_EFFECTS_FACE_RETOUCH_MODE,
+    /**
+     * android.desktopEffects.faceRetouchStrength [controls, byte, system]
+     *
+     * <p>Control the strength of face retouch applied to the frames. If
+     * ANDROID_DESKTOP_EFFECTS_FACE_RETOUCH_MODE in ON without a faceRetouchStrength,
+     * a default will be set by the camera device.</p>
+     *
+     * @see ANDROID_DESKTOP_EFFECTS_FACE_RETOUCH_MODE
+     */
+    ANDROID_DESKTOP_EFFECTS_FACE_RETOUCH_STRENGTH,
+    /**
+     * android.desktopEffects.portraitRelightMode [controls, enum, system]
+     *
+     * <p>Whether to enable portrait relighting effect.</p>
+     */
+    ANDROID_DESKTOP_EFFECTS_PORTRAIT_RELIGHT_MODE,
 }
diff --git a/camera/metadata/aidl/android/hardware/camera/metadata/DesktopEffectsBackgroundBlurMode.aidl b/camera/metadata/aidl/android/hardware/camera/metadata/DesktopEffectsBackgroundBlurMode.aidl
new file mode 100644
index 0000000..e8b2180
--- /dev/null
+++ b/camera/metadata/aidl/android/hardware/camera/metadata/DesktopEffectsBackgroundBlurMode.aidl
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2024 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.
+ */
+
+/*
+ * Autogenerated from camera metadata definitions in
+ * /system/media/camera/docs/metadata_definitions.xml
+ * *** DO NOT EDIT BY HAND ***
+ */
+
+package android.hardware.camera.metadata;
+
+/**
+ * android.desktopEffects.backgroundBlurMode enumeration values
+ * @see ANDROID_DESKTOP_EFFECTS_BACKGROUND_BLUR_MODE
+ * See system/media/camera/docs/metadata_definitions.xml for details.
+ */
+@VintfStability
+@Backing(type="int")
+enum DesktopEffectsBackgroundBlurMode {
+    ANDROID_DESKTOP_EFFECTS_BACKGROUND_BLUR_MODE_OFF,
+    ANDROID_DESKTOP_EFFECTS_BACKGROUND_BLUR_MODE_LIGHT,
+    ANDROID_DESKTOP_EFFECTS_BACKGROUND_BLUR_MODE_FULL,
+}
diff --git a/camera/metadata/aidl/android/hardware/camera/metadata/DesktopEffectsCapabilities.aidl b/camera/metadata/aidl/android/hardware/camera/metadata/DesktopEffectsCapabilities.aidl
new file mode 100644
index 0000000..45cb78e
--- /dev/null
+++ b/camera/metadata/aidl/android/hardware/camera/metadata/DesktopEffectsCapabilities.aidl
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2024 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.
+ */
+
+/*
+ * Autogenerated from camera metadata definitions in
+ * /system/media/camera/docs/metadata_definitions.xml
+ * *** DO NOT EDIT BY HAND ***
+ */
+
+package android.hardware.camera.metadata;
+
+/**
+ * android.desktopEffects.capabilities enumeration values
+ * @see ANDROID_DESKTOP_EFFECTS_CAPABILITIES
+ * See system/media/camera/docs/metadata_definitions.xml for details.
+ */
+@VintfStability
+@Backing(type="int")
+enum DesktopEffectsCapabilities {
+    ANDROID_DESKTOP_EFFECTS_CAPABILITIES_BACKGROUND_BLUR,
+    ANDROID_DESKTOP_EFFECTS_CAPABILITIES_FACE_RETOUCH,
+    ANDROID_DESKTOP_EFFECTS_CAPABILITIES_PORTRAIT_RELIGHT,
+}
diff --git a/camera/metadata/aidl/android/hardware/camera/metadata/DesktopEffectsFaceRetouchMode.aidl b/camera/metadata/aidl/android/hardware/camera/metadata/DesktopEffectsFaceRetouchMode.aidl
new file mode 100644
index 0000000..d8c8101
--- /dev/null
+++ b/camera/metadata/aidl/android/hardware/camera/metadata/DesktopEffectsFaceRetouchMode.aidl
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2024 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.
+ */
+
+/*
+ * Autogenerated from camera metadata definitions in
+ * /system/media/camera/docs/metadata_definitions.xml
+ * *** DO NOT EDIT BY HAND ***
+ */
+
+package android.hardware.camera.metadata;
+
+/**
+ * android.desktopEffects.faceRetouchMode enumeration values
+ * @see ANDROID_DESKTOP_EFFECTS_FACE_RETOUCH_MODE
+ * See system/media/camera/docs/metadata_definitions.xml for details.
+ */
+@VintfStability
+@Backing(type="int")
+enum DesktopEffectsFaceRetouchMode {
+    ANDROID_DESKTOP_EFFECTS_FACE_RETOUCH_MODE_OFF,
+    ANDROID_DESKTOP_EFFECTS_FACE_RETOUCH_MODE_ON,
+}
diff --git a/camera/metadata/aidl/android/hardware/camera/metadata/DesktopEffectsPortraitRelightMode.aidl b/camera/metadata/aidl/android/hardware/camera/metadata/DesktopEffectsPortraitRelightMode.aidl
new file mode 100644
index 0000000..4a1d438
--- /dev/null
+++ b/camera/metadata/aidl/android/hardware/camera/metadata/DesktopEffectsPortraitRelightMode.aidl
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2024 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.
+ */
+
+/*
+ * Autogenerated from camera metadata definitions in
+ * /system/media/camera/docs/metadata_definitions.xml
+ * *** DO NOT EDIT BY HAND ***
+ */
+
+package android.hardware.camera.metadata;
+
+/**
+ * android.desktopEffects.portraitRelightMode enumeration values
+ * @see ANDROID_DESKTOP_EFFECTS_PORTRAIT_RELIGHT_MODE
+ * See system/media/camera/docs/metadata_definitions.xml for details.
+ */
+@VintfStability
+@Backing(type="int")
+enum DesktopEffectsPortraitRelightMode {
+    ANDROID_DESKTOP_EFFECTS_PORTRAIT_RELIGHT_MODE_OFF,
+    ANDROID_DESKTOP_EFFECTS_PORTRAIT_RELIGHT_MODE_ON,
+}
diff --git a/compatibility_matrices/compatibility_matrix.202504.xml b/compatibility_matrices/compatibility_matrix.202504.xml
index 3b16bc9..8a3efa7 100644
--- a/compatibility_matrices/compatibility_matrix.202504.xml
+++ b/compatibility_matrices/compatibility_matrix.202504.xml
@@ -615,7 +615,7 @@
     </hal>
     <hal format="aidl">
         <name>android.hardware.tv.input</name>
-        <version>1-2</version>
+        <version>1-3</version>
         <interface>
             <name>ITvInput</name>
             <instance>default</instance>
diff --git a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/BeidouSatelliteEphemeris.aidl b/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/BeidouSatelliteEphemeris.aidl
index 91735a0..ec517e6 100644
--- a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/BeidouSatelliteEphemeris.aidl
+++ b/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/BeidouSatelliteEphemeris.aidl
@@ -27,7 +27,7 @@
   android.hardware.gnss.gnss_assistance.BeidouSatelliteEphemeris.BeidouSatelliteEphemerisTime satelliteEphemerisTime;
   @VintfStability
   parcelable BeidouSatelliteClockModel {
-    android.hardware.gnss.gnss_assistance.TimeOfClock timeOfClock;
+    long timeOfClockSeconds;
     double af0;
     double af1;
     double af2;
diff --git a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/GalileoSatelliteEphemeris.aidl b/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/GalileoSatelliteEphemeris.aidl
index 17d48b1..1bac08e 100644
--- a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/GalileoSatelliteEphemeris.aidl
+++ b/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/GalileoSatelliteEphemeris.aidl
@@ -42,7 +42,7 @@
   android.hardware.gnss.gnss_assistance.SatelliteEphemerisTime satelliteEphemerisTime;
   @VintfStability
   parcelable GalileoSatelliteClockModel {
-    android.hardware.gnss.gnss_assistance.TimeOfClock toc;
+    long timeOfClockSeconds;
     double af0;
     double af1;
     double af2;
diff --git a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/GlonassAlmanac.aidl b/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/GlonassAlmanac.aidl
index a545166..55621ab 100644
--- a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/GlonassAlmanac.aidl
+++ b/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/GlonassAlmanac.aidl
@@ -20,7 +20,7 @@
 /* @hide */
 @VintfStability
 parcelable GlonassAlmanac {
-  long issueDate;
+  long issueDateMs;
   android.hardware.gnss.gnss_assistance.GlonassAlmanac.GlonassSatelliteAlmanac[] satelliteAlmanac;
   @VintfStability
   parcelable GlonassSatelliteAlmanac {
diff --git a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/GlonassSatelliteEphemeris.aidl b/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/GlonassSatelliteEphemeris.aidl
index fbab59c..bbcb3af 100644
--- a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/GlonassSatelliteEphemeris.aidl
+++ b/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/GlonassSatelliteEphemeris.aidl
@@ -43,7 +43,7 @@
   android.hardware.gnss.gnss_assistance.GlonassSatelliteEphemeris.GlonassSatelliteOrbitModel satelliteOrbitModel;
   @VintfStability
   parcelable GlonassSatelliteClockModel {
-    android.hardware.gnss.gnss_assistance.TimeOfClock timeOfClock;
+    long timeOfClockSeconds;
     double clockBias;
     double freqBias;
     int freqNumber;
diff --git a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/GpsSatelliteEphemeris.aidl b/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/GpsSatelliteEphemeris.aidl
index 1e80516..721edb4 100644
--- a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/GpsSatelliteEphemeris.aidl
+++ b/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/GpsSatelliteEphemeris.aidl
@@ -48,7 +48,7 @@
   }
   @VintfStability
   parcelable GpsSatelliteClockModel {
-    android.hardware.gnss.gnss_assistance.TimeOfClock timeOfClock;
+    long timeOfClockSeconds;
     double af0;
     double af1;
     double af2;
diff --git a/gnss/aidl/android/hardware/gnss/gnss_assistance/BeidouSatelliteEphemeris.aidl b/gnss/aidl/android/hardware/gnss/gnss_assistance/BeidouSatelliteEphemeris.aidl
index 48398ef..bb1f7d9 100644
--- a/gnss/aidl/android/hardware/gnss/gnss_assistance/BeidouSatelliteEphemeris.aidl
+++ b/gnss/aidl/android/hardware/gnss/gnss_assistance/BeidouSatelliteEphemeris.aidl
@@ -1,7 +1,6 @@
 package android.hardware.gnss.gnss_assistance;
 
 import android.hardware.gnss.gnss_assistance.KeplerianOrbitModel;
-import android.hardware.gnss.gnss_assistance.TimeOfClock;
 
 /**
  * Contains ephemeris parameters specific to Beidou satellites.
@@ -17,8 +16,13 @@
      */
     @VintfStability
     parcelable BeidouSatelliteClockModel {
-        /** Time of the clock. */
-        TimeOfClock timeOfClock;
+        /**
+         * Time of the clock in seconds since Beidou epoch.
+         *
+         * Represents the 'Epoch' field within the 'SV/EPOCH/SV CLK' record of GNSS
+         * navigation message file in RINEX 3.05 Table A14.
+         */
+        long timeOfClockSeconds;
 
         /** SV clock bias in seconds. */
         double af0;
diff --git a/gnss/aidl/android/hardware/gnss/gnss_assistance/GalileoSatelliteEphemeris.aidl b/gnss/aidl/android/hardware/gnss/gnss_assistance/GalileoSatelliteEphemeris.aidl
index 1562934..e3160ef 100644
--- a/gnss/aidl/android/hardware/gnss/gnss_assistance/GalileoSatelliteEphemeris.aidl
+++ b/gnss/aidl/android/hardware/gnss/gnss_assistance/GalileoSatelliteEphemeris.aidl
@@ -18,7 +18,6 @@
 
 import android.hardware.gnss.gnss_assistance.KeplerianOrbitModel;
 import android.hardware.gnss.gnss_assistance.SatelliteEphemerisTime;
-import android.hardware.gnss.gnss_assistance.TimeOfClock;
 
 /**
  * Contains ephemeris parameters specific to Galileo satellites.
@@ -44,8 +43,13 @@
             GALILEO_INAV_CLOCK = 2
         }
 
-        /** Time of the clock. */
-        TimeOfClock toc;
+        /**
+         * Time of the clock in seconds since Galileo epoch.
+         *
+         * Represents the 'Epoch' field within the 'SV/EPOCH/SV CLK' record of GNSS
+         * navigation message file in RINEX 3.05 Table A8 (Galileo).
+         */
+        long timeOfClockSeconds;
 
         /** SV clock bias correction coefficient in seconds. */
         double af0;
diff --git a/gnss/aidl/android/hardware/gnss/gnss_assistance/GlonassAlmanac.aidl b/gnss/aidl/android/hardware/gnss/gnss_assistance/GlonassAlmanac.aidl
index 2662717..d4f149d 100644
--- a/gnss/aidl/android/hardware/gnss/gnss_assistance/GlonassAlmanac.aidl
+++ b/gnss/aidl/android/hardware/gnss/gnss_assistance/GlonassAlmanac.aidl
@@ -48,8 +48,8 @@
         double omega;
     }
 
-    /** Almanac reference UTC time in milliseconds. */
-    long issueDate;
+    /** Almanac issue date in milliseconds (UTC). */
+    long issueDateMs;
 
     /** Array of GlonassSatelliteAlmanac. */
     GlonassSatelliteAlmanac[] satelliteAlmanac;
diff --git a/gnss/aidl/android/hardware/gnss/gnss_assistance/GlonassSatelliteEphemeris.aidl b/gnss/aidl/android/hardware/gnss/gnss_assistance/GlonassSatelliteEphemeris.aidl
index 383aed1..bebde51 100644
--- a/gnss/aidl/android/hardware/gnss/gnss_assistance/GlonassSatelliteEphemeris.aidl
+++ b/gnss/aidl/android/hardware/gnss/gnss_assistance/GlonassSatelliteEphemeris.aidl
@@ -17,7 +17,6 @@
 package android.hardware.gnss.gnss_assistance;
 
 import android.hardware.gnss.gnss_assistance.SatelliteEphemerisTime;
-import android.hardware.gnss.gnss_assistance.TimeOfClock;
 
 /**
  * Contains ephemeris parameters specific to Glonass satellites.
@@ -30,8 +29,13 @@
     /** Contains the set of parameters needed for Glonass satellite clock correction. */
     @VintfStability
     parcelable GlonassSatelliteClockModel {
-        /** Time of Clock. */
-        TimeOfClock timeOfClock;
+        /**
+         * Time of the clock in seconds (UTC).
+         *
+         * Represents the 'Epoch' field within the 'SV/EPOCH/SV CLK' record of GNSS
+         * navigation message file in RINEX 3.05 Table A10.
+         */
+        long timeOfClockSeconds;
 
         /** Clock bias in seconds (-TauN). */
         double clockBias;
diff --git a/gnss/aidl/android/hardware/gnss/gnss_assistance/GnssAlmanac.aidl b/gnss/aidl/android/hardware/gnss/gnss_assistance/GnssAlmanac.aidl
index e4f4bc8..08f3373 100644
--- a/gnss/aidl/android/hardware/gnss/gnss_assistance/GnssAlmanac.aidl
+++ b/gnss/aidl/android/hardware/gnss/gnss_assistance/GnssAlmanac.aidl
@@ -29,7 +29,7 @@
 @VintfStability
 parcelable GnssAlmanac {
     /**
-     * Almanac issue date in milliseconds since the Unix epoch.
+     * Almanac issue date in milliseconds (UTC).
      *
      * This is unused for GPS/QZSS/Baidou.
      */
diff --git a/gnss/aidl/android/hardware/gnss/gnss_assistance/GpsSatelliteEphemeris.aidl b/gnss/aidl/android/hardware/gnss/gnss_assistance/GpsSatelliteEphemeris.aidl
index b24c593..ab38030 100644
--- a/gnss/aidl/android/hardware/gnss/gnss_assistance/GpsSatelliteEphemeris.aidl
+++ b/gnss/aidl/android/hardware/gnss/gnss_assistance/GpsSatelliteEphemeris.aidl
@@ -18,7 +18,6 @@
 
 import android.hardware.gnss.gnss_assistance.KeplerianOrbitModel;
 import android.hardware.gnss.gnss_assistance.SatelliteEphemerisTime;
-import android.hardware.gnss.gnss_assistance.TimeOfClock;
 
 /**
  * Contains ephemeris parameters specific to GPS satellites.
@@ -47,8 +46,13 @@
     /** Contains the set of parameters needed for GPS satellite clock correction. */
     @VintfStability
     parcelable GpsSatelliteClockModel {
-        /** Time of the clock. */
-        TimeOfClock timeOfClock;
+        /**
+         * Time of the clock in seconds since GPS epoch.
+         *
+         * Represents the 'Epoch' field within the 'SV/EPOCH/SV CLK' record of GNSS
+         * navigation message file in RINEX 3.05 Table A6.
+         */
+        long timeOfClockSeconds;
 
         /** SV clock bias in seconds. */
         double af0;
diff --git a/gnss/aidl/android/hardware/gnss/gnss_assistance/QzssSatelliteEphemeris.aidl b/gnss/aidl/android/hardware/gnss/gnss_assistance/QzssSatelliteEphemeris.aidl
index 7efa4d9..a5a22d0 100644
--- a/gnss/aidl/android/hardware/gnss/gnss_assistance/QzssSatelliteEphemeris.aidl
+++ b/gnss/aidl/android/hardware/gnss/gnss_assistance/QzssSatelliteEphemeris.aidl
@@ -21,7 +21,6 @@
 import android.hardware.gnss.gnss_assistance.GpsSatelliteEphemeris.GpsSatelliteHealth;
 import android.hardware.gnss.gnss_assistance.KeplerianOrbitModel;
 import android.hardware.gnss.gnss_assistance.SatelliteEphemerisTime;
-import android.hardware.gnss.gnss_assistance.TimeOfClock;
 
 /**
  * Contains ephemeris parameters specific to QZSS satellites.
diff --git a/graphics/common/aidl/aidl_api/android.hardware.graphics.common/current/android/hardware/graphics/common/Dataspace.aidl b/graphics/common/aidl/aidl_api/android.hardware.graphics.common/current/android/hardware/graphics/common/Dataspace.aidl
index 6ed5bb2..7264a21 100644
--- a/graphics/common/aidl/aidl_api/android.hardware.graphics.common/current/android/hardware/graphics/common/Dataspace.aidl
+++ b/graphics/common/aidl/aidl_api/android.hardware.graphics.common/current/android/hardware/graphics/common/Dataspace.aidl
@@ -97,5 +97,6 @@
   JPEG_APP_SEGMENTS = 0x1003,
   HEIF = 0x1004,
   JPEG_R = 0x1005,
+  HEIF_ULTRAHDR = 0x1006,
   BT709_FULL_RANGE = (((1 << 16) | (3 << 22)) | (1 << 27)) /* 146866176 */,
 }
diff --git a/graphics/common/aidl/android/hardware/graphics/common/Dataspace.aidl b/graphics/common/aidl/android/hardware/graphics/common/Dataspace.aidl
index 79737eb..8705aef 100644
--- a/graphics/common/aidl/android/hardware/graphics/common/Dataspace.aidl
+++ b/graphics/common/aidl/android/hardware/graphics/common/Dataspace.aidl
@@ -702,19 +702,32 @@
     /**
      * Ultra HDR
      *
-     * JPEG image with embedded 10-bit recovery map following the Ultra HDR specification.
+     * JPEG image with embedded HDR gain map following the Ultra HDR specification and
+     * ISO/CD 21496‐1
      *
      * This value must always remain aligned with the public ImageFormat Jpeg/R definition and is
      * valid with formats:
      *    HAL_PIXEL_FORMAT_BLOB: JPEG image encoded by Ultra HDR encoder according to
      *    the <a href="https://developer.android.com/guide/topics/media/hdr-image-format">
      *    Ultra HDR Image format specification</a>.
-     * The image contains a standard SDR JPEG and a recovery map. Ultra HDR decoders can use the
-     * map to recover the 10-bit input image.
+     * The image contains a standard SDR JPEG and a gain map. Ultra HDR decoders can use the
+     * map to boost the brightness of the rendered image.
      */
     JPEG_R = 0x1005,
 
     /**
+     * ISO/IEC 23008-12:2024
+     *
+     * High Efficiency Image File Format (HEIF) with embedded HDR gain map
+     *
+     * This value is valid with formats:
+     *    HAL_PIXEL_FORMAT_BLOB: A HEIC image encoded by HEIC or HEVC encoder
+     * according to ISO/IEC 23008-12:2024 that includes an HDR gain map and
+     * metadata according to ISO/CD 21496‐1.
+     */
+    HEIF_ULTRAHDR = 0x1006,
+
+    /**
      * ITU-R Recommendation 709 (BT.709)
      *
      * High-definition television
diff --git a/security/see/hwcrypto/aidl/aidl_api/android.hardware.security.see.hwcrypto/current/android/hardware/security/see/hwcrypto/IHwCryptoKey.aidl b/security/see/hwcrypto/aidl/aidl_api/android.hardware.security.see.hwcrypto/current/android/hardware/security/see/hwcrypto/IHwCryptoKey.aidl
index 83b8496..b31a06c 100644
--- a/security/see/hwcrypto/aidl/aidl_api/android.hardware.security.see.hwcrypto/current/android/hardware/security/see/hwcrypto/IHwCryptoKey.aidl
+++ b/security/see/hwcrypto/aidl/aidl_api/android.hardware.security.see.hwcrypto/current/android/hardware/security/see/hwcrypto/IHwCryptoKey.aidl
@@ -44,7 +44,6 @@
   android.hardware.security.see.hwcrypto.IOpaqueKey getKeyslotData(android.hardware.security.see.hwcrypto.IHwCryptoKey.KeySlot slotId);
   enum DeviceKeyId {
     DEVICE_BOUND_KEY,
-    BATCH_KEY,
   }
   enum KeySlot {
     KEYMINT_SHARED_HMAC_KEY,
diff --git a/security/see/hwcrypto/aidl/android/hardware/security/see/hwcrypto/IHwCryptoKey.aidl b/security/see/hwcrypto/aidl/android/hardware/security/see/hwcrypto/IHwCryptoKey.aidl
index 44ec32f..97a4c37 100644
--- a/security/see/hwcrypto/aidl/android/hardware/security/see/hwcrypto/IHwCryptoKey.aidl
+++ b/security/see/hwcrypto/aidl/android/hardware/security/see/hwcrypto/IHwCryptoKey.aidl
@@ -35,10 +35,6 @@
          * This is a key unique to the device.
          */
         DEVICE_BOUND_KEY,
-        /*
-         * This is a shared by a set of devices.
-         */
-        BATCH_KEY,
     }
 
     /*
diff --git a/tv/input/aidl/Android.bp b/tv/input/aidl/Android.bp
index afc811a..8d36ab1 100644
--- a/tv/input/aidl/Android.bp
+++ b/tv/input/aidl/Android.bp
@@ -45,5 +45,5 @@
         },
 
     ],
-    frozen: true,
+    frozen: false,
 }
diff --git a/tv/input/aidl/aidl_api/android.hardware.tv.input/current/android/hardware/tv/input/ITvInput.aidl b/tv/input/aidl/aidl_api/android.hardware.tv.input/current/android/hardware/tv/input/ITvInput.aidl
index 84fe2fb..2ff2719 100644
--- a/tv/input/aidl/aidl_api/android.hardware.tv.input/current/android/hardware/tv/input/ITvInput.aidl
+++ b/tv/input/aidl/aidl_api/android.hardware.tv.input/current/android/hardware/tv/input/ITvInput.aidl
@@ -40,6 +40,8 @@
   void setCallback(in android.hardware.tv.input.ITvInputCallback callback);
   void setTvMessageEnabled(int deviceId, int streamId, in android.hardware.tv.input.TvMessageEventType type, boolean enabled);
   void getTvMessageQueueDesc(out android.hardware.common.fmq.MQDescriptor<byte,android.hardware.common.fmq.SynchronizedReadWrite> queue, int deviceId, int streamId);
+  void setPictureProfileId(in int deviceId, in int streamId, in long profileId);
+  void setSoundProfileId(in int deviceId, in int streamId, in long profileId);
   const int STATUS_UNKNOWN = 1;
   const int STATUS_NO_RESOURCE = 2;
   const int STATUS_INVALID_ARGUMENTS = 3;
diff --git a/tv/input/aidl/android/hardware/tv/input/ITvInput.aidl b/tv/input/aidl/android/hardware/tv/input/ITvInput.aidl
index c63e0ac..e57edf9 100644
--- a/tv/input/aidl/android/hardware/tv/input/ITvInput.aidl
+++ b/tv/input/aidl/android/hardware/tv/input/ITvInput.aidl
@@ -109,4 +109,28 @@
      */
     void getTvMessageQueueDesc(
             out MQDescriptor<byte, SynchronizedReadWrite> queue, int deviceId, int streamId);
+
+    /**
+     * Set the picture profile ID for a specific stream in a device.
+     *
+     * @param deviceId Device ID for the stream to use the profile.
+     * @param streamId Stream ID for the stream to  use the profile. Must be one of the
+     *         stream IDs returned from getStreamConfigurations().
+     * @param profileId Picture profile ID for the stream. The ID is assigned by the framework,
+     *         and can be set by applications or TV input framework. See
+     *         android.media.quality.PictureQuality for more details.
+     */
+    void setPictureProfileId(in int deviceId, in int streamId, in long profileId);
+
+    /**
+     * Set the sound profile ID for a specific stream in a device.
+     *
+     * @param deviceId Device ID for the stream to use the profile.
+     * @param streamId Stream ID for the stream to  use the profile. Must be one of the
+     *         stream IDs returned from getStreamConfigurations().
+     * @param profileId Sound profile ID for the stream. The ID is assigned by the framework,
+     *         and can be set by applications or TV input framework. See
+     *         android.media.quality.SoundQuality for more details.
+     */
+    void setSoundProfileId(in int deviceId, in int streamId, in long profileId);
 }
diff --git a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl b/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/ColorTemperature.aidl
similarity index 88%
copy from gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl
copy to tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/ColorTemperature.aidl
index ae709d4..2d26aca 100644
--- a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl
+++ b/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/ColorTemperature.aidl
@@ -31,14 +31,17 @@
 // with such a backward incompatible change, it has a high risk of breaking
 // later when a module using the interface is updated, e.g., Mainline modules.
 
-package android.hardware.gnss.gnss_assistance;
-/* @hide */
+package android.hardware.tv.mediaquality;
 @VintfStability
-parcelable TimeOfClock {
-  int year;
-  int month;
-  int day;
-  int hour;
-  int minute;
-  int seconds;
+enum ColorTemperature {
+  USER,
+  COOL,
+  STANDARD,
+  WARM,
+  USER_HDR10PLUS,
+  COOL_HDR10PLUS,
+  STANDARD_HDR10PLUS,
+  WARM_HDR10PLUS,
+  FMMSDR,
+  FMMHDR,
 }
diff --git a/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/IMediaQuality.aidl b/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/IMediaQuality.aidl
index 7215464..006abee 100644
--- a/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/IMediaQuality.aidl
+++ b/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/IMediaQuality.aidl
@@ -50,7 +50,11 @@
   android.hardware.tv.mediaquality.IPictureProfileChangedListener getPictureProfileListener();
   void setPictureProfileAdjustmentListener(android.hardware.tv.mediaquality.IPictureProfileAdjustmentListener listener);
   android.hardware.tv.mediaquality.PictureParameters getPictureParameters(long pictureProfileId);
+  void sendDefaultPictureParameters(in android.hardware.tv.mediaquality.PictureParameters pictureParameters);
   android.hardware.tv.mediaquality.ISoundProfileChangedListener getSoundProfileListener();
   void setSoundProfileAdjustmentListener(android.hardware.tv.mediaquality.ISoundProfileAdjustmentListener listener);
   android.hardware.tv.mediaquality.SoundParameters getSoundParameters(long soundProfileId);
+  void sendDefaultSoundParameters(in android.hardware.tv.mediaquality.SoundParameters soundParameters);
+  void getParamCaps(in android.hardware.tv.mediaquality.ParameterName[] paramNames, out android.hardware.tv.mediaquality.ParamCapability[] caps);
+  void getVendorParamCaps(in android.hardware.tv.mediaquality.VendorParameterIdentifier[] names, out android.hardware.tv.mediaquality.VendorParamCapability[] caps);
 }
diff --git a/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/IPictureProfileAdjustmentListener.aidl b/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/IPictureProfileAdjustmentListener.aidl
index ae3d391..6339377 100644
--- a/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/IPictureProfileAdjustmentListener.aidl
+++ b/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/IPictureProfileAdjustmentListener.aidl
@@ -35,4 +35,6 @@
 @VintfStability
 interface IPictureProfileAdjustmentListener {
   oneway void onPictureProfileAdjusted(in android.hardware.tv.mediaquality.PictureProfile pictureProfile);
+  oneway void onParamCapabilityChanged(long pictureProfileId, in android.hardware.tv.mediaquality.ParamCapability[] caps);
+  oneway void onVendorParamCapabilityChanged(long pictureProfileId, in android.hardware.tv.mediaquality.VendorParamCapability[] caps);
 }
diff --git a/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/ISoundProfileAdjustmentListener.aidl b/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/ISoundProfileAdjustmentListener.aidl
index ceebb1b..1006349 100644
--- a/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/ISoundProfileAdjustmentListener.aidl
+++ b/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/ISoundProfileAdjustmentListener.aidl
@@ -35,4 +35,6 @@
 @VintfStability
 interface ISoundProfileAdjustmentListener {
   oneway void onSoundProfileAdjusted(in android.hardware.tv.mediaquality.SoundProfile soundProfile);
+  oneway void onParamCapabilityChanged(long soundProfileId, in android.hardware.tv.mediaquality.ParamCapability[] caps);
+  oneway void onVendorParamCapabilityChanged(long soundProfileId, in android.hardware.tv.mediaquality.VendorParamCapability[] caps);
 }
diff --git a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl b/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/NumberRange.aidl
similarity index 85%
copy from gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl
copy to tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/NumberRange.aidl
index ae709d4..9fc9d0d 100644
--- a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl
+++ b/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/NumberRange.aidl
@@ -31,14 +31,13 @@
 // with such a backward incompatible change, it has a high risk of breaking
 // later when a module using the interface is updated, e.g., Mainline modules.
 
-package android.hardware.gnss.gnss_assistance;
-/* @hide */
+package android.hardware.tv.mediaquality;
 @VintfStability
-parcelable TimeOfClock {
-  int year;
-  int month;
-  int day;
-  int hour;
-  int minute;
-  int seconds;
+union NumberRange {
+  @nullable int[2] intMinMax;
+  @nullable long[2] longMinMax;
+  @nullable double[2] doubleMinMax;
+  @nullable int[] intValuesSupported;
+  @nullable long[] longValuesSupported;
+  @nullable double[] doubleValuesSupported;
 }
diff --git a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl b/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/ParamCapability.aidl
similarity index 84%
copy from gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl
copy to tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/ParamCapability.aidl
index ae709d4..c60f1d1 100644
--- a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl
+++ b/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/ParamCapability.aidl
@@ -31,14 +31,11 @@
 // with such a backward incompatible change, it has a high risk of breaking
 // later when a module using the interface is updated, e.g., Mainline modules.
 
-package android.hardware.gnss.gnss_assistance;
-/* @hide */
+package android.hardware.tv.mediaquality;
 @VintfStability
-parcelable TimeOfClock {
-  int year;
-  int month;
-  int day;
-  int hour;
-  int minute;
-  int seconds;
+parcelable ParamCapability {
+  android.hardware.tv.mediaquality.ParameterName name;
+  boolean isSupported;
+  @nullable android.hardware.tv.mediaquality.ParameterDefaultValue defaultValue;
+  @nullable android.hardware.tv.mediaquality.ParameterRange range;
 }
diff --git a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl b/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/ParameterDefaultValue.aidl
similarity index 90%
rename from gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl
rename to tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/ParameterDefaultValue.aidl
index ae709d4..14e5ff4 100644
--- a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl
+++ b/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/ParameterDefaultValue.aidl
@@ -31,14 +31,11 @@
 // with such a backward incompatible change, it has a high risk of breaking
 // later when a module using the interface is updated, e.g., Mainline modules.
 
-package android.hardware.gnss.gnss_assistance;
-/* @hide */
+package android.hardware.tv.mediaquality;
 @VintfStability
-parcelable TimeOfClock {
-  int year;
-  int month;
-  int day;
-  int hour;
-  int minute;
-  int seconds;
+union ParameterDefaultValue {
+  int intDefault;
+  long longDefault;
+  double doubleDefault;
+  String stringDefault;
 }
diff --git a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl b/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/ParameterName.aidl
similarity index 64%
copy from gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl
copy to tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/ParameterName.aidl
index ae709d4..711e270 100644
--- a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl
+++ b/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/ParameterName.aidl
@@ -31,14 +31,50 @@
 // with such a backward incompatible change, it has a high risk of breaking
 // later when a module using the interface is updated, e.g., Mainline modules.
 
-package android.hardware.gnss.gnss_assistance;
-/* @hide */
+package android.hardware.tv.mediaquality;
 @VintfStability
-parcelable TimeOfClock {
-  int year;
-  int month;
-  int day;
-  int hour;
-  int minute;
-  int seconds;
+enum ParameterName {
+  BRIGHTNESS,
+  CONTRAST,
+  SHARPNESS,
+  SATURATION,
+  HUE,
+  COLOR_TUNER_BRIGHTNESS,
+  COLOR_TUNER_SATURATION,
+  COLOR_TUNER_HUE,
+  COLOR_TUNER_RED_OFFSET,
+  COLOR_TUNER_GREEN_OFFSET,
+  COLOR_TUNER_BLUE_OFFSET,
+  COLOR_TUNER_RED_GAIN,
+  COLOR_TUNER_GREEN_GAIN,
+  COLOR_TUNER_BLUE_GAIN,
+  NOISE_REDUCTION,
+  MPEG_NOISE_REDUCTION,
+  FLASH_TONE,
+  DE_CONTOUR,
+  DYNAMIC_LUMA_CONTROL,
+  FILM_MODE,
+  BLACK_STRETCH,
+  BLUE_STRETCH,
+  COLOR_TUNE,
+  COLOR_TEMPERATURE,
+  GLOBE_DIMMING,
+  AUTO_PICTUREQUALITY_ENABLED,
+  AUTO_SUPER_RESOLUTION_ENABLED,
+  BALANCE,
+  BASS,
+  TREBLE,
+  SURROUND_SOUND_ENABLED,
+  EQUALIZER_DETAIL,
+  SPEAKERS_ENABLED,
+  SPEAKERS_DELAY_MS,
+  ENHANCED_AUDIO_RETURN_CHANNEL_ENABLED,
+  AUTO_VOLUME_CONTROL,
+  DOWNMIX_MODE,
+  DTS_DRC,
+  DOLBY_AUDIO_PROCESSING,
+  DOLBY_DIALOGUE_ENHANCER,
+  DTS_VIRTUAL_X,
+  DIGITAL_OUTPUT,
+  DIGITAL_OUTPUT_DELAY_MS,
 }
diff --git a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl b/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/ParameterRange.aidl
similarity index 90%
copy from gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl
copy to tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/ParameterRange.aidl
index ae709d4..66bc405 100644
--- a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl
+++ b/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/ParameterRange.aidl
@@ -31,14 +31,9 @@
 // with such a backward incompatible change, it has a high risk of breaking
 // later when a module using the interface is updated, e.g., Mainline modules.
 
-package android.hardware.gnss.gnss_assistance;
-/* @hide */
+package android.hardware.tv.mediaquality;
 @VintfStability
-parcelable TimeOfClock {
-  int year;
-  int month;
-  int day;
-  int hour;
-  int minute;
-  int seconds;
+parcelable ParameterRange {
+  android.hardware.tv.mediaquality.NumberRange numRange;
+  ParcelableHolder vendorDefinedValues;
 }
diff --git a/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/PictureParameter.aidl b/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/PictureParameter.aidl
index 134997b..ae396ad 100644
--- a/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/PictureParameter.aidl
+++ b/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/PictureParameter.aidl
@@ -39,4 +39,25 @@
   int sharpness;
   int saturation;
   int hue;
+  int colorTunerBrightness;
+  int colorTunerSaturation;
+  int colorTunerHue;
+  int colorTunerRedOffset;
+  int colorTunerGreenOffset;
+  int colorTunerBlueOffset;
+  int colorTunerRedGain;
+  int colorTunerGreenGain;
+  int colorTunerBlueGain;
+  android.hardware.tv.mediaquality.QualityLevel noiseReduction;
+  android.hardware.tv.mediaquality.QualityLevel mpegNoiseReduction;
+  android.hardware.tv.mediaquality.QualityLevel fleshTone;
+  android.hardware.tv.mediaquality.QualityLevel deContour;
+  android.hardware.tv.mediaquality.QualityLevel dynamicLumaControl;
+  boolean filmMode;
+  boolean blueStretch;
+  boolean colorTune;
+  android.hardware.tv.mediaquality.ColorTemperature colorTemperature;
+  boolean globeDimming;
+  boolean autoPictureQualityEnabled;
+  boolean autoSuperResolutionEnabled;
 }
diff --git a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl b/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/VendorParamCapability.aidl
similarity index 85%
copy from gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl
copy to tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/VendorParamCapability.aidl
index ae709d4..9cf29a5 100644
--- a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl
+++ b/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/VendorParamCapability.aidl
@@ -31,14 +31,11 @@
 // with such a backward incompatible change, it has a high risk of breaking
 // later when a module using the interface is updated, e.g., Mainline modules.
 
-package android.hardware.gnss.gnss_assistance;
-/* @hide */
+package android.hardware.tv.mediaquality;
 @VintfStability
-parcelable TimeOfClock {
-  int year;
-  int month;
-  int day;
-  int hour;
-  int minute;
-  int seconds;
+parcelable VendorParamCapability {
+  ParcelableHolder name;
+  boolean isSupported;
+  @nullable android.hardware.tv.mediaquality.ParameterDefaultValue defaultValue;
+  @nullable android.hardware.tv.mediaquality.ParameterRange range;
 }
diff --git a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl b/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/VendorParameterIdentifier.aidl
similarity index 90%
copy from gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl
copy to tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/VendorParameterIdentifier.aidl
index ae709d4..016c22d 100644
--- a/gnss/aidl/aidl_api/android.hardware.gnss/current/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl
+++ b/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/VendorParameterIdentifier.aidl
@@ -31,14 +31,8 @@
 // with such a backward incompatible change, it has a high risk of breaking
 // later when a module using the interface is updated, e.g., Mainline modules.
 
-package android.hardware.gnss.gnss_assistance;
-/* @hide */
+package android.hardware.tv.mediaquality;
 @VintfStability
-parcelable TimeOfClock {
-  int year;
-  int month;
-  int day;
-  int hour;
-  int minute;
-  int seconds;
+parcelable VendorParameterIdentifier {
+  ParcelableHolder identifier;
 }
diff --git a/tv/mediaquality/aidl/android/hardware/tv/mediaquality/ColorTemperature.aidl b/tv/mediaquality/aidl/android/hardware/tv/mediaquality/ColorTemperature.aidl
new file mode 100644
index 0000000..4d4b01c
--- /dev/null
+++ b/tv/mediaquality/aidl/android/hardware/tv/mediaquality/ColorTemperature.aidl
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2024 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.tv.mediaquality;
+
+@VintfStability
+enum ColorTemperature {
+    USER,
+    COOL,
+    STANDARD,
+    WARM,
+    USER_HDR10PLUS,
+    COOL_HDR10PLUS,
+    STANDARD_HDR10PLUS,
+    WARM_HDR10PLUS,
+    FMMSDR,
+    FMMHDR,
+}
diff --git a/tv/mediaquality/aidl/android/hardware/tv/mediaquality/IMediaQuality.aidl b/tv/mediaquality/aidl/android/hardware/tv/mediaquality/IMediaQuality.aidl
index f15d3c6..6a992a1 100644
--- a/tv/mediaquality/aidl/android/hardware/tv/mediaquality/IMediaQuality.aidl
+++ b/tv/mediaquality/aidl/android/hardware/tv/mediaquality/IMediaQuality.aidl
@@ -22,8 +22,12 @@
 import android.hardware.tv.mediaquality.IPictureProfileChangedListener;
 import android.hardware.tv.mediaquality.ISoundProfileAdjustmentListener;
 import android.hardware.tv.mediaquality.ISoundProfileChangedListener;
+import android.hardware.tv.mediaquality.ParamCapability;
+import android.hardware.tv.mediaquality.ParameterName;
 import android.hardware.tv.mediaquality.PictureParameters;
 import android.hardware.tv.mediaquality.SoundParameters;
+import android.hardware.tv.mediaquality.VendorParamCapability;
+import android.hardware.tv.mediaquality.VendorParameterIdentifier;
 
 /**
  * Interface for the media quality service
@@ -158,6 +162,15 @@
     PictureParameters getPictureParameters(long pictureProfileId);
 
     /**
+     * Send the default picture parameters to the vendor code or HAL to apply the picture
+     * parameters.
+     *
+     * @param pictureParameters PictureParameters with pre-defined parameters and vendor defined
+     * parameters.
+     */
+    void sendDefaultPictureParameters(in PictureParameters pictureParameters);
+
+    /**
      * Get sound profile changed listener.
      *
      * @return the ISoundProfileChangedListener.
@@ -178,4 +191,22 @@
      * @return SoundParameters with all the pre-defined parameters and vendor defined parameters.
      */
     SoundParameters getSoundParameters(long soundProfileId);
+
+    /**
+     * Send the default sound parameters to the vendor code or HAL to apply the sound parameters.
+     *
+     * @param soundParameters SoundParameters with pre-defined parameters and vendor defined
+     * parameters.
+     */
+    void sendDefaultSoundParameters(in SoundParameters soundParameters);
+
+    /**
+     * Gets capability information of the given parameters.
+     */
+    void getParamCaps(in ParameterName[] paramNames, out ParamCapability[] caps);
+
+    /**
+     * Gets vendor capability information of the given parameters.
+     */
+    void getVendorParamCaps(in VendorParameterIdentifier[] names, out VendorParamCapability[] caps);
 }
diff --git a/tv/mediaquality/aidl/android/hardware/tv/mediaquality/IPictureProfileAdjustmentListener.aidl b/tv/mediaquality/aidl/android/hardware/tv/mediaquality/IPictureProfileAdjustmentListener.aidl
index 52759f7..806d90d 100644
--- a/tv/mediaquality/aidl/android/hardware/tv/mediaquality/IPictureProfileAdjustmentListener.aidl
+++ b/tv/mediaquality/aidl/android/hardware/tv/mediaquality/IPictureProfileAdjustmentListener.aidl
@@ -16,7 +16,9 @@
 
 package android.hardware.tv.mediaquality;
 
+import android.hardware.tv.mediaquality.ParamCapability;
 import android.hardware.tv.mediaquality.PictureProfile;
+import android.hardware.tv.mediaquality.VendorParamCapability;
 
 @VintfStability
 oneway interface IPictureProfileAdjustmentListener {
@@ -26,4 +28,22 @@
      * @param pictureProfile Picture profile.
      */
     void onPictureProfileAdjusted(in PictureProfile pictureProfile);
+
+    /**
+     * Notifies Media Quality Manager when parameter capabilities changed.
+     *
+     * @param pictureProfileId the ID of the profile used by the media content. -1 if there
+     *                         is no associated profile.
+     * @param caps the updated capabilities.
+     */
+    void onParamCapabilityChanged(long pictureProfileId, in ParamCapability[] caps);
+
+    /**
+     * Notifies Media Quality Manager when venfor parameter capabilities changed.
+     *
+     * @param pictureProfileId the ID of the profile used by the media content. -1 if there
+     *                         is no associated profile.
+     * @param caps the updated vendor capabilities.
+     */
+    void onVendorParamCapabilityChanged(long pictureProfileId, in VendorParamCapability[] caps);
 }
diff --git a/tv/mediaquality/aidl/android/hardware/tv/mediaquality/ISoundProfileAdjustmentListener.aidl b/tv/mediaquality/aidl/android/hardware/tv/mediaquality/ISoundProfileAdjustmentListener.aidl
index fd41352..5ee9d86 100644
--- a/tv/mediaquality/aidl/android/hardware/tv/mediaquality/ISoundProfileAdjustmentListener.aidl
+++ b/tv/mediaquality/aidl/android/hardware/tv/mediaquality/ISoundProfileAdjustmentListener.aidl
@@ -16,7 +16,9 @@
 
 package android.hardware.tv.mediaquality;
 
+import android.hardware.tv.mediaquality.ParamCapability;
 import android.hardware.tv.mediaquality.SoundProfile;
+import android.hardware.tv.mediaquality.VendorParamCapability;
 
 @VintfStability
 oneway interface ISoundProfileAdjustmentListener {
@@ -26,4 +28,22 @@
      * @param soundProfile Sound profile.
      */
     void onSoundProfileAdjusted(in SoundProfile soundProfile);
+
+    /**
+     * Notifies Media Quality Manager when parameter capabilities changed.
+     *
+     * @param soundProfileId the ID of the profile used by the media content. -1 if there
+     *                         is no associated profile.
+     * @param caps the updated capabilities.
+     */
+    void onParamCapabilityChanged(long soundProfileId, in ParamCapability[] caps);
+
+    /**
+     * Notifies Media Quality Manager when venfor parameter capabilities changed.
+     *
+     * @param soundProfileId the ID of the profile used by the media content. -1 if there
+     *                         is no associated profile.
+     * @param caps the updated vendor capabilities.
+     */
+    void onVendorParamCapabilityChanged(long soundProfileId, in VendorParamCapability[] caps);
 }
diff --git a/tv/mediaquality/aidl/android/hardware/tv/mediaquality/NumberRange.aidl b/tv/mediaquality/aidl/android/hardware/tv/mediaquality/NumberRange.aidl
new file mode 100644
index 0000000..94a041c
--- /dev/null
+++ b/tv/mediaquality/aidl/android/hardware/tv/mediaquality/NumberRange.aidl
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2024 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.tv.mediaquality;
+
+/** Parameter supported number range **/
+@VintfStability
+union NumberRange {
+    /** Min value and max value of an int parameter. Inclusive. */
+    @nullable int[2] intMinMax;
+    /** Min value and max value of a long parameter. Inclusive. */
+    @nullable long[2] longMinMax;
+    /** Min value and max value of a double parameter. Inclusive. */
+    @nullable double[2] doubleMinMax;
+
+    /** An array of supported int values. */
+    @nullable int[] intValuesSupported;
+    /** An array of supported long values. */
+    @nullable long[] longValuesSupported;
+    /** An array of supported double values. */
+    @nullable double[] doubleValuesSupported;
+}
diff --git a/tv/mediaquality/aidl/android/hardware/tv/mediaquality/ParamCapability.aidl b/tv/mediaquality/aidl/android/hardware/tv/mediaquality/ParamCapability.aidl
new file mode 100644
index 0000000..933a1a3
--- /dev/null
+++ b/tv/mediaquality/aidl/android/hardware/tv/mediaquality/ParamCapability.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2024 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.tv.mediaquality;
+
+import android.hardware.tv.mediaquality.ParameterDefaultValue;
+import android.hardware.tv.mediaquality.ParameterName;
+import android.hardware.tv.mediaquality.ParameterRange;
+/**
+ * Capability of parameters.
+ */
+@VintfStability
+parcelable ParamCapability {
+    /** Name of the parameter **/
+    ParameterName name;
+
+    /** true if this parameter is supported **/
+    boolean isSupported;
+
+    /**
+     * Default value of this parameter. null if there is no default value.
+     */
+    @nullable ParameterDefaultValue defaultValue;
+
+    /**
+     * The supported range of this parameter. null if there is no specific range.
+     */
+    @nullable ParameterRange range;
+}
diff --git a/tv/mediaquality/aidl/android/hardware/tv/mediaquality/ParameterDefaultValue.aidl b/tv/mediaquality/aidl/android/hardware/tv/mediaquality/ParameterDefaultValue.aidl
new file mode 100644
index 0000000..3827134
--- /dev/null
+++ b/tv/mediaquality/aidl/android/hardware/tv/mediaquality/ParameterDefaultValue.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2024 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.tv.mediaquality;
+
+/** Parameter default value **/
+@VintfStability
+union ParameterDefaultValue {
+    int intDefault;
+    long longDefault;
+    double doubleDefault;
+    String stringDefault;
+}
diff --git a/tv/mediaquality/aidl/android/hardware/tv/mediaquality/ParameterName.aidl b/tv/mediaquality/aidl/android/hardware/tv/mediaquality/ParameterName.aidl
new file mode 100644
index 0000000..0a3c97b
--- /dev/null
+++ b/tv/mediaquality/aidl/android/hardware/tv/mediaquality/ParameterName.aidl
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2024 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.tv.mediaquality;
+
+/**
+ * Parameter names.
+ * <p>Details of the parameters can be found at
+ * android.hardware.tv.mediaquality.PictureParameter and
+ * android.hardware.tv.mediaquality.SoundParameter.
+ */
+@VintfStability
+enum ParameterName {
+    BRIGHTNESS,
+    CONTRAST,
+    SHARPNESS,
+    SATURATION,
+    HUE,
+    COLOR_TUNER_BRIGHTNESS,
+    COLOR_TUNER_SATURATION,
+    COLOR_TUNER_HUE,
+    COLOR_TUNER_RED_OFFSET,
+    COLOR_TUNER_GREEN_OFFSET,
+    COLOR_TUNER_BLUE_OFFSET,
+    COLOR_TUNER_RED_GAIN,
+    COLOR_TUNER_GREEN_GAIN,
+    COLOR_TUNER_BLUE_GAIN,
+    NOISE_REDUCTION,
+    MPEG_NOISE_REDUCTION,
+    FLASH_TONE,
+    DE_CONTOUR,
+    DYNAMIC_LUMA_CONTROL,
+    FILM_MODE,
+    BLACK_STRETCH,
+    BLUE_STRETCH,
+    COLOR_TUNE,
+    COLOR_TEMPERATURE,
+    GLOBE_DIMMING,
+    AUTO_PICTUREQUALITY_ENABLED,
+    AUTO_SUPER_RESOLUTION_ENABLED,
+
+    BALANCE,
+    BASS,
+    TREBLE,
+    SURROUND_SOUND_ENABLED,
+    EQUALIZER_DETAIL,
+    SPEAKERS_ENABLED,
+    SPEAKERS_DELAY_MS,
+    ENHANCED_AUDIO_RETURN_CHANNEL_ENABLED,
+    AUTO_VOLUME_CONTROL,
+    DOWNMIX_MODE,
+    DTS_DRC,
+    DOLBY_AUDIO_PROCESSING,
+    DOLBY_DIALOGUE_ENHANCER,
+    DTS_VIRTUAL_X,
+    DIGITAL_OUTPUT,
+    DIGITAL_OUTPUT_DELAY_MS,
+}
diff --git a/gnss/aidl/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl b/tv/mediaquality/aidl/android/hardware/tv/mediaquality/ParameterRange.aidl
similarity index 60%
copy from gnss/aidl/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl
copy to tv/mediaquality/aidl/android/hardware/tv/mediaquality/ParameterRange.aidl
index 7b9cc9f..836b5b8 100644
--- a/gnss/aidl/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl
+++ b/tv/mediaquality/aidl/android/hardware/tv/mediaquality/ParameterRange.aidl
@@ -14,30 +14,16 @@
  * limitations under the License.
  */
 
-package android.hardware.gnss.gnss_assistance;
+package android.hardware.tv.mediaquality;
 
-/*
- * Contains the reference time of the GNSS clock.
- *
- * @hide
- */
+import android.hardware.tv.mediaquality.NumberRange;
+
+/** Parameter supported range **/
 @VintfStability
-parcelable TimeOfClock {
-    /** Year of the clock. */
-    int year;
+parcelable ParameterRange {
+    /** Supported number range */
+    NumberRange numRange;
 
-    /** Month of the clock. */
-    int month;
-
-    /** Day of the clock. */
-    int day;
-
-    /** Hour of the clock. */
-    int hour;
-
-    /** Minute of the clock. */
-    int minute;
-
-    /** Second of the clock. */
-    int seconds;
+    /** Supported vendor-defined values **/
+    ParcelableHolder vendorDefinedValues;
 }
diff --git a/tv/mediaquality/aidl/android/hardware/tv/mediaquality/PictureParameter.aidl b/tv/mediaquality/aidl/android/hardware/tv/mediaquality/PictureParameter.aidl
index 342b593..922368d 100644
--- a/tv/mediaquality/aidl/android/hardware/tv/mediaquality/PictureParameter.aidl
+++ b/tv/mediaquality/aidl/android/hardware/tv/mediaquality/PictureParameter.aidl
@@ -16,6 +16,8 @@
 
 package android.hardware.tv.mediaquality;
 
+import android.hardware.tv.mediaquality.ColorTemperature;
+import android.hardware.tv.mediaquality.QualityLevel;
 /**
  * The parameters for Picture Profile.
  */
@@ -62,4 +64,127 @@
      * The default/unmodified value for hue is 0.
      */
     int hue;
+
+    /*
+     * Adjust brightness in advance color engine. Similar to a "brightness" control on a TV
+     * but acts at a lower level.
+     *
+     * The range is from 0 to 100, where 0 represents the minimum brightness and 100 represents
+     * the maximum brightness. The default/unmodified value is 50.
+     */
+    int colorTunerBrightness;
+
+    /*
+     * Adjust saturation in advance color engine. Similar to a "saturation" control on a TV
+     * but acts at a lower level.
+     *
+     * The range is from 0 to 100, where 0 being completely desaturated/grayscale and 100 being
+     * the most saturated. The default/unmodified value is 50.
+     */
+    int colorTunerSaturation;
+
+    /*
+     * Adjust hue in advance color engine. Similar to a "hue" control on a TV but acts at a lower
+     * level.
+     *
+     * The range is from -50 to 50, where -50 represents cooler setting for a specific color and 50
+     * represents warmer setting for a specific color. The default/unmodified value is 0.
+     */
+    int colorTunerHue;
+
+    /*
+     * Advance setting for red offset. Adjust the black level of red color channels, it control
+     * the minimum intensity of each color, affecting the shadows and dark areas of the image.
+     *
+     * The range is from 0 to 100, where 0 makes shadows darker and 100 makes shadows brighter.
+     * The default/unmodified value is 50.
+     */
+    int colorTunerRedOffset;
+
+    /*
+     * Advance setting for green offset. Adjust the black level of green color channels, it control
+     * the minimum intensity of each color, affecting the shadows and dark areas of the image.
+     *
+     * The range is from 0 to 100, where 0 makes shadows darker and 100 makes shadows brighter.
+     * The default/unmodified value is 50.
+     */
+    int colorTunerGreenOffset;
+
+    /*
+     * Advance setting for blue offset. Adjust the black level of blue color channels, it control
+     * the minimum intensity of each color, affecting the shadows and dark areas of the image.
+     *
+     * The range is from 0 to 100, where 0 makes shadows darker and 100 makes shadows brighter.
+     * The default/unmodified value is 50.
+     */
+    int colorTunerBlueOffset;
+
+    /*
+     * Advance setting for red gain. Adjust the gain or amplification of the red color channels.
+     * They control the overall intensity and white balance of red.
+     *
+     * The range is from 0 to 100, where 0 makes the red dimmer and 100 makes the red brighter.
+     * The default/unmodified value is 50.
+     */
+    int colorTunerRedGain;
+
+    /*
+     * Advance setting for green gain. Adjust the gain or amplification of the green color channels.
+     * They control the overall intensity and white balance of green.
+     *
+     * The range is from 0 to 100, where 0 makes the green dimmer and 100 makes the green brighter.
+     * The default/unmodified value is 50.
+     */
+    int colorTunerGreenGain;
+
+    /*
+     * Advance setting for blue gain. Adjust the gain or amplification of the blue color channels.
+     * They control the overall intensity and white balance of blue.
+     *
+     * The range is from 0 to 100, where 0 makes the blue dimmer and 100 makes the blue brighter.
+     * The default/unmodified value is 50.
+     */
+    int colorTunerBlueGain;
+
+    /* Noise reduction. (Off, Low, Medium, High) */
+    QualityLevel noiseReduction;
+
+    /* MPEG (moving picture experts group) noise reduction (Off, Low, Medium, High) */
+    QualityLevel mpegNoiseReduction;
+
+    /*
+     * Refine the flesh colors in the pictures without affecting the other colors on the screen.
+     * (Off, Low, Medium, High)
+     */
+    QualityLevel fleshTone;
+
+    /* Contour noise reduction. (Off, Low, Medium, High) */
+    QualityLevel deContour;
+
+    /* Dynamically change picture luma to enhance contrast. (Off, Low, Medium, High) */
+    QualityLevel dynamicLumaControl;
+
+    /* Enable/disable film mode */
+    boolean filmMode;
+
+    /* Enable/disable blue color auto stretch */
+    boolean blueStretch;
+
+    /* Enable/disable the overall color tuning feature. */
+    boolean colorTune;
+
+    /* Adjust color temperature type */
+    ColorTemperature colorTemperature;
+
+    /* Enable/disable globe dimming. */
+    boolean globeDimming;
+
+    /* Enable/disable auto adjust picture parameter based on the TV content. */
+    boolean autoPictureQualityEnabled;
+
+    /*
+     * Enable/disable auto upscaling the picture quality. It analyzes the lower-resolution
+     * image and uses its knowledge to invent the missing pixel, make the image look sharper.
+     */
+    boolean autoSuperResolutionEnabled;
 }
diff --git a/tv/mediaquality/aidl/android/hardware/tv/mediaquality/VendorParamCapability.aidl b/tv/mediaquality/aidl/android/hardware/tv/mediaquality/VendorParamCapability.aidl
new file mode 100644
index 0000000..1d9476d
--- /dev/null
+++ b/tv/mediaquality/aidl/android/hardware/tv/mediaquality/VendorParamCapability.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2024 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.tv.mediaquality;
+
+import android.hardware.tv.mediaquality.ParameterDefaultValue;
+import android.hardware.tv.mediaquality.ParameterRange;
+
+/**
+ * Capability of vendor parameters.
+ */
+@VintfStability
+parcelable VendorParamCapability {
+    /** Name of the parameter **/
+    ParcelableHolder name;
+
+    /** true if this parameter is supported **/
+    boolean isSupported;
+
+    /**
+     * Default value of this parameter. null if there is no default value.
+     */
+    @nullable ParameterDefaultValue defaultValue;
+
+    /**
+     * The supported range of this parameter. null if there is no specific range.
+     */
+    @nullable ParameterRange range;
+}
diff --git a/gnss/aidl/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl b/tv/mediaquality/aidl/android/hardware/tv/mediaquality/VendorParameterIdentifier.aidl
similarity index 60%
rename from gnss/aidl/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl
rename to tv/mediaquality/aidl/android/hardware/tv/mediaquality/VendorParameterIdentifier.aidl
index 7b9cc9f..f974b16 100644
--- a/gnss/aidl/android/hardware/gnss/gnss_assistance/TimeOfClock.aidl
+++ b/tv/mediaquality/aidl/android/hardware/tv/mediaquality/VendorParameterIdentifier.aidl
@@ -14,30 +14,13 @@
  * limitations under the License.
  */
 
-package android.hardware.gnss.gnss_assistance;
+package android.hardware.tv.mediaquality;
 
-/*
- * Contains the reference time of the GNSS clock.
- *
- * @hide
+/**
+ * Identifier of vendor parameters.
  */
 @VintfStability
-parcelable TimeOfClock {
-    /** Year of the clock. */
-    int year;
-
-    /** Month of the clock. */
-    int month;
-
-    /** Day of the clock. */
-    int day;
-
-    /** Hour of the clock. */
-    int hour;
-
-    /** Minute of the clock. */
-    int minute;
-
-    /** Second of the clock. */
-    int seconds;
+parcelable VendorParameterIdentifier {
+    /** Identifier of the parameter **/
+    ParcelableHolder identifier;
 }
diff --git a/tv/mediaquality/aidl/default/hal/media_quality_hal_impl.rs b/tv/mediaquality/aidl/default/hal/media_quality_hal_impl.rs
index a579e66..35fb999 100644
--- a/tv/mediaquality/aidl/default/hal/media_quality_hal_impl.rs
+++ b/tv/mediaquality/aidl/default/hal/media_quality_hal_impl.rs
@@ -22,12 +22,16 @@
     AmbientBacklightSettings::AmbientBacklightSettings,
     IPictureProfileAdjustmentListener::IPictureProfileAdjustmentListener,
     IPictureProfileChangedListener::IPictureProfileChangedListener,
+    ParamCapability::ParamCapability,
+    ParameterName::ParameterName,
     PictureParameter::PictureParameter,
     PictureParameters::PictureParameters,
     ISoundProfileAdjustmentListener::ISoundProfileAdjustmentListener,
     ISoundProfileChangedListener::ISoundProfileChangedListener,
     SoundParameter::SoundParameter,
     SoundParameters::SoundParameters,
+    VendorParamCapability::VendorParamCapability,
+    VendorParameterIdentifier::VendorParameterIdentifier,
 };
 use binder::{Interface, ParcelableHolder, Strong};
 use std::sync::{Arc, Mutex};
@@ -239,6 +243,11 @@
         Ok(picture_params)
     }
 
+    fn sendDefaultPictureParameters(&self, _picture_parameters: &PictureParameters) -> binder::Result<()>{
+        println!("Received picture parameters");
+        Ok(())
+    }
+
     fn getSoundProfileListener(&self) -> binder::Result<binder::Strong<dyn ISoundProfileChangedListener>> {
         println!("getSoundProfileListener");
         let listener = self.sound_profile_changed_listener.lock().unwrap();
@@ -273,4 +282,27 @@
 
         Ok(sound_params)
     }
+
+    fn sendDefaultSoundParameters(&self, _sound_parameters: &SoundParameters) -> binder::Result<()>{
+        println!("Received sound parameters");
+        Ok(())
+    }
+
+    fn getParamCaps(
+            &self,
+            param_names: &[ParameterName],
+            _caps: &mut Vec<ParamCapability>
+    ) -> binder::Result<()> {
+        println!("getParamCaps. len= {}", param_names.len());
+        Ok(())
+    }
+
+    fn getVendorParamCaps(
+            &self,
+            param_names: &[VendorParameterIdentifier],
+            _caps: &mut Vec<VendorParamCapability>
+    ) -> binder::Result<()> {
+        println!("getVendorParamCaps. len= {}", param_names.len());
+        Ok(())
+    }
 }
diff --git a/tv/mediaquality/aidl/vts/functional/VtsHalMediaQualityTest.cpp b/tv/mediaquality/aidl/vts/functional/VtsHalMediaQualityTest.cpp
index c1cc898..b508ed6 100644
--- a/tv/mediaquality/aidl/vts/functional/VtsHalMediaQualityTest.cpp
+++ b/tv/mediaquality/aidl/vts/functional/VtsHalMediaQualityTest.cpp
@@ -42,10 +42,12 @@
 using aidl::android::hardware::tv::mediaquality::BnPictureProfileAdjustmentListener;
 using aidl::android::hardware::tv::mediaquality::BnSoundProfileAdjustmentListener;
 using aidl::android::hardware::tv::mediaquality::IMediaQuality;
+using aidl::android::hardware::tv::mediaquality::ParamCapability;
 using aidl::android::hardware::tv::mediaquality::PictureParameters;
 using aidl::android::hardware::tv::mediaquality::PictureProfile;
 using aidl::android::hardware::tv::mediaquality::SoundParameters;
 using aidl::android::hardware::tv::mediaquality::SoundProfile;
+using aidl::android::hardware::tv::mediaquality::VendorParamCapability;
 using android::ProcessState;
 using android::String16;
 using ndk::ScopedAStatus;
@@ -79,6 +81,15 @@
         return ScopedAStatus::ok();
     }
 
+    ScopedAStatus onParamCapabilityChanged(int64_t, const std::vector<ParamCapability>&) override {
+        return ScopedAStatus::ok();
+    }
+
+    ScopedAStatus onVendorParamCapabilityChanged(int64_t,
+                                                 const std::vector<VendorParamCapability>&) {
+        return ScopedAStatus::ok();
+    }
+
   private:
     std::function<void(const PictureProfile& pictureProfile)> on_hal_picture_profile_adjust_;
 };
@@ -94,6 +105,15 @@
         return ScopedAStatus::ok();
     }
 
+    ScopedAStatus onParamCapabilityChanged(int64_t, const std::vector<ParamCapability>&) override {
+        return ScopedAStatus::ok();
+    }
+
+    ScopedAStatus onVendorParamCapabilityChanged(int64_t,
+                                                 const std::vector<VendorParamCapability>&) {
+        return ScopedAStatus::ok();
+    }
+
   private:
     std::function<void(const SoundProfile& soundProfile)> on_hal_sound_profile_adjust_;
 };
@@ -149,6 +169,13 @@
     ASSERT_EQ(pictureParams.pictureParameters.size(), 2);
 }
 
+TEST_P(MediaQualityAidl, TestSendDefaultPictureParameters) {
+    PictureParameters pictureParams;
+    auto result = mediaquality->getPictureParameters(1, &pictureParams);
+    ASSERT_TRUE(result.isOk());
+    ASSERT_OK(mediaquality->sendDefaultPictureParameters(pictureParams));
+}
+
 TEST_P(MediaQualityAidl, TestSetSoundProfileAdjustmentListener) {
     std::shared_ptr<SoundProfileAdjustmentListener> listener =
             ndk::SharedRefBase::make<SoundProfileAdjustmentListener>(
@@ -163,6 +190,13 @@
     ASSERT_EQ(soundParams.soundParameters.size(), 2);
 }
 
+TEST_P(MediaQualityAidl, TestSendDefaultSoundParameters) {
+    SoundParameters soundParams;
+    auto result = mediaquality->getSoundParameters(1, &soundParams);
+    ASSERT_TRUE(result.isOk());
+    ASSERT_OK(mediaquality->sendDefaultSoundParameters(soundParams));
+}
+
 TEST_P(MediaQualityAidl, TestSetAmbientBacklightDetector) {
     AmbientBacklightSettings in_settings = {
             .packageName = "com.android.mediaquality",
diff --git a/wifi/aidl/aidl_api/android.hardware.wifi/current/android/hardware/wifi/RttSecureConfig.aidl b/wifi/aidl/aidl_api/android.hardware.wifi/current/android/hardware/wifi/RttSecureConfig.aidl
index 64e81de..5cb1aaa 100644
--- a/wifi/aidl/aidl_api/android.hardware.wifi/current/android/hardware/wifi/RttSecureConfig.aidl
+++ b/wifi/aidl/aidl_api/android.hardware.wifi/current/android/hardware/wifi/RttSecureConfig.aidl
@@ -37,5 +37,5 @@
   android.hardware.wifi.PasnConfig pasnConfig;
   boolean enableSecureHeLtf;
   boolean enableRangingFrameProtection;
-  byte[] pasnComebackCookie;
+  @nullable byte[] pasnComebackCookie;
 }
diff --git a/wifi/aidl/android/hardware/wifi/RttSecureConfig.aidl b/wifi/aidl/android/hardware/wifi/RttSecureConfig.aidl
index d1394ab..0d1350e 100644
--- a/wifi/aidl/android/hardware/wifi/RttSecureConfig.aidl
+++ b/wifi/aidl/android/hardware/wifi/RttSecureConfig.aidl
@@ -38,5 +38,5 @@
     /**
      * Comeback cookie is an opaque sequence of octets retrieved from |RttResult|.
      */
-    byte[] pasnComebackCookie;
+    @nullable byte[] pasnComebackCookie;
 }
diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantStaIface.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantStaIface.aidl
index 2704e5c..cb96dfc 100644
--- a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantStaIface.aidl
+++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantStaIface.aidl
@@ -104,8 +104,8 @@
   void configureMscs(in android.hardware.wifi.supplicant.MscsParams params);
   void disableMscs();
   android.hardware.wifi.supplicant.UsdCapabilities getUsdCapabilities();
-  int startUsdPublish(in int cmdId, in android.hardware.wifi.supplicant.UsdPublishConfig usdPublishConfig);
-  int startUsdSubscribe(in int cmdId, in android.hardware.wifi.supplicant.UsdSubscribeConfig usdSubscribeConfig);
+  void startUsdPublish(in int cmdId, in android.hardware.wifi.supplicant.UsdPublishConfig usdPublishConfig);
+  void startUsdSubscribe(in int cmdId, in android.hardware.wifi.supplicant.UsdSubscribeConfig usdSubscribeConfig);
   void updateUsdPublish(in int publishId, in byte[] serviceSpecificInfo);
   void cancelUsdPublish(in int publishId);
   void cancelUsdSubscribe(in int subscribeId);
diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantStaIface.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantStaIface.aidl
index f3703e8..5c6024a 100644
--- a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantStaIface.aidl
+++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantStaIface.aidl
@@ -897,13 +897,11 @@
      * @param cmdId Identifier for this request. Will be returned in the callback to identify
      *              the request.
      * @param usdPublishConfig Parameters for the requested publish session.
-     * @return Publish ID identifying the publish session. This ID will also be returned in the
-               onStarted callback when the session setup is completed successfully.
      * @throws ServiceSpecificException with one of the following values:
      *         |SupplicantStatusCode.FAILURE_UNKNOWN|
      *         |SupplicantStatusCode.FAILURE_UNSUPPORTED|
      */
-    int startUsdPublish(in int cmdId, in UsdPublishConfig usdPublishConfig);
+    void startUsdPublish(in int cmdId, in UsdPublishConfig usdPublishConfig);
 
     /**
      * Start a USD subscribe session. Triggers a response via
@@ -913,13 +911,11 @@
      * @param cmdId Identifier for this request. Will be returned in the callback to identify
      *              the request.
      * @param usdSubscribeConfig Parameters for the requested subscribe session.
-     * @return Subscribe ID identifying the subscribe session. This ID will also be returned in the
-               onStarted callback when the session setup is completed successfully.
      * @throws ServiceSpecificException with one of the following values:
      *         |SupplicantStatusCode.FAILURE_UNKNOWN|
      *         |SupplicantStatusCode.FAILURE_UNSUPPORTED|
      */
-    int startUsdSubscribe(in int cmdId, in UsdSubscribeConfig usdSubscribeConfig);
+    void startUsdSubscribe(in int cmdId, in UsdSubscribeConfig usdSubscribeConfig);
 
     /**
      * Update the service-specific info for an active publish session.