Merge "Updated bp file for ISap 1.1"
am: 9189daec50

Change-Id: Ic721ae95893bfac79f99fb522e2d12455f0a3661
diff --git a/audio/Android.bp b/audio/Android.bp
new file mode 100644
index 0000000..009a762
--- /dev/null
+++ b/audio/Android.bp
@@ -0,0 +1,8 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "V2_0",
+    "common/V2_0",
+    "effect/V2_0",
+]
diff --git a/audio/V2_0/Android.bp b/audio/V2_0/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/audio/V2_0/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/audio/V2_0/build/Android.bp b/audio/V2_0/build/Android.bp
new file mode 100644
index 0000000..8a896fa
--- /dev/null
+++ b/audio/V2_0/build/Android.bp
@@ -0,0 +1,177 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.audio@2.0-vts.spec",
+    srcs: [
+        ":android.hardware.audio@2.0_hal",
+    ],
+    out: [
+        "android/hardware/audio/2.0/Device.vts",
+        "android/hardware/audio/2.0/DevicesFactory.vts",
+        "android/hardware/audio/2.0/PrimaryDevice.vts",
+        "android/hardware/audio/2.0/Stream.vts",
+        "android/hardware/audio/2.0/StreamIn.vts",
+        "android/hardware/audio/2.0/StreamOut.vts",
+        "android/hardware/audio/2.0/StreamOutCallback.vts",
+        "android/hardware/audio/2.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.audio@2.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.audio@2.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/audio/2.0/ $(genDir)/android/hardware/audio/2.0/",
+    srcs: [
+        ":android.hardware.audio@2.0_hal",
+    ],
+    out: [
+        "android/hardware/audio/2.0/Device.vts.cpp",
+        "android/hardware/audio/2.0/DevicesFactory.vts.cpp",
+        "android/hardware/audio/2.0/PrimaryDevice.vts.cpp",
+        "android/hardware/audio/2.0/Stream.vts.cpp",
+        "android/hardware/audio/2.0/StreamIn.vts.cpp",
+        "android/hardware/audio/2.0/StreamOut.vts.cpp",
+        "android/hardware/audio/2.0/StreamOutCallback.vts.cpp",
+        "android/hardware/audio/2.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.audio@2.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.audio@2.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/audio/2.0/ $(genDir)/android/hardware/audio/2.0/",
+    srcs: [
+        ":android.hardware.audio@2.0_hal",
+    ],
+    out: [
+        "android/hardware/audio/2.0/Device.vts.h",
+        "android/hardware/audio/2.0/DevicesFactory.vts.h",
+        "android/hardware/audio/2.0/PrimaryDevice.vts.h",
+        "android/hardware/audio/2.0/Stream.vts.h",
+        "android/hardware/audio/2.0/StreamIn.vts.h",
+        "android/hardware/audio/2.0/StreamOut.vts.h",
+        "android/hardware/audio/2.0/StreamOutCallback.vts.h",
+        "android/hardware/audio/2.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.audio@2.0-vts.driver",
+    generated_sources: ["android.hardware.audio@2.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.audio@2.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.audio@2.0-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.audio@2.0",
+        "android.hardware.audio.common@2.0",
+        "android.hardware.audio.common@2.0-vts.driver",
+    ],
+    export_shared_lib_headers: [
+        "android.hardware.audio.common@2.0",
+        "android.hardware.audio.common@2.0-vts.driver",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.audio@2.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.audio@2.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/audio/2.0/ $(genDir)/android/hardware/audio/2.0/",
+    srcs: [
+        ":android.hardware.audio@2.0_hal",
+    ],
+    out: [
+        "android/hardware/audio/2.0/Device.vts.cpp",
+        "android/hardware/audio/2.0/DevicesFactory.vts.cpp",
+        "android/hardware/audio/2.0/PrimaryDevice.vts.cpp",
+        "android/hardware/audio/2.0/Stream.vts.cpp",
+        "android/hardware/audio/2.0/StreamIn.vts.cpp",
+        "android/hardware/audio/2.0/StreamOut.vts.cpp",
+        "android/hardware/audio/2.0/StreamOutCallback.vts.cpp",
+        "android/hardware/audio/2.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.audio@2.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.audio@2.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/audio/2.0/ $(genDir)/android/hardware/audio/2.0/",
+    srcs: [
+        ":android.hardware.audio@2.0_hal",
+    ],
+    out: [
+        "android/hardware/audio/2.0/Device.vts.h",
+        "android/hardware/audio/2.0/DevicesFactory.vts.h",
+        "android/hardware/audio/2.0/PrimaryDevice.vts.h",
+        "android/hardware/audio/2.0/Stream.vts.h",
+        "android/hardware/audio/2.0/StreamIn.vts.h",
+        "android/hardware/audio/2.0/StreamOut.vts.h",
+        "android/hardware/audio/2.0/StreamOutCallback.vts.h",
+        "android/hardware/audio/2.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.audio@2.0-vts.profiler",
+    generated_sources: ["android.hardware.audio@2.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.audio@2.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.audio@2.0-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.audio@2.0",
+        "android.hardware.audio.common@2.0",
+        "android.hardware.audio.common@2.0-vts.profiler",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/audio/V2_0/target/Android.mk b/audio/V2_0/target/Android.mk
new file mode 100644
index 0000000..9a02d84
--- /dev/null
+++ b/audio/V2_0/target/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalAudioV2_0Target
+VTS_CONFIG_SRC_DIR := testcases/hal/audio/V2_0/target
+include test/vts/tools/build/Android.host_config.mk
diff --git a/audio/V2_0/target/AndroidTest.xml b/audio/V2_0/target/AndroidTest.xml
new file mode 100644
index 0000000..5172392
--- /dev/null
+++ b/audio/V2_0/target/AndroidTest.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS Audio V2_0 HIDL HAL's basic target-side test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetTest.push"/>
+        <option name="push" value="DATA/hardware/interfaces/audio/2.0/config/audio_policy_configuration.xsd->/data/local/tmp/audio_policy_configuration.xsd"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalAudioV2_0Target"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalAudioV2_0TargetTest/VtsHalAudioV2_0TargetTest" />
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalAudioV2_0TargetTest/VtsHalAudioV2_0TargetTest" />
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.audio@2.0"/>
+        <option name="test-timeout" value="30m"/>
+    </test>
+</configuration>
diff --git a/audio/V2_0/target_profiling/Android.mk b/audio/V2_0/target_profiling/Android.mk
new file mode 100644
index 0000000..f1e7176
--- /dev/null
+++ b/audio/V2_0/target_profiling/Android.mk
@@ -0,0 +1,24 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalAudioV2_0TargetProfiling
+
+VTS_CONFIG_SRC_DIR := testcases/hal/audio/V2_0/target_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/audio/V2_0/target_profiling/AndroidTest.xml b/audio/V2_0/target_profiling/AndroidTest.xml
new file mode 100644
index 0000000..81345d8
--- /dev/null
+++ b/audio/V2_0/target_profiling/AndroidTest.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS Audio V2_0 HIDL HAL's basic target-side, profiling test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetProfilingTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="DATA/lib/android.hardware.audio.common@2.0-vts.profiler.so->/data/local/tmp/32/android.hardware.audio.common@2.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.audio.common@2.0-vts.profiler.so->/data/local/tmp/64/android.hardware.audio.common@2.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib/android.hardware.audio@2.0-vts.profiler.so->/data/local/tmp/32/android.hardware.audio@2.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.audio@2.0-vts.profiler.so->/data/local/tmp/64/android.hardware.audio@2.0-vts.profiler.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalAudioV2_0TargetProfiling"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalAudioV2_0TargetTest/VtsHalAudioV2_0TargetTest" />
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalAudioV2_0TargetTest/VtsHalAudioV2_0TargetTest" />
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="enable-profiling" value="true"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.audio@2.0"/>
+        <option name="test-timeout" value="30m"/>
+    </test>
+</configuration>
diff --git a/audio/common/V2_0/Android.bp b/audio/common/V2_0/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/audio/common/V2_0/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/audio/common/V2_0/build/Android.bp b/audio/common/V2_0/build/Android.bp
new file mode 100644
index 0000000..a4672db
--- /dev/null
+++ b/audio/common/V2_0/build/Android.bp
@@ -0,0 +1,139 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.audio.common@2.0-vts.spec",
+    srcs: [
+        ":android.hardware.audio.common@2.0_hal",
+    ],
+    out: [
+        "android/hardware/audio/common/2.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.audio.common@2.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.audio.common@2.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/audio/common/2.0/ $(genDir)/android/hardware/audio/common/2.0/",
+    srcs: [
+        ":android.hardware.audio.common@2.0_hal",
+    ],
+    out: [
+        "android/hardware/audio/common/2.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.audio.common@2.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.audio.common@2.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/audio/common/2.0/ $(genDir)/android/hardware/audio/common/2.0/",
+    srcs: [
+        ":android.hardware.audio.common@2.0_hal",
+    ],
+    out: [
+        "android/hardware/audio/common/2.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.audio.common@2.0-vts.driver",
+    generated_sources: ["android.hardware.audio.common@2.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.audio.common@2.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.audio.common@2.0-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.audio.common@2.0",
+        
+    ],
+    export_shared_lib_headers: [
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.audio.common@2.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.audio.common@2.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/audio/common/2.0/ $(genDir)/android/hardware/audio/common/2.0/",
+    srcs: [
+        ":android.hardware.audio.common@2.0_hal",
+    ],
+    out: [
+        "android/hardware/audio/common/2.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.audio.common@2.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.audio.common@2.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/audio/common/2.0/ $(genDir)/android/hardware/audio/common/2.0/",
+    srcs: [
+        ":android.hardware.audio.common@2.0_hal",
+    ],
+    out: [
+        "android/hardware/audio/common/2.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.audio.common@2.0-vts.profiler",
+    generated_sources: ["android.hardware.audio.common@2.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.audio.common@2.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.audio.common@2.0-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.audio.common@2.0",
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/audio/effect/V2_0/Android.bp b/audio/effect/V2_0/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/audio/effect/V2_0/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/audio/effect/V2_0/build/Android.bp b/audio/effect/V2_0/build/Android.bp
new file mode 100644
index 0000000..c511f2a
--- /dev/null
+++ b/audio/effect/V2_0/build/Android.bp
@@ -0,0 +1,212 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.audio.effect@2.0-vts.spec",
+    srcs: [
+        ":android.hardware.audio.effect@2.0_hal",
+    ],
+    out: [
+        "android/hardware/audio/effect/2.0/AcousticEchoCancelerEffect.vts",
+        "android/hardware/audio/effect/2.0/AutomaticGainControlEffect.vts",
+        "android/hardware/audio/effect/2.0/BassBoostEffect.vts",
+        "android/hardware/audio/effect/2.0/DownmixEffect.vts",
+        "android/hardware/audio/effect/2.0/Effect.vts",
+        "android/hardware/audio/effect/2.0/EffectBufferProviderCallback.vts",
+        "android/hardware/audio/effect/2.0/EffectsFactory.vts",
+        "android/hardware/audio/effect/2.0/EnvironmentalReverbEffect.vts",
+        "android/hardware/audio/effect/2.0/EqualizerEffect.vts",
+        "android/hardware/audio/effect/2.0/LoudnessEnhancerEffect.vts",
+        "android/hardware/audio/effect/2.0/NoiseSuppressionEffect.vts",
+        "android/hardware/audio/effect/2.0/PresetReverbEffect.vts",
+        "android/hardware/audio/effect/2.0/VirtualizerEffect.vts",
+        "android/hardware/audio/effect/2.0/VisualizerEffect.vts",
+        "android/hardware/audio/effect/2.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.audio.effect@2.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.audio.effect@2.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/audio/effect/2.0/ $(genDir)/android/hardware/audio/effect/2.0/",
+    srcs: [
+        ":android.hardware.audio.effect@2.0_hal",
+    ],
+    out: [
+        "android/hardware/audio/effect/2.0/AcousticEchoCancelerEffect.vts.cpp",
+        "android/hardware/audio/effect/2.0/AutomaticGainControlEffect.vts.cpp",
+        "android/hardware/audio/effect/2.0/BassBoostEffect.vts.cpp",
+        "android/hardware/audio/effect/2.0/DownmixEffect.vts.cpp",
+        "android/hardware/audio/effect/2.0/Effect.vts.cpp",
+        "android/hardware/audio/effect/2.0/EffectBufferProviderCallback.vts.cpp",
+        "android/hardware/audio/effect/2.0/EffectsFactory.vts.cpp",
+        "android/hardware/audio/effect/2.0/EnvironmentalReverbEffect.vts.cpp",
+        "android/hardware/audio/effect/2.0/EqualizerEffect.vts.cpp",
+        "android/hardware/audio/effect/2.0/LoudnessEnhancerEffect.vts.cpp",
+        "android/hardware/audio/effect/2.0/NoiseSuppressionEffect.vts.cpp",
+        "android/hardware/audio/effect/2.0/PresetReverbEffect.vts.cpp",
+        "android/hardware/audio/effect/2.0/VirtualizerEffect.vts.cpp",
+        "android/hardware/audio/effect/2.0/VisualizerEffect.vts.cpp",
+        "android/hardware/audio/effect/2.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.audio.effect@2.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.audio.effect@2.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/audio/effect/2.0/ $(genDir)/android/hardware/audio/effect/2.0/",
+    srcs: [
+        ":android.hardware.audio.effect@2.0_hal",
+    ],
+    out: [
+        "android/hardware/audio/effect/2.0/AcousticEchoCancelerEffect.vts.h",
+        "android/hardware/audio/effect/2.0/AutomaticGainControlEffect.vts.h",
+        "android/hardware/audio/effect/2.0/BassBoostEffect.vts.h",
+        "android/hardware/audio/effect/2.0/DownmixEffect.vts.h",
+        "android/hardware/audio/effect/2.0/Effect.vts.h",
+        "android/hardware/audio/effect/2.0/EffectBufferProviderCallback.vts.h",
+        "android/hardware/audio/effect/2.0/EffectsFactory.vts.h",
+        "android/hardware/audio/effect/2.0/EnvironmentalReverbEffect.vts.h",
+        "android/hardware/audio/effect/2.0/EqualizerEffect.vts.h",
+        "android/hardware/audio/effect/2.0/LoudnessEnhancerEffect.vts.h",
+        "android/hardware/audio/effect/2.0/NoiseSuppressionEffect.vts.h",
+        "android/hardware/audio/effect/2.0/PresetReverbEffect.vts.h",
+        "android/hardware/audio/effect/2.0/VirtualizerEffect.vts.h",
+        "android/hardware/audio/effect/2.0/VisualizerEffect.vts.h",
+        "android/hardware/audio/effect/2.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.audio.effect@2.0-vts.driver",
+    generated_sources: ["android.hardware.audio.effect@2.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.audio.effect@2.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.audio.effect@2.0-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.audio.effect@2.0",
+        "android.hardware.audio.common@2.0",
+        "android.hardware.audio.common@2.0-vts.driver",
+    ],
+    export_shared_lib_headers: [
+        "android.hardware.audio.common@2.0",
+        "android.hardware.audio.common@2.0-vts.driver",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.audio.effect@2.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.audio.effect@2.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/audio/effect/2.0/ $(genDir)/android/hardware/audio/effect/2.0/",
+    srcs: [
+        ":android.hardware.audio.effect@2.0_hal",
+    ],
+    out: [
+        "android/hardware/audio/effect/2.0/AcousticEchoCancelerEffect.vts.cpp",
+        "android/hardware/audio/effect/2.0/AutomaticGainControlEffect.vts.cpp",
+        "android/hardware/audio/effect/2.0/BassBoostEffect.vts.cpp",
+        "android/hardware/audio/effect/2.0/DownmixEffect.vts.cpp",
+        "android/hardware/audio/effect/2.0/Effect.vts.cpp",
+        "android/hardware/audio/effect/2.0/EffectBufferProviderCallback.vts.cpp",
+        "android/hardware/audio/effect/2.0/EffectsFactory.vts.cpp",
+        "android/hardware/audio/effect/2.0/EnvironmentalReverbEffect.vts.cpp",
+        "android/hardware/audio/effect/2.0/EqualizerEffect.vts.cpp",
+        "android/hardware/audio/effect/2.0/LoudnessEnhancerEffect.vts.cpp",
+        "android/hardware/audio/effect/2.0/NoiseSuppressionEffect.vts.cpp",
+        "android/hardware/audio/effect/2.0/PresetReverbEffect.vts.cpp",
+        "android/hardware/audio/effect/2.0/VirtualizerEffect.vts.cpp",
+        "android/hardware/audio/effect/2.0/VisualizerEffect.vts.cpp",
+        "android/hardware/audio/effect/2.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.audio.effect@2.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.audio.effect@2.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/audio/effect/2.0/ $(genDir)/android/hardware/audio/effect/2.0/",
+    srcs: [
+        ":android.hardware.audio.effect@2.0_hal",
+    ],
+    out: [
+        "android/hardware/audio/effect/2.0/AcousticEchoCancelerEffect.vts.h",
+        "android/hardware/audio/effect/2.0/AutomaticGainControlEffect.vts.h",
+        "android/hardware/audio/effect/2.0/BassBoostEffect.vts.h",
+        "android/hardware/audio/effect/2.0/DownmixEffect.vts.h",
+        "android/hardware/audio/effect/2.0/Effect.vts.h",
+        "android/hardware/audio/effect/2.0/EffectBufferProviderCallback.vts.h",
+        "android/hardware/audio/effect/2.0/EffectsFactory.vts.h",
+        "android/hardware/audio/effect/2.0/EnvironmentalReverbEffect.vts.h",
+        "android/hardware/audio/effect/2.0/EqualizerEffect.vts.h",
+        "android/hardware/audio/effect/2.0/LoudnessEnhancerEffect.vts.h",
+        "android/hardware/audio/effect/2.0/NoiseSuppressionEffect.vts.h",
+        "android/hardware/audio/effect/2.0/PresetReverbEffect.vts.h",
+        "android/hardware/audio/effect/2.0/VirtualizerEffect.vts.h",
+        "android/hardware/audio/effect/2.0/VisualizerEffect.vts.h",
+        "android/hardware/audio/effect/2.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.audio.effect@2.0-vts.profiler",
+    generated_sources: ["android.hardware.audio.effect@2.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.audio.effect@2.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.audio.effect@2.0-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.audio.effect@2.0",
+        "android.hardware.audio.common@2.0",
+        "android.hardware.audio.common@2.0-vts.profiler",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/audio/effect/V2_0/target/Android.mk b/audio/effect/V2_0/target/Android.mk
new file mode 100644
index 0000000..d67ad68
--- /dev/null
+++ b/audio/effect/V2_0/target/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalAudioEffectV2_0Target
+VTS_CONFIG_SRC_DIR := testcases/hal/audio/effect/V2_0/target
+include test/vts/tools/build/Android.host_config.mk
diff --git a/audio/effect/V2_0/target/AndroidTest.xml b/audio/effect/V2_0/target/AndroidTest.xml
new file mode 100644
index 0000000..949c16a
--- /dev/null
+++ b/audio/effect/V2_0/target/AndroidTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalAudioEffectV2_0Target test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetTest.push"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalAudioEffectV2_0Target"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalAudioEffectV2_0TargetTest/VtsHalAudioEffectV2_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalAudioEffectV2_0TargetTest/VtsHalAudioEffectV2_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.audio.effect@2.0"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/audio/effect/V2_0/target_profiling/Android.mk b/audio/effect/V2_0/target_profiling/Android.mk
new file mode 100644
index 0000000..7611426
--- /dev/null
+++ b/audio/effect/V2_0/target_profiling/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalAudioEffectV2_0TargetProfiling
+VTS_CONFIG_SRC_DIR := testcases/hal/audio/effect/V2_0/target_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/audio/effect/V2_0/target_profiling/AndroidTest.xml b/audio/effect/V2_0/target_profiling/AndroidTest.xml
new file mode 100644
index 0000000..1dbdf0e
--- /dev/null
+++ b/audio/effect/V2_0/target_profiling/AndroidTest.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalAudioEffectV2_0TargetProfiling test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetProfilingTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="DATA/lib/android.hardware.audio.common@2.0-vts.profiler.so->/data/local/tmp/32/android.hardware.audio.common@2.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.audio.common@2.0-vts.profiler.so->/data/local/tmp/64/android.hardware.audio.common@2.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib/android.hardware.audio.effect@2.0-vts.profiler.so->/data/local/tmp/32/android.hardware.audio.effect@2.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.audio.effect@2.0-vts.profiler.so->/data/local/tmp/64/android.hardware.audio.effect@2.0-vts.profiler.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalAudioEffectV2_0TargetProfiling"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalAudioEffectV2_0TargetTest/VtsHalAudioEffectV2_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalAudioEffectV2_0TargetTest/VtsHalAudioEffectV2_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="enable-profiling" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.audio.effect@2.0"/>
+        <option name="test-timeout" value="15m"/>
+    </test>
+</configuration>
diff --git a/automotive/Android.bp b/automotive/Android.bp
new file mode 100644
index 0000000..1047dba
--- /dev/null
+++ b/automotive/Android.bp
@@ -0,0 +1,8 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "evs/V1_0",
+    "vehicle/V2_0",
+    "vehicle/V2_1",
+]
diff --git a/automotive/__init__.py b/automotive/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/automotive/__init__.py
diff --git a/automotive/evs/V1_0/Android.bp b/automotive/evs/V1_0/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/automotive/evs/V1_0/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/automotive/evs/V1_0/build/Android.bp b/automotive/evs/V1_0/build/Android.bp
new file mode 100644
index 0000000..5d39f16
--- /dev/null
+++ b/automotive/evs/V1_0/build/Android.bp
@@ -0,0 +1,159 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.automotive.evs@1.0-vts.spec",
+    srcs: [
+        ":android.hardware.automotive.evs@1.0_hal",
+    ],
+    out: [
+        "android/hardware/automotive/evs/1.0/EvsCamera.vts",
+        "android/hardware/automotive/evs/1.0/EvsCameraStream.vts",
+        "android/hardware/automotive/evs/1.0/EvsDisplay.vts",
+        "android/hardware/automotive/evs/1.0/EvsEnumerator.vts",
+        "android/hardware/automotive/evs/1.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.automotive.evs@1.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.automotive.evs@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/automotive/evs/1.0/ $(genDir)/android/hardware/automotive/evs/1.0/",
+    srcs: [
+        ":android.hardware.automotive.evs@1.0_hal",
+    ],
+    out: [
+        "android/hardware/automotive/evs/1.0/EvsCamera.vts.cpp",
+        "android/hardware/automotive/evs/1.0/EvsCameraStream.vts.cpp",
+        "android/hardware/automotive/evs/1.0/EvsDisplay.vts.cpp",
+        "android/hardware/automotive/evs/1.0/EvsEnumerator.vts.cpp",
+        "android/hardware/automotive/evs/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.automotive.evs@1.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.automotive.evs@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/automotive/evs/1.0/ $(genDir)/android/hardware/automotive/evs/1.0/",
+    srcs: [
+        ":android.hardware.automotive.evs@1.0_hal",
+    ],
+    out: [
+        "android/hardware/automotive/evs/1.0/EvsCamera.vts.h",
+        "android/hardware/automotive/evs/1.0/EvsCameraStream.vts.h",
+        "android/hardware/automotive/evs/1.0/EvsDisplay.vts.h",
+        "android/hardware/automotive/evs/1.0/EvsEnumerator.vts.h",
+        "android/hardware/automotive/evs/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.automotive.evs@1.0-vts.driver",
+    generated_sources: ["android.hardware.automotive.evs@1.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.automotive.evs@1.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.automotive.evs@1.0-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.automotive.evs@1.0",
+        
+    ],
+    export_shared_lib_headers: [
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.automotive.evs@1.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.automotive.evs@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/automotive/evs/1.0/ $(genDir)/android/hardware/automotive/evs/1.0/",
+    srcs: [
+        ":android.hardware.automotive.evs@1.0_hal",
+    ],
+    out: [
+        "android/hardware/automotive/evs/1.0/EvsCamera.vts.cpp",
+        "android/hardware/automotive/evs/1.0/EvsCameraStream.vts.cpp",
+        "android/hardware/automotive/evs/1.0/EvsDisplay.vts.cpp",
+        "android/hardware/automotive/evs/1.0/EvsEnumerator.vts.cpp",
+        "android/hardware/automotive/evs/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.automotive.evs@1.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.automotive.evs@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/automotive/evs/1.0/ $(genDir)/android/hardware/automotive/evs/1.0/",
+    srcs: [
+        ":android.hardware.automotive.evs@1.0_hal",
+    ],
+    out: [
+        "android/hardware/automotive/evs/1.0/EvsCamera.vts.h",
+        "android/hardware/automotive/evs/1.0/EvsCameraStream.vts.h",
+        "android/hardware/automotive/evs/1.0/EvsDisplay.vts.h",
+        "android/hardware/automotive/evs/1.0/EvsEnumerator.vts.h",
+        "android/hardware/automotive/evs/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.automotive.evs@1.0-vts.profiler",
+    generated_sources: ["android.hardware.automotive.evs@1.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.automotive.evs@1.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.automotive.evs@1.0-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.automotive.evs@1.0",
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/automotive/vehicle/V2_0/Android.bp b/automotive/vehicle/V2_0/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/automotive/vehicle/V2_0/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/automotive/vehicle/V2_0/__init__.py b/automotive/vehicle/V2_0/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/automotive/vehicle/V2_0/__init__.py
diff --git a/automotive/vehicle/V2_0/build/Android.bp b/automotive/vehicle/V2_0/build/Android.bp
new file mode 100644
index 0000000..48fd09b
--- /dev/null
+++ b/automotive/vehicle/V2_0/build/Android.bp
@@ -0,0 +1,149 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.automotive.vehicle@2.0-vts.spec",
+    srcs: [
+        ":android.hardware.automotive.vehicle@2.0_hal",
+    ],
+    out: [
+        "android/hardware/automotive/vehicle/2.0/Vehicle.vts",
+        "android/hardware/automotive/vehicle/2.0/VehicleCallback.vts",
+        "android/hardware/automotive/vehicle/2.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.automotive.vehicle@2.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.automotive.vehicle@2.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/automotive/vehicle/2.0/ $(genDir)/android/hardware/automotive/vehicle/2.0/",
+    srcs: [
+        ":android.hardware.automotive.vehicle@2.0_hal",
+    ],
+    out: [
+        "android/hardware/automotive/vehicle/2.0/Vehicle.vts.cpp",
+        "android/hardware/automotive/vehicle/2.0/VehicleCallback.vts.cpp",
+        "android/hardware/automotive/vehicle/2.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.automotive.vehicle@2.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.automotive.vehicle@2.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/automotive/vehicle/2.0/ $(genDir)/android/hardware/automotive/vehicle/2.0/",
+    srcs: [
+        ":android.hardware.automotive.vehicle@2.0_hal",
+    ],
+    out: [
+        "android/hardware/automotive/vehicle/2.0/Vehicle.vts.h",
+        "android/hardware/automotive/vehicle/2.0/VehicleCallback.vts.h",
+        "android/hardware/automotive/vehicle/2.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.automotive.vehicle@2.0-vts.driver",
+    generated_sources: ["android.hardware.automotive.vehicle@2.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.automotive.vehicle@2.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.automotive.vehicle@2.0-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.automotive.vehicle@2.0",
+        
+    ],
+    export_shared_lib_headers: [
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.automotive.vehicle@2.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.automotive.vehicle@2.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/automotive/vehicle/2.0/ $(genDir)/android/hardware/automotive/vehicle/2.0/",
+    srcs: [
+        ":android.hardware.automotive.vehicle@2.0_hal",
+    ],
+    out: [
+        "android/hardware/automotive/vehicle/2.0/Vehicle.vts.cpp",
+        "android/hardware/automotive/vehicle/2.0/VehicleCallback.vts.cpp",
+        "android/hardware/automotive/vehicle/2.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.automotive.vehicle@2.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.automotive.vehicle@2.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/automotive/vehicle/2.0/ $(genDir)/android/hardware/automotive/vehicle/2.0/",
+    srcs: [
+        ":android.hardware.automotive.vehicle@2.0_hal",
+    ],
+    out: [
+        "android/hardware/automotive/vehicle/2.0/Vehicle.vts.h",
+        "android/hardware/automotive/vehicle/2.0/VehicleCallback.vts.h",
+        "android/hardware/automotive/vehicle/2.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.automotive.vehicle@2.0-vts.profiler",
+    generated_sources: ["android.hardware.automotive.vehicle@2.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.automotive.vehicle@2.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.automotive.vehicle@2.0-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.automotive.vehicle@2.0",
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/automotive/vehicle/V2_0/host/Android.mk b/automotive/vehicle/V2_0/host/Android.mk
new file mode 100644
index 0000000..aa38340
--- /dev/null
+++ b/automotive/vehicle/V2_0/host/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalAutomotiveVehicleV2_0Host
+VTS_CONFIG_SRC_DIR := testcases/hal/automotive/vehicle/V2_0/host
+include test/vts/tools/build/Android.host_config.mk
diff --git a/automotive/vehicle/V2_0/host/AndroidTest.xml b/automotive/vehicle/V2_0/host/AndroidTest.xml
new file mode 100644
index 0000000..d0bd0f1
--- /dev/null
+++ b/automotive/vehicle/V2_0/host/AndroidTest.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalAutomotiveVehicleV2_0Host test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlHostTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="spec/hardware/interfaces/automotive/vehicle/2.0/vts/Vehicle.vts->/data/local/tmp/spec/android/hardware/automotive/vehicle/2.0/Vehicle.vts"/>
+        <option name="push" value="spec/hardware/interfaces/automotive/vehicle/2.0/vts/VehicleCallback.vts->/data/local/tmp/spec/android/hardware/automotive/vehicle/2.0/VehicleCallback.vts"/>
+        <option name="push" value="spec/hardware/interfaces/automotive/vehicle/2.0/vts/types.vts->/data/local/tmp/spec/android/hardware/automotive/vehicle/2.0/types.vts"/>
+        <option name="push" value="DATA/lib/android.hardware.automotive.vehicle@2.0-vts.driver.so->/data/local/tmp/32/android.hardware.automotive.vehicle@2.0-vts.driver.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.automotive.vehicle@2.0-vts.driver.so->/data/local/tmp/64/android.hardware.automotive.vehicle@2.0-vts.driver.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalAutomotiveVehicleV2_0Host"/>
+        <option name="test-case-path" value="vts/testcases/hal/automotive/vehicle/V2_0/host/VtsHalAutomotiveVehicleV2_0HostTest"/>
+        <option name="precondition-lshal" value="android.hardware.automotive.vehicle@2.0"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/automotive/vehicle/V2_0/host/VtsHalAutomotiveVehicleV2_0HostTest.py b/automotive/vehicle/V2_0/host/VtsHalAutomotiveVehicleV2_0HostTest.py
new file mode 100644
index 0000000..2fd0f4b
--- /dev/null
+++ b/automotive/vehicle/V2_0/host/VtsHalAutomotiveVehicleV2_0HostTest.py
@@ -0,0 +1,690 @@
+#!/usr/bin/env python
+#
+# Copyright (C) 2016 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.
+#
+
+import logging
+import time
+
+from vts.runners.host import asserts
+from vts.runners.host import base_test
+from vts.runners.host import const
+from vts.runners.host import keys
+from vts.runners.host import test_runner
+from vts.utils.python.controllers import android_device
+from vts.utils.python.precondition import precondition_utils
+
+
+class VtsHalAutomotiveVehicleV2_0HostTest(base_test.BaseTestClass):
+    """A simple testcase for the VEHICLE HIDL HAL."""
+
+    def setUpClass(self):
+        """Creates a mirror and init vehicle hal."""
+        self.dut = self.registerController(android_device)[0]
+
+        self.dut.shell.InvokeTerminal("one")
+        self.dut.shell.one.Execute("setenforce 0")  # SELinux permissive mode
+        if not precondition_utils.CanRunHidlHalTest(
+            self, self.dut, self.dut.shell.one):
+            self._skip_all_testcases = True
+            return
+
+        results = self.dut.shell.one.Execute("id -u system")
+        system_uid = results[const.STDOUT][0].strip()
+        logging.info("system_uid: %s", system_uid)
+
+        if self.coverage.enabled:
+            self.coverage.LoadArtifacts()
+            self.coverage.InitializeDeviceCoverage(self.dut)
+
+        if self.profiling.enabled:
+            self.profiling.EnableVTSProfiling(self.dut.shell.one)
+
+        self.dut.hal.InitHidlHal(
+            target_type="vehicle",
+            target_basepaths=self.dut.libPaths,
+            target_version=2.0,
+            target_package="android.hardware.automotive.vehicle",
+            target_component_name="IVehicle",
+            bits=int(self.abi_bitness))
+
+        self.vehicle = self.dut.hal.vehicle  # shortcut
+        self.vehicle.SetCallerUid(system_uid)
+        self.vtypes = self.dut.hal.vehicle.GetHidlTypeInterface("types")
+        logging.info("vehicle types: %s", self.vtypes)
+        asserts.assertEqual(0x00ff0000, self.vtypes.VehiclePropertyType.MASK)
+        asserts.assertEqual(0x0f000000, self.vtypes.VehicleArea.MASK)
+
+    def tearDownClass(self):
+        """Disables the profiling.
+
+        If profiling is enabled for the test, collect the profiling data
+        and disable profiling after the test is done.
+        """
+        if self._skip_all_testcases:
+            return
+
+        if self.profiling.enabled:
+            self.profiling.ProcessTraceDataForTestCase(self.dut)
+            self.profiling.ProcessAndUploadTraceData()
+
+        if self.coverage.enabled:
+            self.coverage.SetCoverageData(dut=self.dut, isGlobal=True)
+
+    def setUp(self):
+        self.propToConfig = {}
+        for config in self.vehicle.getAllPropConfigs():
+            self.propToConfig[config['prop']] = config
+        self.configList = self.propToConfig.values()
+
+    def testListProperties(self):
+        """Checks whether some PropConfigs are returned.
+
+        Verifies that call to getAllPropConfigs is not failing and
+        it returns at least 1 vehicle property config.
+        """
+        logging.info("all supported properties: %s", self.configList)
+        asserts.assertLess(0, len(self.configList))
+
+    def testMandatoryProperties(self):
+        """Verifies that all mandatory properties are supported."""
+        # 1 property so far
+        mandatoryProps = set([self.vtypes.VehicleProperty.DRIVING_STATUS])
+        logging.info(self.vtypes.VehicleProperty.DRIVING_STATUS)
+
+        for config in self.configList:
+            mandatoryProps.discard(config['prop'])
+
+        asserts.assertEqual(0, len(mandatoryProps))
+
+    def emptyValueProperty(self, propertyId, areaId=0):
+        """Creates a property structure for use with the Vehicle HAL.
+
+        Args:
+            propertyId: the numeric identifier of the output property.
+            areaId: the numeric identifier of the vehicle area of the output
+                    property. 0, or omitted, for global.
+
+        Returns:
+            a property structure for use with the Vehicle HAL.
+        """
+        return {
+            'prop' : propertyId,
+            'timestamp' : 0,
+            'areaId' : areaId,
+            'value' : {
+                'int32Values' : [],
+                'floatValues' : [],
+                'int64Values' : [],
+                'bytes' : [],
+                'stringValue' : ""
+            }
+        }
+
+    def readVhalProperty(self, propertyId, areaId=0):
+        """Reads a specified property from Vehicle HAL.
+
+        Args:
+            propertyId: the numeric identifier of the property to be read.
+            areaId: the numeric identifier of the vehicle area to retrieve the
+                    property for. 0, or omitted, for global.
+
+        Returns:
+            the value of the property as read from Vehicle HAL, or None
+            if it could not read successfully.
+        """
+        vp = self.vtypes.Py2Pb("VehiclePropValue",
+                               self.emptyValueProperty(propertyId, areaId))
+        logging.info("0x%x get request: %s", propertyId, vp)
+        status, value = self.vehicle.get(vp)
+        logging.info("0x%x get response: %s, %s", propertyId, status, value)
+        if self.vtypes.StatusCode.OK == status:
+            return value
+        else:
+            logging.warning("attempt to read property 0x%x returned error %d",
+                            propertyId, status)
+
+    def setVhalProperty(self, propertyId, value, areaId=0,
+                        expectedStatus=0):
+        """Sets a specified property in the Vehicle HAL.
+
+        Args:
+            propertyId: the numeric identifier of the property to be set.
+            value: the value of the property, formatted as per the Vehicle HAL
+                   (use emptyValueProperty() as a helper).
+            areaId: the numeric identifier of the vehicle area to set the
+                    property for. 0, or omitted, for global.
+            expectedStatus: the StatusCode expected to be returned from setting
+                    the property. 0, or omitted, for OK.
+        """
+        propValue = self.emptyValueProperty(propertyId, areaId)
+        for k in propValue["value"]:
+            if k in value:
+                if k == "stringValue":
+                    propValue["value"][k] += value[k]
+                else:
+                    propValue["value"][k].extend(value[k])
+        vp = self.vtypes.Py2Pb("VehiclePropValue", propValue)
+        logging.info("0x%x set request: %s", propertyId, vp)
+        status = self.vehicle.set(vp)
+        logging.info("0x%x set response: %s", propertyId, status)
+        if 0 == expectedStatus:
+            expectedStatus = self.vtypes.StatusCode.OK
+        asserts.assertEqual(expectedStatus, status, "Prop 0x%x" % propertyId)
+
+    def setAndVerifyIntProperty(self, propertyId, value, areaId=0):
+        """Sets a integer property in the Vehicle HAL and reads it back.
+
+        Args:
+            propertyId: the numeric identifier of the property to be set.
+            value: the int32 value of the property to be set.
+            areaId: the numeric identifier of the vehicle area to set the
+                    property for. 0, or omitted, for global.
+        """
+        self.setVhalProperty(propertyId, {"int32Values" : [value]}, areaId=areaId)
+
+        propValue = self.readVhalProperty(propertyId, areaId=areaId)
+        asserts.assertEqual(1, len(propValue["value"]["int32Values"]))
+        asserts.assertEqual(value, propValue["value"]["int32Values"][0])
+
+    def testObd2SensorProperties(self):
+        """Test reading the live and freeze OBD2 frame properties.
+
+        OBD2 (On-Board Diagnostics 2) is the industry standard protocol
+        for retrieving diagnostic sensor information from vehicles.
+        """
+        class CheckRead(object):
+            """This class wraps the logic of an actual property read.
+
+            Attributes:
+                testobject: the test case this object is used on behalf of.
+                propertyId: the identifier of the Vehiche HAL property to read.
+                name: the engineer-readable name of this test operation.
+            """
+
+            def __init__(self, testobject, propertyId, name):
+                self.testobject = testobject
+                self.propertyId = propertyId
+                self.name = name
+
+            def onReadSuccess(self, propValue):
+                """Override this to perform any post-read validation.
+
+                Args:
+                    propValue: the property value obtained from Vehicle HAL.
+                """
+                pass
+
+            def __call__(self):
+                """Reads the specified property and validates the result."""
+                propValue = self.testobject.readVhalProperty(self.propertyId)
+                asserts.assertNotEqual(propValue, None,
+                                       msg="reading %s should not return None" %
+                                       self.name)
+                logging.info("%s = %s", self.name, propValue)
+                self.onReadSuccess(propValue)
+                logging.info("%s pass" % self.name)
+
+        def checkLiveFrameRead():
+            """Validates reading the OBD2_LIVE_FRAME (if available)."""
+            checker = CheckRead(self,
+                                self.vtypes.VehicleProperty.OBD2_LIVE_FRAME,
+                                "OBD2_LIVE_FRAME")
+            checker()
+
+        def checkFreezeFrameRead():
+            """Validates reading the OBD2_FREEZE_FRAME (if available)."""
+            checker = CheckRead(self,
+                                self.vtypes.VehicleProperty.OBD2_FREEZE_FRAME,
+                                "OBD2_FREEZE_FRAME")
+            checker()
+
+        isLiveSupported = self.vtypes.VehicleProperty.OBD2_LIVE_FRAME in self.propToConfig
+        isFreezeSupported = self.vtypes.VehicleProperty.OBD2_FREEZE_FRAME in self.propToConfig
+        logging.info("isLiveSupported = %s, isFreezeSupported = %s",
+                     isLiveSupported, isFreezeSupported)
+        if isLiveSupported:
+            checkLiveFrameRead()
+        if isFreezeSupported:
+            checkFreezeFrameRead()
+
+    def testDrivingStatus(self):
+        """Checks that DRIVING_STATUS property returns correct result."""
+        propValue = self.readVhalProperty(
+            self.vtypes.VehicleProperty.DRIVING_STATUS)
+        asserts.assertEqual(1, len(propValue["value"]["int32Values"]))
+        drivingStatus = propValue["value"]["int32Values"][0]
+
+        allStatuses = (self.vtypes.VehicleDrivingStatus.UNRESTRICTED
+                       | self.vtypes.VehicleDrivingStatus.NO_VIDEO
+                       | self.vtypes.VehicleDrivingStatus.NO_KEYBOARD_INPUT
+                       | self.vtypes.VehicleDrivingStatus.NO_VOICE_INPUT
+                       | self.vtypes.VehicleDrivingStatus.NO_CONFIG
+                       | self.vtypes.VehicleDrivingStatus.LIMIT_MESSAGE_LEN)
+
+        asserts.assertEqual(allStatuses, allStatuses | drivingStatus)
+
+    def extractZonesAsList(self, supportedAreas):
+        """Converts bitwise area flags to list of zones"""
+        allZones = [
+            self.vtypes.VehicleAreaZone.ROW_1_LEFT,
+            self.vtypes.VehicleAreaZone.ROW_1_CENTER,
+            self.vtypes.VehicleAreaZone.ROW_1_RIGHT,
+            self.vtypes.VehicleAreaZone.ROW_1,
+            self.vtypes.VehicleAreaZone.ROW_2_LEFT,
+            self.vtypes.VehicleAreaZone.ROW_2_CENTER,
+            self.vtypes.VehicleAreaZone.ROW_2_RIGHT,
+            self.vtypes.VehicleAreaZone.ROW_2,
+            self.vtypes.VehicleAreaZone.ROW_3_LEFT,
+            self.vtypes.VehicleAreaZone.ROW_3_CENTER,
+            self.vtypes.VehicleAreaZone.ROW_3_RIGHT,
+            self.vtypes.VehicleAreaZone.ROW_3,
+            self.vtypes.VehicleAreaZone.ROW_4_LEFT,
+            self.vtypes.VehicleAreaZone.ROW_4_CENTER,
+            self.vtypes.VehicleAreaZone.ROW_4_RIGHT,
+            self.vtypes.VehicleAreaZone.ROW_4,
+            self.vtypes.VehicleAreaZone.WHOLE_CABIN,
+        ]
+
+        extractedZones = []
+        for zone in allZones:
+            if (zone & supportedAreas == zone):
+                extractedZones.append(zone)
+        return extractedZones
+
+
+    def testHvacPowerOn(self):
+        """Test power on/off and properties associated with it.
+
+        Gets the list of properties that are affected by the HVAC power state
+        and validates them.
+
+        Turns power on to start in a defined state, verifies that power is on
+        and properties are available.  State change from on->off and verifies
+        that properties are no longer available, then state change again from
+        off->on to verify properties are now available again.
+        """
+
+        # Checks that HVAC_POWER_ON property is supported and returns valid
+        # result initially.
+        hvacPowerOnConfig = self.propToConfig[self.vtypes.VehicleProperty.HVAC_POWER_ON]
+        if hvacPowerOnConfig is None:
+            logging.info("HVAC_POWER_ON not supported")
+            return
+
+        zones = self.extractZonesAsList(hvacPowerOnConfig['supportedAreas'])
+        asserts.assertLess(0, len(zones), "supportedAreas for HVAC_POWER_ON property is invalid")
+
+        # TODO(pavelm): consider to check for all zones
+        zone = zones[0]
+
+        propValue = self.readVhalProperty(
+            self.vtypes.VehicleProperty.HVAC_POWER_ON, areaId=zone)
+
+        asserts.assertEqual(1, len(propValue["value"]["int32Values"]))
+        asserts.assertTrue(
+            propValue["value"]["int32Values"][0] in [0, 1],
+            "%d not a valid value for HVAC_POWER_ON" %
+                propValue["value"]["int32Values"][0]
+            )
+
+        # Checks that HVAC_POWER_ON config string returns valid result.
+        requestConfig = [self.vtypes.Py2Pb(
+            "VehicleProperty", self.vtypes.VehicleProperty.HVAC_POWER_ON)]
+        logging.info("HVAC power on config request: %s", requestConfig)
+        responseConfig = self.vehicle.getPropConfigs(requestConfig)
+        logging.info("HVAC power on config response: %s", responseConfig)
+        hvacTypes = set([
+            self.vtypes.VehicleProperty.HVAC_FAN_SPEED,
+            self.vtypes.VehicleProperty.HVAC_FAN_DIRECTION,
+            self.vtypes.VehicleProperty.HVAC_TEMPERATURE_CURRENT,
+            self.vtypes.VehicleProperty.HVAC_TEMPERATURE_SET,
+            self.vtypes.VehicleProperty.HVAC_DEFROSTER,
+            self.vtypes.VehicleProperty.HVAC_AC_ON,
+            self.vtypes.VehicleProperty.HVAC_MAX_AC_ON,
+            self.vtypes.VehicleProperty.HVAC_MAX_DEFROST_ON,
+            self.vtypes.VehicleProperty.HVAC_RECIRC_ON,
+            self.vtypes.VehicleProperty.HVAC_DUAL_ON,
+            self.vtypes.VehicleProperty.HVAC_AUTO_ON,
+            self.vtypes.VehicleProperty.HVAC_ACTUAL_FAN_SPEED_RPM,
+        ])
+        status = responseConfig[0]
+        asserts.assertEqual(self.vtypes.StatusCode.OK, status)
+        configString = responseConfig[1][0]["configString"]
+        configProps = []
+        if configString != "":
+            for prop in configString.split(","):
+                configProps.append(int(prop, 16))
+        for prop in configProps:
+            asserts.assertTrue(prop in hvacTypes,
+                               "0x%X not an HVAC type" % prop)
+
+        # Turn power on.
+        self.setAndVerifyIntProperty(
+            self.vtypes.VehicleProperty.HVAC_POWER_ON, 1, areaId=zone)
+
+        # Check that properties that require power to be on can be set.
+        propVals = {}
+        for prop in configProps:
+            v = self.readVhalProperty(prop, areaId=zone)["value"]
+            self.setVhalProperty(prop, v, areaId=zone)
+            # Save the value for use later when trying to set the property when
+            # HVAC is off.
+            propVals[prop] = v
+
+        # Turn power off.
+        self.setAndVerifyIntProperty(
+            self.vtypes.VehicleProperty.HVAC_POWER_ON, 0, areaId=zone)
+
+        # Check that properties that require power to be on can't be set.
+        for prop in configProps:
+            self.setVhalProperty(
+                prop, propVals[prop],
+                areaId=zone,
+                expectedStatus=self.vtypes.StatusCode.NOT_AVAILABLE)
+
+        # Turn power on.
+        self.setAndVerifyIntProperty(
+            self.vtypes.VehicleProperty.HVAC_POWER_ON, 1, areaId=zone)
+
+        # Check that properties that require power to be on can be set.
+        for prop in configProps:
+            self.setVhalProperty(prop, propVals[prop], areaId=zone)
+
+    def testVehicleStaticProps(self):
+        """Verifies that static properties are configured correctly"""
+        staticProperties = set([
+            self.vtypes.VehicleProperty.INFO_VIN,
+            self.vtypes.VehicleProperty.INFO_MAKE,
+            self.vtypes.VehicleProperty.INFO_MODEL,
+            self.vtypes.VehicleProperty.INFO_MODEL_YEAR,
+            self.vtypes.VehicleProperty.INFO_FUEL_CAPACITY,
+            self.vtypes.VehicleProperty.HVAC_FAN_DIRECTION_AVAILABLE,
+            self.vtypes.VehicleProperty.AUDIO_HW_VARIANT,
+            self.vtypes.VehicleProperty.AP_POWER_BOOTUP_REASON,
+        ])
+        for c in self.configList:
+            prop = c['prop']
+            msg = "Prop 0x%x" % prop
+            if (c["prop"] in staticProperties):
+                asserts.assertEqual(self.vtypes.VehiclePropertyChangeMode.STATIC, c["changeMode"], msg)
+                asserts.assertEqual(self.vtypes.VehiclePropertyAccess.READ, c["access"], msg)
+                propValue = self.readVhalProperty(prop)
+                asserts.assertEqual(prop, propValue['prop'])
+                self.setVhalProperty(prop, propValue["value"],
+                    expectedStatus=self.vtypes.StatusCode.ACCESS_DENIED)
+            else:  # Non-static property
+                asserts.assertNotEqual(self.vtypes.VehiclePropertyChangeMode.STATIC, c["changeMode"], msg)
+
+    def testPropertyRanges(self):
+        """Retrieve the property ranges for all areas.
+
+        This checks that the areas noted in the config all give valid area
+        configs.  Once these are validated, the values for all these areas
+        retrieved from the HIDL must be within the ranges defined."""
+        for c in self.configList:
+            # Continuous properties need to have a sampling frequency.
+            if c["changeMode"] & self.vtypes.VehiclePropertyChangeMode.CONTINUOUS != 0:
+                asserts.assertLess(0.0, c["minSampleRate"],
+                                   "minSampleRate should be > 0. Config list: %s" % c)
+                asserts.assertLess(0.0, c["maxSampleRate"],
+                                   "maxSampleRate should be > 0. Config list: %s" % c)
+                asserts.assertFalse(c["minSampleRate"] > c["maxSampleRate"],
+                                    "Prop 0x%x minSampleRate > maxSampleRate" %
+                                        c["prop"])
+
+            areasFound = 0
+            for a in c["areaConfigs"]:
+                # Make sure this doesn't override one of the other areas found.
+                asserts.assertEqual(0, areasFound & a["areaId"])
+                areasFound |= a["areaId"]
+
+                # Do some basic checking the min and max aren't mixed up.
+                checks = [
+                    ("minInt32Value", "maxInt32Value"),
+                    ("minInt64Value", "maxInt64Value"),
+                    ("minFloatValue", "maxFloatValue")
+                ]
+                for minName, maxName in checks:
+                    asserts.assertFalse(
+                        a[minName] > a[maxName],
+                        "Prop 0x%x Area 0x%X %s > %s: %d > %d" %
+                            (c["prop"], a["areaId"],
+                             minName, maxName, a[minName], a[maxName]))
+
+                # Get a value and make sure it's within the bounds.
+                propVal = self.readVhalProperty(c["prop"], a["areaId"])
+                # Some values may not be available, which is not an error.
+                if propVal is None:
+                    continue
+                val = propVal["value"]
+                valTypes = {
+                    "int32Values": ("minInt32Value", "maxInt32Value"),
+                    "int64Values": ("minInt64Value", "maxInt64Value"),
+                    "floatValues": ("minFloatValue", "maxFloatValue"),
+                }
+                for valType, valBoundNames in valTypes.items():
+                    for v in val[valType]:
+                        # Make sure value isn't less than the minimum.
+                        asserts.assertFalse(
+                            v < a[valBoundNames[0]],
+                            "Prop 0x%x Area 0x%X %s < min: %s < %s" %
+                                (c["prop"], a["areaId"],
+                                 valType, v, a[valBoundNames[0]]))
+                        # Make sure value isn't greater than the maximum.
+                        asserts.assertFalse(
+                            v > a[valBoundNames[1]],
+                            "Prop 0x%x Area 0x%X %s > max: %s > %s" %
+                                (c["prop"], a["areaId"],
+                                 valType, v, a[valBoundNames[1]]))
+
+    def getValueIfPropSupported(self, propertyId):
+        """Returns tuple of boolean (indicating value supported or not) and the value itself"""
+        if (propertyId in self.propToConfig):
+            propValue = self.readVhalProperty(propertyId)
+            asserts.assertNotEqual(None, propValue, "expected value, prop: 0x%x" % propertyId)
+            asserts.assertEqual(propertyId, propValue['prop'])
+            return True, self.extractValue(propValue)
+        else:
+            return False, None
+
+    def testInfoVinMakeModel(self):
+        """Verifies INFO_VIN, INFO_MAKE, INFO_MODEL properties"""
+        stringProperties = set([
+            self.vtypes.VehicleProperty.INFO_VIN,
+            self.vtypes.VehicleProperty.INFO_MAKE,
+            self.vtypes.VehicleProperty.INFO_MODEL])
+        for prop in stringProperties:
+            supported, val = self.getValueIfPropSupported(prop)
+            if supported:
+                asserts.assertEqual(str, type(val), "prop: 0x%x" % prop)
+                asserts.assertLess(0, (len(val)), "prop: 0x%x" % prop)
+
+    def testGlobalFloatProperties(self):
+        """Verifies that values of global float properties are in the correct range"""
+        floatProperties = {
+            self.vtypes.VehicleProperty.ENV_CABIN_TEMPERATURE: (-50, 100),  # celsius
+            self.vtypes.VehicleProperty.ENV_OUTSIDE_TEMPERATURE: (-50, 100),  # celsius
+            self.vtypes.VehicleProperty.ENGINE_RPM : (0, 30000),  # RPMs
+            self.vtypes.VehicleProperty.ENGINE_OIL_TEMP : (-50, 150),  # celsius
+            self.vtypes.VehicleProperty.ENGINE_COOLANT_TEMP : (-50, 150),  #
+            self.vtypes.VehicleProperty.PERF_VEHICLE_SPEED : (0, 150),  # m/s, 150 m/s = 330 mph
+            self.vtypes.VehicleProperty.PERF_ODOMETER : (0, 1000000),  # km
+            self.vtypes.VehicleProperty.INFO_FUEL_CAPACITY : (0, 1000000),  # milliliter
+            self.vtypes.VehicleProperty.INFO_MODEL_YEAR : (1901, 2101),  # year
+        }
+
+        for prop, validRange in floatProperties.iteritems():
+            supported, val = self.getValueIfPropSupported(prop)
+            if supported:
+                asserts.assertEqual(float, type(val))
+                self.assertValueInRangeForProp(val, validRange[0], validRange[1], prop)
+
+    def testGlobalBoolProperties(self):
+        """Verifies that values of global boolean properties are in the correct range"""
+        booleanProperties = set([
+            self.vtypes.VehicleProperty.PARKING_BRAKE_ON,
+            self.vtypes.VehicleProperty.FUEL_LEVEL_LOW,
+            self.vtypes.VehicleProperty.NIGHT_MODE,
+            self.vtypes.VehicleProperty.DOOR_LOCK,
+            self.vtypes.VehicleProperty.MIRROR_LOCK,
+            self.vtypes.VehicleProperty.MIRROR_FOLD,
+            self.vtypes.VehicleProperty.SEAT_BELT_BUCKLED,
+            self.vtypes.VehicleProperty.WINDOW_LOCK,
+        ])
+        for prop in booleanProperties:
+            self.verifyEnumPropIfSupported(prop, [0, 1])
+
+    def testGlobalEnumProperties(self):
+        """Verifies that values of global enum properties are in the correct range"""
+        enumProperties = {
+            self.vtypes.VehicleProperty.GEAR_SELECTION : self.vtypes.VehicleGear,
+            self.vtypes.VehicleProperty.CURRENT_GEAR : self.vtypes.VehicleGear,
+            self.vtypes.VehicleProperty.TURN_SIGNAL_STATE : self.vtypes.VehicleTurnSignal,
+            self.vtypes.VehicleProperty.IGNITION_STATE : self.vtypes.VehicleIgnitionState,
+        }
+        for prop, enum in enumProperties.iteritems():
+            self.verifyEnumPropIfSupported(prop, vars(enum).values())
+
+    def testDebugDump(self):
+        """Verifies that call to IVehicle#debugDump is not failing"""
+        dumpStr = self.vehicle.debugDump()
+        asserts.assertNotEqual(None, dumpStr)
+
+    def extractValue(self, propValue):
+        """Extracts value depending on data type of the property"""
+        if propValue == None:
+            return None
+
+        # Extract data type
+        dataType = propValue['prop'] & self.vtypes.VehiclePropertyType.MASK
+        val = propValue['value']
+        if self.vtypes.VehiclePropertyType.STRING == dataType:
+            asserts.assertNotEqual(None, val['stringValue'])
+            return val['stringValue']
+        elif self.vtypes.VehiclePropertyType.INT32 == dataType or \
+                self.vtypes.VehiclePropertyType.BOOLEAN == dataType:
+            asserts.assertEqual(1, len(val["int32Values"]))
+            return val["int32Values"][0]
+        elif self.vtypes.VehiclePropertyType.INT64 == dataType:
+            asserts.assertEqual(1, len(val["int64Values"]))
+            return val["int64Values"][0]
+        elif self.vtypes.VehiclePropertyType.FLOAT == dataType:
+            asserts.assertEqual(1, len(val["floatValues"]))
+            return val["floatValues"][0]
+        elif self.vtypes.VehiclePropertyType.INT32_VEC == dataType:
+            asserts.assertLess(0, len(val["int32Values"]))
+            return val["int32Values"]
+        elif self.vtypes.VehiclePropertyType.FLOAT_VEC == dataType:
+            asserts.assertLess(0, len(val["floatValues"]))
+            return val["floatValues"]
+        elif self.vtypes.VehiclePropertyType.BYTES == dataType:
+            asserts.assertLess(0, len(val["bytes"]))
+            return val["bytes"]
+        else:
+            return val
+
+    def verifyEnumPropIfSupported(self, propertyId, validValues):
+        """Verifies that if given property supported it is one of the value in validValues set"""
+        supported, val = self.getValueIfPropSupported(propertyId)
+        if supported:
+            asserts.assertEqual(int, type(val))
+            self.assertIntValueInRangeForProp(val, validValues, propertyId)
+
+    def assertLessOrEqual(self, first, second, msg=None):
+        """Asserts that first <= second"""
+        if second < first:
+            fullMsg = "%s is not less or equal to %s" % (first, second)
+            if msg:
+                fullMsg = "%s %s" % (fullMsg, msg)
+            fail(fullMsg)
+
+    def assertIntValueInRangeForProp(self, value, validValues, prop):
+        """Asserts that given value is in the validValues range"""
+        asserts.assertTrue(value in validValues,
+                "Invalid value %d for property: 0x%x, expected one of: %s" % (value, prop, validValues))
+
+    def assertValueInRangeForProp(self, value, rangeBegin, rangeEnd, prop):
+        """Asserts that given value is in the range [rangeBegin, rangeEnd]"""
+        msg = "Value %s is out of range [%s, %s] for property 0x%x" % (value, rangeBegin, rangeEnd, prop)
+        self.assertLessOrEqual(rangeBegin, value, msg)
+        self.assertLessOrEqual(value, rangeEnd,  msg)
+
+    def getPropConfig(self, propertyId):
+        return self.propToConfig[propertyId]
+
+    def isPropSupported(self, propertyId):
+        return self.getPropConfig(propertyId) is not None
+
+    def testEngineOilTemp(self):
+        """tests engine oil temperature.
+
+        This also tests an HIDL async callback.
+        """
+        self.onPropertyEventCalled = 0
+        self.onPropertySetCalled = 0
+        self.onPropertySetErrorCalled = 0
+
+        def onPropertyEvent(vehiclePropValues):
+            logging.info("onPropertyEvent received: %s", vehiclePropValues)
+            self.onPropertyEventCalled += 1
+
+        def onPropertySet(vehiclePropValue):
+            logging.info("onPropertySet notification received: %s", vehiclePropValue)
+            self.onPropertySetCalled += 1
+
+        def onPropertySetError(erroCode, propId, areaId):
+            logging.info("onPropertySetError, error: %d, prop: 0x%x, area: 0x%x",
+                         erroCode, prop, area)
+            self.onPropertySetErrorCalled += 1
+
+        config = self.getPropConfig(self.vtypes.VehicleProperty.ENGINE_OIL_TEMP)
+        if (config is None):
+            logging.info("ENGINE_OIL_TEMP property is not supported")
+            return  # Property not supported, we are done here.
+
+        propValue = self.readVhalProperty(self.vtypes.VehicleProperty.ENGINE_OIL_TEMP)
+        asserts.assertEqual(1, len(propValue['value']['floatValues']))
+        oilTemp = propValue['value']['floatValues'][0]
+        logging.info("Current oil temperature: %f C", oilTemp)
+        asserts.assertLess(oilTemp, 200)    # Check it is in reasinable range
+        asserts.assertLess(-50, oilTemp)
+
+        if (config["changeMode"] == self.vtypes.VehiclePropertyChangeMode.CONTINUOUS):
+            logging.info("ENGINE_OIL_TEMP is continuous property, subscribing...")
+            callback = self.vehicle.GetHidlCallbackInterface("IVehicleCallback",
+                onPropertyEvent=onPropertyEvent,
+                onPropertySet=onPropertySet,
+                onPropertySetError=onPropertySetError)
+
+            subscribeOptions = {
+                "propId" : self.vtypes.VehicleProperty.ENGINE_OIL_TEMP,
+                "vehicleAreas" : 0,
+                "sampleRate" : 10.0,  # Hz
+                "flags" : self.vtypes.SubscribeFlags.HAL_EVENT,
+            }
+            pbSubscribeOptions = self.vtypes.Py2Pb("SubscribeOptions", subscribeOptions)
+
+            self.vehicle.subscribe(callback, [pbSubscribeOptions])
+            for _ in range(5):
+                if (self.onPropertyEventCalled > 0 or
+                    self.onPropertySetCalled > 0 or
+                    self.onPropertySetErrorCalled > 0):
+                    return
+                time.sleep(1)
+            asserts.fail("Callback not called in 5 seconds.")
+
+if __name__ == "__main__":
+    test_runner.main()
diff --git a/automotive/vehicle/V2_0/host/__init__.py b/automotive/vehicle/V2_0/host/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/automotive/vehicle/V2_0/host/__init__.py
diff --git a/automotive/vehicle/V2_0/host_profiling/Android.mk b/automotive/vehicle/V2_0/host_profiling/Android.mk
new file mode 100644
index 0000000..f4099a4
--- /dev/null
+++ b/automotive/vehicle/V2_0/host_profiling/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalAutomotiveVehicleV2_0HostProfiling
+VTS_CONFIG_SRC_DIR := testcases/hal/automotive/vehicle/V2_0/host_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/automotive/vehicle/V2_0/host_profiling/AndroidTest.xml b/automotive/vehicle/V2_0/host_profiling/AndroidTest.xml
new file mode 100644
index 0000000..c1d790d
--- /dev/null
+++ b/automotive/vehicle/V2_0/host_profiling/AndroidTest.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalAutomotiveVehicleV2_0HostProfiling test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlHostProfilingTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="spec/hardware/interfaces/automotive/vehicle/2.0/vts/Vehicle.vts->/data/local/tmp/spec/android/hardware/automotive/vehicle/2.0/Vehicle.vts"/>
+        <option name="push" value="spec/hardware/interfaces/automotive/vehicle/2.0/vts/VehicleCallback.vts->/data/local/tmp/spec/android/hardware/automotive/vehicle/2.0/VehicleCallback.vts"/>
+        <option name="push" value="spec/hardware/interfaces/automotive/vehicle/2.0/vts/types.vts->/data/local/tmp/spec/android/hardware/automotive/vehicle/2.0/types.vts"/>
+        <option name="push" value="DATA/lib/android.hardware.automotive.vehicle@2.0-vts.driver.so->/data/local/tmp/32/android.hardware.automotive.vehicle@2.0-vts.driver.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.automotive.vehicle@2.0-vts.driver.so->/data/local/tmp/64/android.hardware.automotive.vehicle@2.0-vts.driver.so"/>
+        <option name="push" value="DATA/lib/android.hardware.automotive.vehicle@2.0-vts.profiler.so->/data/local/tmp/32/android.hardware.automotive.vehicle@2.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.automotive.vehicle@2.0-vts.profiler.so->/data/local/tmp/64/android.hardware.automotive.vehicle@2.0-vts.profiler.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalAutomotiveVehicleV2_0HostProfiling"/>
+        <option name="test-case-path" value="vts/testcases/hal/automotive/vehicle/V2_0/host/VtsHalAutomotiveVehicleV2_0HostTest"/>
+        <option name="enable-profiling" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.automotive.vehicle@2.0"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/automotive/vehicle/V2_1/Android.bp b/automotive/vehicle/V2_1/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/automotive/vehicle/V2_1/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/automotive/vehicle/V2_1/build/Android.bp b/automotive/vehicle/V2_1/build/Android.bp
new file mode 100644
index 0000000..a329205
--- /dev/null
+++ b/automotive/vehicle/V2_1/build/Android.bp
@@ -0,0 +1,147 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.automotive.vehicle@2.1-vts.spec",
+    srcs: [
+        ":android.hardware.automotive.vehicle@2.1_hal",
+    ],
+    out: [
+        "android/hardware/automotive/vehicle/2.1/Vehicle.vts",
+        "android/hardware/automotive/vehicle/2.1/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.automotive.vehicle@2.1-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.automotive.vehicle@2.1 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/automotive/vehicle/2.1/ $(genDir)/android/hardware/automotive/vehicle/2.1/",
+    srcs: [
+        ":android.hardware.automotive.vehicle@2.1_hal",
+    ],
+    out: [
+        "android/hardware/automotive/vehicle/2.1/Vehicle.vts.cpp",
+        "android/hardware/automotive/vehicle/2.1/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.automotive.vehicle@2.1-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.automotive.vehicle@2.1 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/automotive/vehicle/2.1/ $(genDir)/android/hardware/automotive/vehicle/2.1/",
+    srcs: [
+        ":android.hardware.automotive.vehicle@2.1_hal",
+    ],
+    out: [
+        "android/hardware/automotive/vehicle/2.1/Vehicle.vts.h",
+        "android/hardware/automotive/vehicle/2.1/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.automotive.vehicle@2.1-vts.driver",
+    generated_sources: ["android.hardware.automotive.vehicle@2.1-vts.driver_genc++"],
+    generated_headers: ["android.hardware.automotive.vehicle@2.1-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.automotive.vehicle@2.1-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.automotive.vehicle@2.1",
+        "android.hardware.automotive.vehicle@2.0",
+        "android.hardware.automotive.vehicle@2.0-vts.driver",
+    ],
+    export_shared_lib_headers: [
+        "android.hardware.automotive.vehicle@2.0",
+        "android.hardware.automotive.vehicle@2.0-vts.driver",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.automotive.vehicle@2.1-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.automotive.vehicle@2.1 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/automotive/vehicle/2.1/ $(genDir)/android/hardware/automotive/vehicle/2.1/",
+    srcs: [
+        ":android.hardware.automotive.vehicle@2.1_hal",
+    ],
+    out: [
+        "android/hardware/automotive/vehicle/2.1/Vehicle.vts.cpp",
+        "android/hardware/automotive/vehicle/2.1/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.automotive.vehicle@2.1-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.automotive.vehicle@2.1 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/automotive/vehicle/2.1/ $(genDir)/android/hardware/automotive/vehicle/2.1/",
+    srcs: [
+        ":android.hardware.automotive.vehicle@2.1_hal",
+    ],
+    out: [
+        "android/hardware/automotive/vehicle/2.1/Vehicle.vts.h",
+        "android/hardware/automotive/vehicle/2.1/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.automotive.vehicle@2.1-vts.profiler",
+    generated_sources: ["android.hardware.automotive.vehicle@2.1-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.automotive.vehicle@2.1-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.automotive.vehicle@2.1-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.automotive.vehicle@2.1",
+        "android.hardware.automotive.vehicle@2.0",
+        "android.hardware.automotive.vehicle@2.0-vts.profiler",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/automotive/vehicle/__init__.py b/automotive/vehicle/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/automotive/vehicle/__init__.py
diff --git a/biometrics/Android.bp b/biometrics/Android.bp
new file mode 100644
index 0000000..8e0f4dc
--- /dev/null
+++ b/biometrics/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "fingerprint/V2_1",
+]
diff --git a/biometrics/fingerprint/V2_1/Android.bp b/biometrics/fingerprint/V2_1/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/biometrics/fingerprint/V2_1/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/biometrics/fingerprint/V2_1/build/Android.bp b/biometrics/fingerprint/V2_1/build/Android.bp
new file mode 100644
index 0000000..0827a1e
--- /dev/null
+++ b/biometrics/fingerprint/V2_1/build/Android.bp
@@ -0,0 +1,149 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.biometrics.fingerprint@2.1-vts.spec",
+    srcs: [
+        ":android.hardware.biometrics.fingerprint@2.1_hal",
+    ],
+    out: [
+        "android/hardware/biometrics/fingerprint/2.1/BiometricsFingerprint.vts",
+        "android/hardware/biometrics/fingerprint/2.1/BiometricsFingerprintClientCallback.vts",
+        "android/hardware/biometrics/fingerprint/2.1/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.biometrics.fingerprint@2.1-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.biometrics.fingerprint@2.1 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/biometrics/fingerprint/2.1/ $(genDir)/android/hardware/biometrics/fingerprint/2.1/",
+    srcs: [
+        ":android.hardware.biometrics.fingerprint@2.1_hal",
+    ],
+    out: [
+        "android/hardware/biometrics/fingerprint/2.1/BiometricsFingerprint.vts.cpp",
+        "android/hardware/biometrics/fingerprint/2.1/BiometricsFingerprintClientCallback.vts.cpp",
+        "android/hardware/biometrics/fingerprint/2.1/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.biometrics.fingerprint@2.1-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.biometrics.fingerprint@2.1 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/biometrics/fingerprint/2.1/ $(genDir)/android/hardware/biometrics/fingerprint/2.1/",
+    srcs: [
+        ":android.hardware.biometrics.fingerprint@2.1_hal",
+    ],
+    out: [
+        "android/hardware/biometrics/fingerprint/2.1/BiometricsFingerprint.vts.h",
+        "android/hardware/biometrics/fingerprint/2.1/BiometricsFingerprintClientCallback.vts.h",
+        "android/hardware/biometrics/fingerprint/2.1/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.biometrics.fingerprint@2.1-vts.driver",
+    generated_sources: ["android.hardware.biometrics.fingerprint@2.1-vts.driver_genc++"],
+    generated_headers: ["android.hardware.biometrics.fingerprint@2.1-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.biometrics.fingerprint@2.1-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.biometrics.fingerprint@2.1",
+        
+    ],
+    export_shared_lib_headers: [
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.biometrics.fingerprint@2.1-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.biometrics.fingerprint@2.1 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/biometrics/fingerprint/2.1/ $(genDir)/android/hardware/biometrics/fingerprint/2.1/",
+    srcs: [
+        ":android.hardware.biometrics.fingerprint@2.1_hal",
+    ],
+    out: [
+        "android/hardware/biometrics/fingerprint/2.1/BiometricsFingerprint.vts.cpp",
+        "android/hardware/biometrics/fingerprint/2.1/BiometricsFingerprintClientCallback.vts.cpp",
+        "android/hardware/biometrics/fingerprint/2.1/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.biometrics.fingerprint@2.1-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.biometrics.fingerprint@2.1 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/biometrics/fingerprint/2.1/ $(genDir)/android/hardware/biometrics/fingerprint/2.1/",
+    srcs: [
+        ":android.hardware.biometrics.fingerprint@2.1_hal",
+    ],
+    out: [
+        "android/hardware/biometrics/fingerprint/2.1/BiometricsFingerprint.vts.h",
+        "android/hardware/biometrics/fingerprint/2.1/BiometricsFingerprintClientCallback.vts.h",
+        "android/hardware/biometrics/fingerprint/2.1/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.biometrics.fingerprint@2.1-vts.profiler",
+    generated_sources: ["android.hardware.biometrics.fingerprint@2.1-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.biometrics.fingerprint@2.1-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.biometrics.fingerprint@2.1-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.biometrics.fingerprint@2.1",
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/biometrics/fingerprint/V2_1/target/Android.mk b/biometrics/fingerprint/V2_1/target/Android.mk
new file mode 100644
index 0000000..07a6a75
--- /dev/null
+++ b/biometrics/fingerprint/V2_1/target/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalBiometricsFingerprintV2_1Target
+VTS_CONFIG_SRC_DIR := testcases/hal/biometrics/fingerprint/V2_1/target
+include test/vts/tools/build/Android.host_config.mk
diff --git a/biometrics/fingerprint/V2_1/target/AndroidTest.xml b/biometrics/fingerprint/V2_1/target/AndroidTest.xml
new file mode 100644
index 0000000..12a796b
--- /dev/null
+++ b/biometrics/fingerprint/V2_1/target/AndroidTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalBiometricsFingerprintV2_1Target test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetTest.push"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalBiometricsFingerprintV2_1Target"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalBiometricsFingerprintV2_1TargetTest/VtsHalBiometricsFingerprintV2_1TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalBiometricsFingerprintV2_1TargetTest/VtsHalBiometricsFingerprintV2_1TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.biometrics.fingerprint@2.1"/>
+        <option name="test-timeout" value="15m"/>
+    </test>
+</configuration>
diff --git a/biometrics/fingerprint/V2_1/target_profiling/Android.mk b/biometrics/fingerprint/V2_1/target_profiling/Android.mk
new file mode 100644
index 0000000..70ab2a2
--- /dev/null
+++ b/biometrics/fingerprint/V2_1/target_profiling/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalBiometricsFingerprintV2_1TargetProfiling
+VTS_CONFIG_SRC_DIR := testcases/hal/biometrics/fingerprint/V2_1/target_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/biometrics/fingerprint/V2_1/target_profiling/AndroidTest.xml b/biometrics/fingerprint/V2_1/target_profiling/AndroidTest.xml
new file mode 100644
index 0000000..ef1cd50
--- /dev/null
+++ b/biometrics/fingerprint/V2_1/target_profiling/AndroidTest.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalBiometricsFingerprintV2_1TargetProfiling test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetProfilingTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="DATA/lib/android.hardware.biometrics.fingerprint@2.1-vts.profiler.so->/data/local/tmp/32/android.hardware.biometrics.fingerprint@2.1-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.biometrics.fingerprint@2.1-vts.profiler.so->/data/local/tmp/64/android.hardware.biometrics.fingerprint@2.1-vts.profiler.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalBiometricsFingerprintV2_1TargetProfiling"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalBiometricsFingerprintV2_1TargetTest/VtsHalBiometricsFingerprintV2_1TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalBiometricsFingerprintV2_1TargetTest/VtsHalBiometricsFingerprintV2_1TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="enable-profiling" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.biometrics.fingerprint@2.1"/>
+        <option name="test-timeout" value="15m"/>
+    </test>
+</configuration>
diff --git a/biometrics/fingerprint/V2_1/target_replay/Android.mk b/biometrics/fingerprint/V2_1/target_replay/Android.mk
new file mode 100644
index 0000000..1743005
--- /dev/null
+++ b/biometrics/fingerprint/V2_1/target_replay/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalBiometricsFingerprintV2_1TargetReplay
+VTS_CONFIG_SRC_DIR := testcases/hal/biometrics/fingerprint/V2_1/target_replay
+include test/vts/tools/build/Android.host_config.mk
diff --git a/biometrics/fingerprint/V2_1/target_replay/AndroidTest.xml b/biometrics/fingerprint/V2_1/target_replay/AndroidTest.xml
new file mode 100644
index 0000000..17da8c6
--- /dev/null
+++ b/biometrics/fingerprint/V2_1/target_replay/AndroidTest.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalBiometricsFingerprintV2_1TargetReplay test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlHostTest.push"/>
+        <option name="cleanup" value="false"/>
+        <option name="push" value="spec/hardware/interfaces/biometrics/fingerprint/2.1/vts/BiometricsFingerprint.vts->/data/local/tmp/spec/android/hardware/biometrics/fingerprint/2.1/BiometricsFingerprint.vts"/>
+        <option name="push" value="spec/hardware/interfaces/biometrics/fingerprint/2.1/vts/BiometricsFingerprintClientCallback.vts->/data/local/tmp/spec/android/hardware/biometrics/fingerprint/2.1/BiometricsFingerprintClientCallback.vts"/>
+        <option name="push" value="spec/hardware/interfaces/biometrics/fingerprint/2.1/vts/types.vts->/data/local/tmp/spec/android/hardware/biometrics/fingerprint/2.1/types.vts"/>
+        <option name="push" value="DATA/lib/android.hardware.biometrics.fingerprint@2.1-vts.driver.so->/data/local/tmp/32/android.hardware.biometrics.fingerprint@2.1-vts.driver.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.biometrics.fingerprint@2.1-vts.driver.so->/data/local/tmp/64/android.hardware.biometrics.fingerprint@2.1-vts.driver.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalBiometricsFingerprintV2_1TargetReplay"/>
+        <option name="binary-test-type" value="hal_hidl_replay_test"/>
+        <option name="hal-hidl-replay-test-trace-path" value="test/vts-testcase/hal-trace/biometrics/fingerprint/V2_1/android.hardware.biometrics.fingerprint@2.1_sailfish_1.vts.trace"/>
+        <option name="hal-hidl-package-name" value="android.hardware.biometrics.fingerprint@2.1"/>
+        <option name="precondition-lshal" value="android.hardware.biometrics.fingerprint@2.1"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/boot/V1_0/target/Android.mk b/boot/V1_0/target/Android.mk
new file mode 100644
index 0000000..6cd564a
--- /dev/null
+++ b/boot/V1_0/target/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalBootV1_0Target
+VTS_CONFIG_SRC_DIR := testcases/hal/boot/V1_0/target
+include test/vts/tools/build/Android.host_config.mk
diff --git a/boot/V1_0/target/AndroidTest.xml b/boot/V1_0/target/AndroidTest.xml
new file mode 100644
index 0000000..38f1b0c
--- /dev/null
+++ b/boot/V1_0/target/AndroidTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalBootV1_0Target test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetTest.push"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalBootV1_0Target"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalBootV1_0TargetTest/VtsHalBootV1_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalBootV1_0TargetTest/VtsHalBootV1_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.boot@1.0"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/boot/V1_0/target/HalBootHidlTargetTest.config b/boot/V1_0/target/HalBootHidlTargetTest.config
new file mode 100644
index 0000000..ebb4d1b
--- /dev/null
+++ b/boot/V1_0/target/HalBootHidlTargetTest.config
@@ -0,0 +1,20 @@
+{
+    "use_gae_db": true,
+    "coverage": true,
+    "modules": [
+        {
+            "module_name": "system/lib64/hw/bootctrl.msm8996",
+            "git_project": {
+                "name": "platform/hardware/qcom/bootctrl",
+                "path": "hardware/qcom/bootctrl"
+            }
+        },
+        {
+            "module_name": "system/lib64/hw/android.hardware.boot@1.0-impl",
+            "git_project": {
+                "name": "platform/hardware/interfaces",
+                "path": "hardware/interfaces"
+            }
+        }
+    ]
+}
diff --git a/boot/V1_0/target_profiling/Android.mk b/boot/V1_0/target_profiling/Android.mk
new file mode 100644
index 0000000..2df23cb
--- /dev/null
+++ b/boot/V1_0/target_profiling/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalBootV1_0TargetProfiling
+VTS_CONFIG_SRC_DIR := testcases/hal/boot/V1_0/target_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/boot/V1_0/target_profiling/AndroidTest.xml b/boot/V1_0/target_profiling/AndroidTest.xml
new file mode 100644
index 0000000..abe044c
--- /dev/null
+++ b/boot/V1_0/target_profiling/AndroidTest.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalBootV1_0TargetProfiling test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetProfilingTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="DATA/lib/android.hardware.boot@1.0-vts.profiler.so->/data/local/tmp/32/android.hardware.boot@1.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.boot@1.0-vts.profiler.so->/data/local/tmp/64/android.hardware.boot@1.0-vts.profiler.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalBootV1_0TargetProfiling"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalBootV1_0TargetTest/VtsHalBootV1_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalBootV1_0TargetTest/VtsHalBootV1_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="enable-profiling" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.boot@1.0"/>
+        <option name="test-timeout" value="15m"/>
+    </test>
+</configuration>
diff --git a/broadcastradio/Android.bp b/broadcastradio/Android.bp
new file mode 100644
index 0000000..2e98897
--- /dev/null
+++ b/broadcastradio/Android.bp
@@ -0,0 +1,7 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "V1_0",
+    "V1_1",
+]
diff --git a/broadcastradio/V1_0/Android.bp b/broadcastradio/V1_0/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/broadcastradio/V1_0/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/broadcastradio/V1_0/build/Android.bp b/broadcastradio/V1_0/build/Android.bp
new file mode 100644
index 0000000..4327924
--- /dev/null
+++ b/broadcastradio/V1_0/build/Android.bp
@@ -0,0 +1,159 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.broadcastradio@1.0-vts.spec",
+    srcs: [
+        ":android.hardware.broadcastradio@1.0_hal",
+    ],
+    out: [
+        "android/hardware/broadcastradio/1.0/BroadcastRadio.vts",
+        "android/hardware/broadcastradio/1.0/BroadcastRadioFactory.vts",
+        "android/hardware/broadcastradio/1.0/Tuner.vts",
+        "android/hardware/broadcastradio/1.0/TunerCallback.vts",
+        "android/hardware/broadcastradio/1.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.broadcastradio@1.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.broadcastradio@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/broadcastradio/1.0/ $(genDir)/android/hardware/broadcastradio/1.0/",
+    srcs: [
+        ":android.hardware.broadcastradio@1.0_hal",
+    ],
+    out: [
+        "android/hardware/broadcastradio/1.0/BroadcastRadio.vts.cpp",
+        "android/hardware/broadcastradio/1.0/BroadcastRadioFactory.vts.cpp",
+        "android/hardware/broadcastradio/1.0/Tuner.vts.cpp",
+        "android/hardware/broadcastradio/1.0/TunerCallback.vts.cpp",
+        "android/hardware/broadcastradio/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.broadcastradio@1.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.broadcastradio@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/broadcastradio/1.0/ $(genDir)/android/hardware/broadcastradio/1.0/",
+    srcs: [
+        ":android.hardware.broadcastradio@1.0_hal",
+    ],
+    out: [
+        "android/hardware/broadcastradio/1.0/BroadcastRadio.vts.h",
+        "android/hardware/broadcastradio/1.0/BroadcastRadioFactory.vts.h",
+        "android/hardware/broadcastradio/1.0/Tuner.vts.h",
+        "android/hardware/broadcastradio/1.0/TunerCallback.vts.h",
+        "android/hardware/broadcastradio/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.broadcastradio@1.0-vts.driver",
+    generated_sources: ["android.hardware.broadcastradio@1.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.broadcastradio@1.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.broadcastradio@1.0-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.broadcastradio@1.0",
+        
+    ],
+    export_shared_lib_headers: [
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.broadcastradio@1.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.broadcastradio@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/broadcastradio/1.0/ $(genDir)/android/hardware/broadcastradio/1.0/",
+    srcs: [
+        ":android.hardware.broadcastradio@1.0_hal",
+    ],
+    out: [
+        "android/hardware/broadcastradio/1.0/BroadcastRadio.vts.cpp",
+        "android/hardware/broadcastradio/1.0/BroadcastRadioFactory.vts.cpp",
+        "android/hardware/broadcastradio/1.0/Tuner.vts.cpp",
+        "android/hardware/broadcastradio/1.0/TunerCallback.vts.cpp",
+        "android/hardware/broadcastradio/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.broadcastradio@1.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.broadcastradio@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/broadcastradio/1.0/ $(genDir)/android/hardware/broadcastradio/1.0/",
+    srcs: [
+        ":android.hardware.broadcastradio@1.0_hal",
+    ],
+    out: [
+        "android/hardware/broadcastradio/1.0/BroadcastRadio.vts.h",
+        "android/hardware/broadcastradio/1.0/BroadcastRadioFactory.vts.h",
+        "android/hardware/broadcastradio/1.0/Tuner.vts.h",
+        "android/hardware/broadcastradio/1.0/TunerCallback.vts.h",
+        "android/hardware/broadcastradio/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.broadcastradio@1.0-vts.profiler",
+    generated_sources: ["android.hardware.broadcastradio@1.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.broadcastradio@1.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.broadcastradio@1.0-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.broadcastradio@1.0",
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/broadcastradio/V1_0/target/Android.mk b/broadcastradio/V1_0/target/Android.mk
new file mode 100644
index 0000000..8c20147
--- /dev/null
+++ b/broadcastradio/V1_0/target/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalBroadcastradioV1_0Target
+VTS_CONFIG_SRC_DIR := testcases/hal/broadcastradio/V1_0/target
+include test/vts/tools/build/Android.host_config.mk
diff --git a/broadcastradio/V1_0/target/AndroidTest.xml b/broadcastradio/V1_0/target/AndroidTest.xml
new file mode 100644
index 0000000..2604239
--- /dev/null
+++ b/broadcastradio/V1_0/target/AndroidTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalBroadcastradioV1_0Target test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetTest.push"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalBroadcastradioV1_0Target"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalBroadcastradioV1_0TargetTest/VtsHalBroadcastradioV1_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalBroadcastradioV1_0TargetTest/VtsHalBroadcastradioV1_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.broadcastradio@1.0"/>
+        <option name="test-timeout" value="15m"/>
+    </test>
+</configuration>
diff --git a/broadcastradio/V1_0/target_profiling/Android.mk b/broadcastradio/V1_0/target_profiling/Android.mk
new file mode 100644
index 0000000..ba55aaf
--- /dev/null
+++ b/broadcastradio/V1_0/target_profiling/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalBroadcastradioV1_0TargetProfiling
+VTS_CONFIG_SRC_DIR := testcases/hal/broadcastradio/V1_0/target_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/broadcastradio/V1_0/target_profiling/AndroidTest.xml b/broadcastradio/V1_0/target_profiling/AndroidTest.xml
new file mode 100644
index 0000000..e0b1038
--- /dev/null
+++ b/broadcastradio/V1_0/target_profiling/AndroidTest.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalBroadcastradioV1_0TargetProfiling test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetProfilingTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="DATA/lib/android.hardware.broadcastradio@1.0-vts.profiler.so->/data/local/tmp/32/android.hardware.broadcastradio@1.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.broadcastradio@1.0-vts.profiler.so->/data/local/tmp/64/android.hardware.broadcastradio@1.0-vts.profiler.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalBroadcastradioV1_0TargetProfiling"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalBroadcastradioV1_0TargetTest/VtsHalBroadcastradioV1_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalBroadcastradioV1_0TargetTest/VtsHalBroadcastradioV1_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="enable-profiling" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.broadcastradio@1.0"/>
+        <option name="test-timeout" value="15m"/>
+    </test>
+</configuration>
diff --git a/broadcastradio/V1_1/Android.bp b/broadcastradio/V1_1/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/broadcastradio/V1_1/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/broadcastradio/V1_1/build/Android.bp b/broadcastradio/V1_1/build/Android.bp
new file mode 100644
index 0000000..4d41e8e
--- /dev/null
+++ b/broadcastradio/V1_1/build/Android.bp
@@ -0,0 +1,162 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.broadcastradio@1.1-vts.spec",
+    srcs: [
+        ":android.hardware.broadcastradio@1.1_hal",
+    ],
+    out: [
+        "android/hardware/broadcastradio/1.1/BroadcastRadio.vts",
+        "android/hardware/broadcastradio/1.1/BroadcastRadioFactory.vts",
+        "android/hardware/broadcastradio/1.1/Tuner.vts",
+        "android/hardware/broadcastradio/1.1/TunerCallback.vts",
+        "android/hardware/broadcastradio/1.1/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.broadcastradio@1.1-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.broadcastradio@1.1 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/broadcastradio/1.1/ $(genDir)/android/hardware/broadcastradio/1.1/",
+    srcs: [
+        ":android.hardware.broadcastradio@1.1_hal",
+    ],
+    out: [
+        "android/hardware/broadcastradio/1.1/BroadcastRadio.vts.cpp",
+        "android/hardware/broadcastradio/1.1/BroadcastRadioFactory.vts.cpp",
+        "android/hardware/broadcastradio/1.1/Tuner.vts.cpp",
+        "android/hardware/broadcastradio/1.1/TunerCallback.vts.cpp",
+        "android/hardware/broadcastradio/1.1/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.broadcastradio@1.1-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.broadcastradio@1.1 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/broadcastradio/1.1/ $(genDir)/android/hardware/broadcastradio/1.1/",
+    srcs: [
+        ":android.hardware.broadcastradio@1.1_hal",
+    ],
+    out: [
+        "android/hardware/broadcastradio/1.1/BroadcastRadio.vts.h",
+        "android/hardware/broadcastradio/1.1/BroadcastRadioFactory.vts.h",
+        "android/hardware/broadcastradio/1.1/Tuner.vts.h",
+        "android/hardware/broadcastradio/1.1/TunerCallback.vts.h",
+        "android/hardware/broadcastradio/1.1/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.broadcastradio@1.1-vts.driver",
+    generated_sources: ["android.hardware.broadcastradio@1.1-vts.driver_genc++"],
+    generated_headers: ["android.hardware.broadcastradio@1.1-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.broadcastradio@1.1-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.broadcastradio@1.1",
+        "android.hardware.broadcastradio@1.0",
+        "android.hardware.broadcastradio@1.0-vts.driver",
+    ],
+    export_shared_lib_headers: [
+        "android.hardware.broadcastradio@1.0",
+        "android.hardware.broadcastradio@1.0-vts.driver",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.broadcastradio@1.1-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.broadcastradio@1.1 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/broadcastradio/1.1/ $(genDir)/android/hardware/broadcastradio/1.1/",
+    srcs: [
+        ":android.hardware.broadcastradio@1.1_hal",
+    ],
+    out: [
+        "android/hardware/broadcastradio/1.1/BroadcastRadio.vts.cpp",
+        "android/hardware/broadcastradio/1.1/BroadcastRadioFactory.vts.cpp",
+        "android/hardware/broadcastradio/1.1/Tuner.vts.cpp",
+        "android/hardware/broadcastradio/1.1/TunerCallback.vts.cpp",
+        "android/hardware/broadcastradio/1.1/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.broadcastradio@1.1-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.broadcastradio@1.1 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/broadcastradio/1.1/ $(genDir)/android/hardware/broadcastradio/1.1/",
+    srcs: [
+        ":android.hardware.broadcastradio@1.1_hal",
+    ],
+    out: [
+        "android/hardware/broadcastradio/1.1/BroadcastRadio.vts.h",
+        "android/hardware/broadcastradio/1.1/BroadcastRadioFactory.vts.h",
+        "android/hardware/broadcastradio/1.1/Tuner.vts.h",
+        "android/hardware/broadcastradio/1.1/TunerCallback.vts.h",
+        "android/hardware/broadcastradio/1.1/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.broadcastradio@1.1-vts.profiler",
+    generated_sources: ["android.hardware.broadcastradio@1.1-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.broadcastradio@1.1-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.broadcastradio@1.1-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.broadcastradio@1.1",
+        "android.hardware.broadcastradio@1.0",
+        "android.hardware.broadcastradio@1.0-vts.profiler",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/camera/Android.bp b/camera/Android.bp
new file mode 100644
index 0000000..7e79b70
--- /dev/null
+++ b/camera/Android.bp
@@ -0,0 +1,10 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "common/V1_0",
+    "device/V1_0",
+    "device/V3_2",
+    "metadata/V3_2",
+    "provider/V2_4",
+]
diff --git a/camera/common/V1_0/Android.bp b/camera/common/V1_0/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/camera/common/V1_0/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/camera/common/V1_0/build/Android.bp b/camera/common/V1_0/build/Android.bp
new file mode 100644
index 0000000..85dc9dd
--- /dev/null
+++ b/camera/common/V1_0/build/Android.bp
@@ -0,0 +1,139 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.camera.common@1.0-vts.spec",
+    srcs: [
+        ":android.hardware.camera.common@1.0_hal",
+    ],
+    out: [
+        "android/hardware/camera/common/1.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.camera.common@1.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.common@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/camera/common/1.0/ $(genDir)/android/hardware/camera/common/1.0/",
+    srcs: [
+        ":android.hardware.camera.common@1.0_hal",
+    ],
+    out: [
+        "android/hardware/camera/common/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.camera.common@1.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.common@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/camera/common/1.0/ $(genDir)/android/hardware/camera/common/1.0/",
+    srcs: [
+        ":android.hardware.camera.common@1.0_hal",
+    ],
+    out: [
+        "android/hardware/camera/common/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.camera.common@1.0-vts.driver",
+    generated_sources: ["android.hardware.camera.common@1.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.camera.common@1.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.camera.common@1.0-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.camera.common@1.0",
+        
+    ],
+    export_shared_lib_headers: [
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.camera.common@1.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.common@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/camera/common/1.0/ $(genDir)/android/hardware/camera/common/1.0/",
+    srcs: [
+        ":android.hardware.camera.common@1.0_hal",
+    ],
+    out: [
+        "android/hardware/camera/common/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.camera.common@1.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.common@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/camera/common/1.0/ $(genDir)/android/hardware/camera/common/1.0/",
+    srcs: [
+        ":android.hardware.camera.common@1.0_hal",
+    ],
+    out: [
+        "android/hardware/camera/common/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.camera.common@1.0-vts.profiler",
+    generated_sources: ["android.hardware.camera.common@1.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.camera.common@1.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.camera.common@1.0-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.camera.common@1.0",
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/camera/device/V1_0/Android.bp b/camera/device/V1_0/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/camera/device/V1_0/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/camera/device/V1_0/build/Android.bp b/camera/device/V1_0/build/Android.bp
new file mode 100644
index 0000000..dc043b4
--- /dev/null
+++ b/camera/device/V1_0/build/Android.bp
@@ -0,0 +1,163 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.camera.device@1.0-vts.spec",
+    srcs: [
+        ":android.hardware.camera.device@1.0_hal",
+    ],
+    out: [
+        "android/hardware/camera/device/1.0/CameraDevice.vts",
+        "android/hardware/camera/device/1.0/CameraDeviceCallback.vts",
+        "android/hardware/camera/device/1.0/CameraDevicePreviewCallback.vts",
+        "android/hardware/camera/device/1.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.camera.device@1.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.device@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/camera/device/1.0/ $(genDir)/android/hardware/camera/device/1.0/",
+    srcs: [
+        ":android.hardware.camera.device@1.0_hal",
+    ],
+    out: [
+        "android/hardware/camera/device/1.0/CameraDevice.vts.cpp",
+        "android/hardware/camera/device/1.0/CameraDeviceCallback.vts.cpp",
+        "android/hardware/camera/device/1.0/CameraDevicePreviewCallback.vts.cpp",
+        "android/hardware/camera/device/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.camera.device@1.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.device@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/camera/device/1.0/ $(genDir)/android/hardware/camera/device/1.0/",
+    srcs: [
+        ":android.hardware.camera.device@1.0_hal",
+    ],
+    out: [
+        "android/hardware/camera/device/1.0/CameraDevice.vts.h",
+        "android/hardware/camera/device/1.0/CameraDeviceCallback.vts.h",
+        "android/hardware/camera/device/1.0/CameraDevicePreviewCallback.vts.h",
+        "android/hardware/camera/device/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.camera.device@1.0-vts.driver",
+    generated_sources: ["android.hardware.camera.device@1.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.camera.device@1.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.camera.device@1.0-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.camera.device@1.0",
+        "android.hardware.camera.common@1.0",
+        "android.hardware.camera.common@1.0-vts.driver",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.graphics.common@1.0-vts.driver",
+    ],
+    export_shared_lib_headers: [
+        "android.hardware.camera.common@1.0",
+        "android.hardware.camera.common@1.0-vts.driver",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.graphics.common@1.0-vts.driver",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.camera.device@1.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.device@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/camera/device/1.0/ $(genDir)/android/hardware/camera/device/1.0/",
+    srcs: [
+        ":android.hardware.camera.device@1.0_hal",
+    ],
+    out: [
+        "android/hardware/camera/device/1.0/CameraDevice.vts.cpp",
+        "android/hardware/camera/device/1.0/CameraDeviceCallback.vts.cpp",
+        "android/hardware/camera/device/1.0/CameraDevicePreviewCallback.vts.cpp",
+        "android/hardware/camera/device/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.camera.device@1.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.device@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/camera/device/1.0/ $(genDir)/android/hardware/camera/device/1.0/",
+    srcs: [
+        ":android.hardware.camera.device@1.0_hal",
+    ],
+    out: [
+        "android/hardware/camera/device/1.0/CameraDevice.vts.h",
+        "android/hardware/camera/device/1.0/CameraDeviceCallback.vts.h",
+        "android/hardware/camera/device/1.0/CameraDevicePreviewCallback.vts.h",
+        "android/hardware/camera/device/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.camera.device@1.0-vts.profiler",
+    generated_sources: ["android.hardware.camera.device@1.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.camera.device@1.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.camera.device@1.0-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.camera.device@1.0",
+        "android.hardware.camera.common@1.0",
+        "android.hardware.camera.common@1.0-vts.profiler",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.graphics.common@1.0-vts.profiler",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/camera/device/V3_2/Android.bp b/camera/device/V3_2/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/camera/device/V3_2/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/camera/device/V3_2/build/Android.bp b/camera/device/V3_2/build/Android.bp
new file mode 100644
index 0000000..e6fe567
--- /dev/null
+++ b/camera/device/V3_2/build/Android.bp
@@ -0,0 +1,163 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.camera.device@3.2-vts.spec",
+    srcs: [
+        ":android.hardware.camera.device@3.2_hal",
+    ],
+    out: [
+        "android/hardware/camera/device/3.2/CameraDevice.vts",
+        "android/hardware/camera/device/3.2/CameraDeviceCallback.vts",
+        "android/hardware/camera/device/3.2/CameraDeviceSession.vts",
+        "android/hardware/camera/device/3.2/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.camera.device@3.2-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.device@3.2 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/camera/device/3.2/ $(genDir)/android/hardware/camera/device/3.2/",
+    srcs: [
+        ":android.hardware.camera.device@3.2_hal",
+    ],
+    out: [
+        "android/hardware/camera/device/3.2/CameraDevice.vts.cpp",
+        "android/hardware/camera/device/3.2/CameraDeviceCallback.vts.cpp",
+        "android/hardware/camera/device/3.2/CameraDeviceSession.vts.cpp",
+        "android/hardware/camera/device/3.2/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.camera.device@3.2-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.device@3.2 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/camera/device/3.2/ $(genDir)/android/hardware/camera/device/3.2/",
+    srcs: [
+        ":android.hardware.camera.device@3.2_hal",
+    ],
+    out: [
+        "android/hardware/camera/device/3.2/CameraDevice.vts.h",
+        "android/hardware/camera/device/3.2/CameraDeviceCallback.vts.h",
+        "android/hardware/camera/device/3.2/CameraDeviceSession.vts.h",
+        "android/hardware/camera/device/3.2/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.camera.device@3.2-vts.driver",
+    generated_sources: ["android.hardware.camera.device@3.2-vts.driver_genc++"],
+    generated_headers: ["android.hardware.camera.device@3.2-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.camera.device@3.2-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.camera.device@3.2",
+        "android.hardware.camera.common@1.0",
+        "android.hardware.camera.common@1.0-vts.driver",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.graphics.common@1.0-vts.driver",
+    ],
+    export_shared_lib_headers: [
+        "android.hardware.camera.common@1.0",
+        "android.hardware.camera.common@1.0-vts.driver",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.graphics.common@1.0-vts.driver",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.camera.device@3.2-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.device@3.2 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/camera/device/3.2/ $(genDir)/android/hardware/camera/device/3.2/",
+    srcs: [
+        ":android.hardware.camera.device@3.2_hal",
+    ],
+    out: [
+        "android/hardware/camera/device/3.2/CameraDevice.vts.cpp",
+        "android/hardware/camera/device/3.2/CameraDeviceCallback.vts.cpp",
+        "android/hardware/camera/device/3.2/CameraDeviceSession.vts.cpp",
+        "android/hardware/camera/device/3.2/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.camera.device@3.2-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.device@3.2 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/camera/device/3.2/ $(genDir)/android/hardware/camera/device/3.2/",
+    srcs: [
+        ":android.hardware.camera.device@3.2_hal",
+    ],
+    out: [
+        "android/hardware/camera/device/3.2/CameraDevice.vts.h",
+        "android/hardware/camera/device/3.2/CameraDeviceCallback.vts.h",
+        "android/hardware/camera/device/3.2/CameraDeviceSession.vts.h",
+        "android/hardware/camera/device/3.2/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.camera.device@3.2-vts.profiler",
+    generated_sources: ["android.hardware.camera.device@3.2-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.camera.device@3.2-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.camera.device@3.2-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.camera.device@3.2",
+        "android.hardware.camera.common@1.0",
+        "android.hardware.camera.common@1.0-vts.profiler",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.graphics.common@1.0-vts.profiler",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/camera/metadata/V3_2/Android.bp b/camera/metadata/V3_2/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/camera/metadata/V3_2/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/camera/metadata/V3_2/build/Android.bp b/camera/metadata/V3_2/build/Android.bp
new file mode 100644
index 0000000..c6693f5
--- /dev/null
+++ b/camera/metadata/V3_2/build/Android.bp
@@ -0,0 +1,139 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.camera.metadata@3.2-vts.spec",
+    srcs: [
+        ":android.hardware.camera.metadata@3.2_hal",
+    ],
+    out: [
+        "android/hardware/camera/metadata/3.2/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.camera.metadata@3.2-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.metadata@3.2 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/camera/metadata/3.2/ $(genDir)/android/hardware/camera/metadata/3.2/",
+    srcs: [
+        ":android.hardware.camera.metadata@3.2_hal",
+    ],
+    out: [
+        "android/hardware/camera/metadata/3.2/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.camera.metadata@3.2-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.metadata@3.2 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/camera/metadata/3.2/ $(genDir)/android/hardware/camera/metadata/3.2/",
+    srcs: [
+        ":android.hardware.camera.metadata@3.2_hal",
+    ],
+    out: [
+        "android/hardware/camera/metadata/3.2/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.camera.metadata@3.2-vts.driver",
+    generated_sources: ["android.hardware.camera.metadata@3.2-vts.driver_genc++"],
+    generated_headers: ["android.hardware.camera.metadata@3.2-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.camera.metadata@3.2-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.camera.metadata@3.2",
+        
+    ],
+    export_shared_lib_headers: [
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.camera.metadata@3.2-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.metadata@3.2 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/camera/metadata/3.2/ $(genDir)/android/hardware/camera/metadata/3.2/",
+    srcs: [
+        ":android.hardware.camera.metadata@3.2_hal",
+    ],
+    out: [
+        "android/hardware/camera/metadata/3.2/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.camera.metadata@3.2-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.metadata@3.2 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/camera/metadata/3.2/ $(genDir)/android/hardware/camera/metadata/3.2/",
+    srcs: [
+        ":android.hardware.camera.metadata@3.2_hal",
+    ],
+    out: [
+        "android/hardware/camera/metadata/3.2/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.camera.metadata@3.2-vts.profiler",
+    generated_sources: ["android.hardware.camera.metadata@3.2-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.camera.metadata@3.2-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.camera.metadata@3.2-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.camera.metadata@3.2",
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/camera/provider/V2_4/Android.bp b/camera/provider/V2_4/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/camera/provider/V2_4/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/camera/provider/V2_4/build/Android.bp b/camera/provider/V2_4/build/Android.bp
new file mode 100644
index 0000000..6ae12c2
--- /dev/null
+++ b/camera/provider/V2_4/build/Android.bp
@@ -0,0 +1,165 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.camera.provider@2.4-vts.spec",
+    srcs: [
+        ":android.hardware.camera.provider@2.4_hal",
+    ],
+    out: [
+        "android/hardware/camera/provider/2.4/CameraProvider.vts",
+        "android/hardware/camera/provider/2.4/CameraProviderCallback.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.camera.provider@2.4-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.provider@2.4 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/camera/provider/2.4/ $(genDir)/android/hardware/camera/provider/2.4/",
+    srcs: [
+        ":android.hardware.camera.provider@2.4_hal",
+    ],
+    out: [
+        "android/hardware/camera/provider/2.4/CameraProvider.vts.cpp",
+        "android/hardware/camera/provider/2.4/CameraProviderCallback.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.camera.provider@2.4-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.provider@2.4 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/camera/provider/2.4/ $(genDir)/android/hardware/camera/provider/2.4/",
+    srcs: [
+        ":android.hardware.camera.provider@2.4_hal",
+    ],
+    out: [
+        "android/hardware/camera/provider/2.4/CameraProvider.vts.h",
+        "android/hardware/camera/provider/2.4/CameraProviderCallback.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.camera.provider@2.4-vts.driver",
+    generated_sources: ["android.hardware.camera.provider@2.4-vts.driver_genc++"],
+    generated_headers: ["android.hardware.camera.provider@2.4-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.camera.provider@2.4-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.camera.provider@2.4",
+        "android.hardware.camera.common@1.0",
+        "android.hardware.camera.common@1.0-vts.driver",
+        "android.hardware.camera.device@1.0",
+        "android.hardware.camera.device@1.0-vts.driver",
+        "android.hardware.camera.device@3.2",
+        "android.hardware.camera.device@3.2-vts.driver",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.graphics.common@1.0-vts.driver",
+    ],
+    export_shared_lib_headers: [
+        "android.hardware.camera.common@1.0",
+        "android.hardware.camera.common@1.0-vts.driver",
+        "android.hardware.camera.device@1.0",
+        "android.hardware.camera.device@1.0-vts.driver",
+        "android.hardware.camera.device@3.2",
+        "android.hardware.camera.device@3.2-vts.driver",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.graphics.common@1.0-vts.driver",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.camera.provider@2.4-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.provider@2.4 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/camera/provider/2.4/ $(genDir)/android/hardware/camera/provider/2.4/",
+    srcs: [
+        ":android.hardware.camera.provider@2.4_hal",
+    ],
+    out: [
+        "android/hardware/camera/provider/2.4/CameraProvider.vts.cpp",
+        "android/hardware/camera/provider/2.4/CameraProviderCallback.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.camera.provider@2.4-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.provider@2.4 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/camera/provider/2.4/ $(genDir)/android/hardware/camera/provider/2.4/",
+    srcs: [
+        ":android.hardware.camera.provider@2.4_hal",
+    ],
+    out: [
+        "android/hardware/camera/provider/2.4/CameraProvider.vts.h",
+        "android/hardware/camera/provider/2.4/CameraProviderCallback.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.camera.provider@2.4-vts.profiler",
+    generated_sources: ["android.hardware.camera.provider@2.4-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.camera.provider@2.4-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.camera.provider@2.4-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.camera.provider@2.4",
+        "android.hardware.camera.common@1.0",
+        "android.hardware.camera.common@1.0-vts.profiler",
+        "android.hardware.camera.device@1.0",
+        "android.hardware.camera.device@1.0-vts.profiler",
+        "android.hardware.camera.device@3.2",
+        "android.hardware.camera.device@3.2-vts.profiler",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.graphics.common@1.0-vts.profiler",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/camera/provider/V2_4/target/Android.mk b/camera/provider/V2_4/target/Android.mk
new file mode 100644
index 0000000..a179da3
--- /dev/null
+++ b/camera/provider/V2_4/target/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalCameraProviderV2_4Target
+VTS_CONFIG_SRC_DIR := testcases/hal/camera/provider/V2_4/target
+include test/vts/tools/build/Android.host_config.mk
diff --git a/camera/provider/V2_4/target/AndroidTest.xml b/camera/provider/V2_4/target/AndroidTest.xml
new file mode 100644
index 0000000..e000a31
--- /dev/null
+++ b/camera/provider/V2_4/target/AndroidTest.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalCameraProviderV2_4Target test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetTest.push"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalCameraProviderV2_4Target"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalCameraProviderV2_4TargetTest/VtsHalCameraProviderV2_4TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="precondition-lshal" value="android.hardware.camera.provider@2.4"/>
+        <option name="skip-on-64bit-abi" value="true"/>
+        <option name="test-timeout" value="15m"/>
+    </test>
+</configuration>
diff --git a/camera/provider/V2_4/target_profiling/Android.mk b/camera/provider/V2_4/target_profiling/Android.mk
new file mode 100644
index 0000000..16f080e
--- /dev/null
+++ b/camera/provider/V2_4/target_profiling/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalCameraProviderV2_4TargetProfiling
+VTS_CONFIG_SRC_DIR := testcases/hal/camera/provider/V2_4/target_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/camera/provider/V2_4/target_profiling/AndroidTest.xml b/camera/provider/V2_4/target_profiling/AndroidTest.xml
new file mode 100644
index 0000000..c47be32
--- /dev/null
+++ b/camera/provider/V2_4/target_profiling/AndroidTest.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalCameraProviderV2_4TargetProfiling test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetProfilingTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="DATA/lib/android.hardware.camera.common@1.0-vts.profiler.so->/data/local/tmp/32/android.hardware.camera.common@1.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.camera.common@1.0-vts.profiler.so->/data/local/tmp/64/android.hardware.camera.common@1.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib/android.hardware.camera.device@1.0-vts.profiler.so->/data/local/tmp/32/android.hardware.camera.device@1.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.camera.device@1.0-vts.profiler.so->/data/local/tmp/64/android.hardware.camera.device@1.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib/android.hardware.camera.device@3.2-vts.profiler.so->/data/local/tmp/32/android.hardware.camera.device@3.2-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.camera.device@3.2-vts.profiler.so->/data/local/tmp/64/android.hardware.camera.device@3.2-vts.profiler.so"/>
+        <option name="push" value="DATA/lib/android.hardware.graphics.common@1.0-vts.profiler.so->/data/local/tmp/32/android.hardware.graphics.common@1.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.graphics.common@1.0-vts.profiler.so->/data/local/tmp/64/android.hardware.graphics.common@1.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib/android.hardware.camera.provider@2.4-vts.profiler.so->/data/local/tmp/32/android.hardware.camera.provider@2.4-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.camera.provider@2.4-vts.profiler.so->/data/local/tmp/64/android.hardware.camera.provider@2.4-vts.profiler.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalCameraProviderV2_4TargetProfiling"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalCameraProviderV2_4TargetTest/VtsHalCameraProviderV2_4TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="enable-profiling" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.camera.provider@2.4"/>
+        <option name="skip-on-64bit-abi" value="true"/>
+        <option name="test-timeout" value="45m"/>
+    </test>
+</configuration>
diff --git a/configstore/V1_0/target/Android.mk b/configstore/V1_0/target/Android.mk
new file mode 100644
index 0000000..7b6dbce
--- /dev/null
+++ b/configstore/V1_0/target/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalConfigstoreV1_0Target
+VTS_CONFIG_SRC_DIR := testcases/hal/configstore/V1_0/target
+include test/vts/tools/build/Android.host_config.mk
diff --git a/configstore/V1_0/target/AndroidTest.xml b/configstore/V1_0/target/AndroidTest.xml
new file mode 100644
index 0000000..aaf4674
--- /dev/null
+++ b/configstore/V1_0/target/AndroidTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalConfigstoreV1_0Target test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetTest.push"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalConfigstoreV1_0Target"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalConfigstoreV1_0TargetTest/VtsHalConfigstoreV1_0TargetTest" />
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalConfigstoreV1_0TargetTest/VtsHalConfigstoreV1_0TargetTest" />
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.configstore@1.0"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/configstore/V1_0/target_profiling/Android.mk b/configstore/V1_0/target_profiling/Android.mk
new file mode 100644
index 0000000..e9f8597
--- /dev/null
+++ b/configstore/V1_0/target_profiling/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalConfigstoreV1_0TargetProfiling
+VTS_CONFIG_SRC_DIR := testcases/hal/configstore/V1_0/target_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/configstore/V1_0/target_profiling/AndroidTest.xml b/configstore/V1_0/target_profiling/AndroidTest.xml
new file mode 100644
index 0000000..2fe3de6
--- /dev/null
+++ b/configstore/V1_0/target_profiling/AndroidTest.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalConfigstoreV1_0TargetProfiling test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetProfilingTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="DATA/lib/android.hardware.configstore@1.0-vts.profiler.so->/data/local/tmp/32/android.hardware.configstore@1.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.configstore@1.0-vts.profiler.so->/data/local/tmp/64/android.hardware.configstore@1.0-vts.profiler.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalConfigstoreV1_0TargetProfiling"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalConfigstoreV1_0TargetTest/VtsHalConfigstoreV1_0TargetTest" />
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalConfigstoreV1_0TargetTest/VtsHalConfigstoreV1_0TargetTest" />
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="enable-profiling" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.configstore@1.0"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/contexthub/Android.bp b/contexthub/Android.bp
new file mode 100644
index 0000000..cdc8905
--- /dev/null
+++ b/contexthub/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "V1_0",
+]
diff --git a/contexthub/V1_0/Android.bp b/contexthub/V1_0/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/contexthub/V1_0/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/contexthub/V1_0/__init__.py b/contexthub/V1_0/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/contexthub/V1_0/__init__.py
diff --git a/contexthub/V1_0/build/Android.bp b/contexthub/V1_0/build/Android.bp
new file mode 100644
index 0000000..3a123cd
--- /dev/null
+++ b/contexthub/V1_0/build/Android.bp
@@ -0,0 +1,149 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.contexthub@1.0-vts.spec",
+    srcs: [
+        ":android.hardware.contexthub@1.0_hal",
+    ],
+    out: [
+        "android/hardware/contexthub/1.0/Contexthub.vts",
+        "android/hardware/contexthub/1.0/ContexthubCallback.vts",
+        "android/hardware/contexthub/1.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.contexthub@1.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.contexthub@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/contexthub/1.0/ $(genDir)/android/hardware/contexthub/1.0/",
+    srcs: [
+        ":android.hardware.contexthub@1.0_hal",
+    ],
+    out: [
+        "android/hardware/contexthub/1.0/Contexthub.vts.cpp",
+        "android/hardware/contexthub/1.0/ContexthubCallback.vts.cpp",
+        "android/hardware/contexthub/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.contexthub@1.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.contexthub@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/contexthub/1.0/ $(genDir)/android/hardware/contexthub/1.0/",
+    srcs: [
+        ":android.hardware.contexthub@1.0_hal",
+    ],
+    out: [
+        "android/hardware/contexthub/1.0/Contexthub.vts.h",
+        "android/hardware/contexthub/1.0/ContexthubCallback.vts.h",
+        "android/hardware/contexthub/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.contexthub@1.0-vts.driver",
+    generated_sources: ["android.hardware.contexthub@1.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.contexthub@1.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.contexthub@1.0-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.contexthub@1.0",
+        
+    ],
+    export_shared_lib_headers: [
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.contexthub@1.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.contexthub@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/contexthub/1.0/ $(genDir)/android/hardware/contexthub/1.0/",
+    srcs: [
+        ":android.hardware.contexthub@1.0_hal",
+    ],
+    out: [
+        "android/hardware/contexthub/1.0/Contexthub.vts.cpp",
+        "android/hardware/contexthub/1.0/ContexthubCallback.vts.cpp",
+        "android/hardware/contexthub/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.contexthub@1.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.contexthub@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/contexthub/1.0/ $(genDir)/android/hardware/contexthub/1.0/",
+    srcs: [
+        ":android.hardware.contexthub@1.0_hal",
+    ],
+    out: [
+        "android/hardware/contexthub/1.0/Contexthub.vts.h",
+        "android/hardware/contexthub/1.0/ContexthubCallback.vts.h",
+        "android/hardware/contexthub/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.contexthub@1.0-vts.profiler",
+    generated_sources: ["android.hardware.contexthub@1.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.contexthub@1.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.contexthub@1.0-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.contexthub@1.0",
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/contexthub/V1_0/host/Android.mk b/contexthub/V1_0/host/Android.mk
new file mode 100644
index 0000000..6c60251
--- /dev/null
+++ b/contexthub/V1_0/host/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalContexthubV1_0Host
+VTS_CONFIG_SRC_DIR := testcases/hal/contexthub/V1_0/host
+include test/vts/tools/build/Android.host_config.mk
diff --git a/contexthub/V1_0/host/AndroidTest.xml b/contexthub/V1_0/host/AndroidTest.xml
new file mode 100644
index 0000000..b06a420
--- /dev/null
+++ b/contexthub/V1_0/host/AndroidTest.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalContexthubV1_0Host test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlHostTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="spec/hardware/interfaces/contexthub/1.0/vts/Contexthub.vts->/data/local/tmp/spec/android/hardware/contexthub/1.0/Contexthub.vts"/>
+        <option name="push" value="spec/hardware/interfaces/contexthub/1.0/vts/ContexthubCallback.vts->/data/local/tmp/spec/android/hardware/contexthub/1.0/ContexthubCallback.vts"/>
+        <option name="push" value="spec/hardware/interfaces/contexthub/1.0/vts/types.vts->/data/local/tmp/spec/android/hardware/contexthub/1.0/types.vts"/>
+        <option name="push" value="DATA/lib/android.hardware.contexthub@1.0-vts.driver.so->/data/local/tmp/32/android.hardware.contexthub@1.0-vts.driver.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.contexthub@1.0-vts.driver.so->/data/local/tmp/64/android.hardware.contexthub@1.0-vts.driver.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalContexthubV1_0Host"/>
+        <option name="test-case-path" value="vts/testcases/hal/contexthub/V1_0/host/VtsHalContexthubV1_0HostTest"/>
+        <option name="precondition-lshal" value="android.hardware.contexthub@1.0"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/contexthub/V1_0/host/VtsHalContexthubV1_0HostTest.py b/contexthub/V1_0/host/VtsHalContexthubV1_0HostTest.py
new file mode 100644
index 0000000..51b3837
--- /dev/null
+++ b/contexthub/V1_0/host/VtsHalContexthubV1_0HostTest.py
@@ -0,0 +1,140 @@
+#!/usr/bin/env python
+#
+# Copyright (C) 2016 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.
+#
+
+import logging
+import threading
+import time
+
+from vts.runners.host import asserts
+from vts.runners.host import base_test
+from vts.runners.host import test_runner
+from vts.utils.python.controllers import android_device
+from vts.utils.python.precondition import precondition_utils
+
+
+class ContextHubCallback:
+    def __init__(self, hub_id):
+        self.hub_id = hub_id
+        self.event = threading.Event()
+
+    def wait_on_callback(timeout=None):
+        """Wait on the next callback in this object to be invoked.
+
+        Args:
+            timeout: (fractional) seconds to wait before timing out, or None
+
+        Returns:
+            True when a callback was received, False if a timeout occurred
+        """
+        return self.event.wait(timeout)
+
+    def prepare():
+        # TODO: cleaner method of doing this, so that we clear --> call HAL
+        # method --> wait for CB, all wrapped into one
+        self.event.clear()
+
+    def ignore_client_msg(self, msg):
+        logging.debug("Ignoring client message from hubId %s: %s", self.hub_id, msg)
+        self.event.set()
+
+    def ignore_txn_result(self, txnId, result):
+        logging.debug("Ignoring transaction result from hubId %s: %s", self.hub_id, msg)
+        self.event.set()
+
+    def ignore_hub_event(self, evt):
+        logging.debug("Ignoring hub event from hubId %s: %s", self.hub_id, evt)
+        self.event.set()
+
+    def ignore_apps_info(self, appInfo):
+        logging.debug("Ignoring app info data from hubId %s: %s", self.hub_id, appInfo)
+        self.event.set()
+
+
+class ContexthubHidlTest(base_test.BaseTestClass):
+    """A set of test cases for the context hub HIDL HAL"""
+
+    def setUpClass(self):
+        """Creates a mirror and turns on the framework-layer CONTEXTHUB service."""
+        self.dut = self.registerController(android_device)[0]
+
+        self.dut.shell.InvokeTerminal("one")
+        self.dut.shell.one.Execute("setenforce 0")  # SELinux permissive mode
+        if not precondition_utils.CanRunHidlHalTest(
+            self, self.dut, self.dut.shell.one):
+            self._skip_all_testcases = True
+            return
+
+        if self.profiling.enabled:
+            self.profiling.EnableVTSProfiling(self.dut.shell.one)
+
+        # Bring down the Android runtime so it doesn't interfere with the test
+        #self.dut.shell.one.Execute("stop")
+
+        self.dut.hal.InitHidlHal(
+            target_type="contexthub",
+            target_basepaths=self.dut.libPaths,
+            target_version=1.0,
+            target_package="android.hardware.contexthub",
+            target_component_name="IContexthub",
+            hw_binder_service_name="contexthub",
+            bits=int(self.abi_bitness))
+
+        self.types = self.dut.hal.contexthub.GetHidlTypeInterface("types")
+        logging.info("types: %s", self.types)
+
+    def tearDownClass(self):
+        # Restart the Android runtime
+        #self.dut.shell.one.Execute("start")
+        if not self._skip_all_testcases and self.profiling.enabled:
+            self.profiling.ProcessAndUploadTraceData()
+
+    def tearDown(self):
+        """Process trace data.
+        """
+        if self.profiling.enabled:
+            self.profiling.ProcessTraceDataForTestCase(self.dut)
+            self.profiling.DisableVTSProfiling(self.dut.shell.one)
+
+    def testContexthubBasic(self):
+        logging.info("About to call gethubs!!!")
+        hubs = self.dut.hal.contexthub.getHubs()
+        logging.info("Got result: %s", hubs)
+        #
+        #hub_id = 0 # TODO: should get this from hub list
+        #
+        #cb = ContextHubCallback(hub_id)
+        #client_callback = self.dut.hal.contexthub.GetHidlCallbackInterface(
+        #    "IContexthubCallback",
+        #    handleClientMsg=cb.ignore_client_msg,
+        #    handleTxnResult=cb.ignore_txn_result,
+        #    handleHubEvent=cb.ignore_hub_event,
+        #    handleAppsInfo=cb.ignore_apps_info)
+        #
+        #logging.info("About to call registerCallback")
+        #result = self.dut.hal.contexthub.registerCallback(hub_id,
+        #                                                  client_callback)
+        #logging.info("registerCallback returned result: %s", result)
+        #
+        #logging.info("About to call queryApps")
+        #result = self.dut.hal.contexthub.queryApps(hub_id)
+        #logging.info("queryApps returned result: %s", result)
+        #
+        #got_callback = cb.wait_on_callback(5)
+        #logging.info("Wait on callback returned %s", got_callback)
+
+if __name__ == "__main__":
+    test_runner.main()
diff --git a/contexthub/V1_0/host/__init__.py b/contexthub/V1_0/host/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/contexthub/V1_0/host/__init__.py
diff --git a/contexthub/V1_0/target/Android.mk b/contexthub/V1_0/target/Android.mk
new file mode 100644
index 0000000..5e7d7a9
--- /dev/null
+++ b/contexthub/V1_0/target/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalContexthubV1_0Target
+VTS_CONFIG_SRC_DIR := testcases/hal/contexthub/V1_0/target
+include test/vts/tools/build/Android.host_config.mk
diff --git a/contexthub/V1_0/target/AndroidTest.xml b/contexthub/V1_0/target/AndroidTest.xml
new file mode 100644
index 0000000..45224fb
--- /dev/null
+++ b/contexthub/V1_0/target/AndroidTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalContexthubV1_0Target test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetTest.push"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalContexthubV1_0Target"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalContexthubV1_0TargetTest/VtsHalContexthubV1_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalContexthubV1_0TargetTest/VtsHalContexthubV1_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.contexthub@1.0"/>
+        <option name="test-timeout" value="15m"/>
+    </test>
+</configuration>
diff --git a/contexthub/V1_0/target_profiling/Android.mk b/contexthub/V1_0/target_profiling/Android.mk
new file mode 100644
index 0000000..40ebb6c
--- /dev/null
+++ b/contexthub/V1_0/target_profiling/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalContexthubV1_0TargetProfiling
+VTS_CONFIG_SRC_DIR := testcases/hal/contexthub/V1_0/target_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/contexthub/V1_0/target_profiling/AndroidTest.xml b/contexthub/V1_0/target_profiling/AndroidTest.xml
new file mode 100644
index 0000000..e75f7ea
--- /dev/null
+++ b/contexthub/V1_0/target_profiling/AndroidTest.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalContexthubV1_0TargetProfiling test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetProfilingTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="DATA/lib/android.hardware.contexthub@1.0-vts.profiler.so->/data/local/tmp/32/android.hardware.contexthub@1.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.contexthub@1.0-vts.profiler.so->/data/local/tmp/64/android.hardware.contexthub@1.0-vts.profiler.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalContexthubV1_0TargetProfiling"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalContexthubV1_0TargetTest/VtsHalContexthubV1_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalContexthubV1_0TargetTest/VtsHalContexthubV1_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="enable-profiling" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.contexthub@1.0"/>
+        <option name="test-timeout" value="15m"/>
+    </test>
+</configuration>
diff --git a/contexthub/V1_0/target_replay/Android.mk b/contexthub/V1_0/target_replay/Android.mk
new file mode 100644
index 0000000..d935d2b
--- /dev/null
+++ b/contexthub/V1_0/target_replay/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalContexthubV1_0TargetReplay
+VTS_CONFIG_SRC_DIR := testcases/hal/contexthub/V1_0/target_replay
+include test/vts/tools/build/Android.host_config.mk
diff --git a/contexthub/V1_0/target_replay/AndroidTest.xml b/contexthub/V1_0/target_replay/AndroidTest.xml
new file mode 100644
index 0000000..b349226
--- /dev/null
+++ b/contexthub/V1_0/target_replay/AndroidTest.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalContexthubV1_0TargetReplay test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlHostTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="spec/hardware/interfaces/contexthub/1.0/vts/Contexthub.vts->/data/local/tmp/spec/android/hardware/contexthub/1.0/Contexthub.vts"/>
+        <option name="push" value="spec/hardware/interfaces/contexthub/1.0/vts/ContexthubCallback.vts->/data/local/tmp/spec/android/hardware/contexthub/1.0/ContexthubCallback.vts"/>
+        <option name="push" value="spec/hardware/interfaces/contexthub/1.0/vts/types.vts->/data/local/tmp/spec/android/hardware/contexthub/1.0/types.vts"/>
+        <option name="push" value="DATA/lib/android.hardware.contexthub@1.0-vts.driver.so->/data/local/tmp/32/android.hardware.contexthub@1.0-vts.driver.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.contexthub@1.0-vts.driver.so->/data/local/tmp/64/android.hardware.contexthub@1.0-vts.driver.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalContexthubV1_0TargetReplay"/>
+        <option name="binary-test-type" value="hal_hidl_replay_test"/>
+        <option name="hal-hidl-replay-test-trace-path" value="test/vts-testcase/hal-trace/contexthub/V1_0/android.hardware.contexthub@1.0_sailfish_1.vts.trace"/>
+        <option name="hal-hidl-package-name" value="android.hardware.contexthub@1.0"/>
+        <option name="precondition-lshal" value="android.hardware.contexthub@1.0"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/contexthub/__init__.py b/contexthub/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/contexthub/__init__.py
diff --git a/drm/Android.bp b/drm/Android.bp
new file mode 100644
index 0000000..cdc8905
--- /dev/null
+++ b/drm/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "V1_0",
+]
diff --git a/drm/V1_0/Android.bp b/drm/V1_0/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/drm/V1_0/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/drm/V1_0/build/Android.bp b/drm/V1_0/build/Android.bp
new file mode 100644
index 0000000..fc920a2
--- /dev/null
+++ b/drm/V1_0/build/Android.bp
@@ -0,0 +1,164 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.drm@1.0-vts.spec",
+    srcs: [
+        ":android.hardware.drm@1.0_hal",
+    ],
+    out: [
+        "android/hardware/drm/1.0/CryptoFactory.vts",
+        "android/hardware/drm/1.0/CryptoPlugin.vts",
+        "android/hardware/drm/1.0/DrmFactory.vts",
+        "android/hardware/drm/1.0/DrmPlugin.vts",
+        "android/hardware/drm/1.0/DrmPluginListener.vts",
+        "android/hardware/drm/1.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.drm@1.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.drm@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/drm/1.0/ $(genDir)/android/hardware/drm/1.0/",
+    srcs: [
+        ":android.hardware.drm@1.0_hal",
+    ],
+    out: [
+        "android/hardware/drm/1.0/CryptoFactory.vts.cpp",
+        "android/hardware/drm/1.0/CryptoPlugin.vts.cpp",
+        "android/hardware/drm/1.0/DrmFactory.vts.cpp",
+        "android/hardware/drm/1.0/DrmPlugin.vts.cpp",
+        "android/hardware/drm/1.0/DrmPluginListener.vts.cpp",
+        "android/hardware/drm/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.drm@1.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.drm@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/drm/1.0/ $(genDir)/android/hardware/drm/1.0/",
+    srcs: [
+        ":android.hardware.drm@1.0_hal",
+    ],
+    out: [
+        "android/hardware/drm/1.0/CryptoFactory.vts.h",
+        "android/hardware/drm/1.0/CryptoPlugin.vts.h",
+        "android/hardware/drm/1.0/DrmFactory.vts.h",
+        "android/hardware/drm/1.0/DrmPlugin.vts.h",
+        "android/hardware/drm/1.0/DrmPluginListener.vts.h",
+        "android/hardware/drm/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.drm@1.0-vts.driver",
+    generated_sources: ["android.hardware.drm@1.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.drm@1.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.drm@1.0-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.drm@1.0",
+        
+    ],
+    export_shared_lib_headers: [
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.drm@1.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.drm@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/drm/1.0/ $(genDir)/android/hardware/drm/1.0/",
+    srcs: [
+        ":android.hardware.drm@1.0_hal",
+    ],
+    out: [
+        "android/hardware/drm/1.0/CryptoFactory.vts.cpp",
+        "android/hardware/drm/1.0/CryptoPlugin.vts.cpp",
+        "android/hardware/drm/1.0/DrmFactory.vts.cpp",
+        "android/hardware/drm/1.0/DrmPlugin.vts.cpp",
+        "android/hardware/drm/1.0/DrmPluginListener.vts.cpp",
+        "android/hardware/drm/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.drm@1.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.drm@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/drm/1.0/ $(genDir)/android/hardware/drm/1.0/",
+    srcs: [
+        ":android.hardware.drm@1.0_hal",
+    ],
+    out: [
+        "android/hardware/drm/1.0/CryptoFactory.vts.h",
+        "android/hardware/drm/1.0/CryptoPlugin.vts.h",
+        "android/hardware/drm/1.0/DrmFactory.vts.h",
+        "android/hardware/drm/1.0/DrmPlugin.vts.h",
+        "android/hardware/drm/1.0/DrmPluginListener.vts.h",
+        "android/hardware/drm/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.drm@1.0-vts.profiler",
+    generated_sources: ["android.hardware.drm@1.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.drm@1.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.drm@1.0-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.drm@1.0",
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/drm/V1_0/target/Android.mk b/drm/V1_0/target/Android.mk
new file mode 100644
index 0000000..22d31f1
--- /dev/null
+++ b/drm/V1_0/target/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalDrmV1_0Target
+VTS_CONFIG_SRC_DIR := testcases/hal/drm/V1_0/target
+include test/vts/tools/build/Android.host_config.mk
diff --git a/drm/V1_0/target/AndroidTest.xml b/drm/V1_0/target/AndroidTest.xml
new file mode 100644
index 0000000..9570ee7
--- /dev/null
+++ b/drm/V1_0/target/AndroidTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalDrmV1_0Target test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetTest.push"/>
+        <option name="push" value="DATA/lib/drm-vts-test-libs->/data/local/tmp/32/lib"/>
+        <option name="push" value="DATA/lib64/drm-vts-test-libs->/data/local/tmp/64/lib"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalDrmV1_0Target"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalDrmV1_0TargetTest/VtsHalDrmV1_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalDrmV1_0TargetTest/VtsHalDrmV1_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="precondition-lshal" value="android.hardware.drm@1.0"/>
+        <option name="test-timeout" value="15m"/>
+    </test>
+</configuration>
diff --git a/drm/V1_0/target_profiling/Android.mk b/drm/V1_0/target_profiling/Android.mk
new file mode 100644
index 0000000..609e3ec
--- /dev/null
+++ b/drm/V1_0/target_profiling/Android.mk
@@ -0,0 +1,26 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(call all-subdir-makefiles)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalDrmV1_0TargetProfiling
+VTS_CONFIG_SRC_DIR := testcases/hal/drm/V1_0/target_profiling
+
+include test/vts/tools/build/Android.host_config.mk
diff --git a/drm/V1_0/target_profiling/AndroidTest.xml b/drm/V1_0/target_profiling/AndroidTest.xml
new file mode 100644
index 0000000..f936094
--- /dev/null
+++ b/drm/V1_0/target_profiling/AndroidTest.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalDrmV1_0TargetProfiling test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetProfilingTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="DATA/lib/drm-vts-test-libs->/data/local/tmp/32/lib"/>
+        <option name="push" value="DATA/lib64/drm-vts-test-libs->/data/local/tmp/64/lib"/>
+        <option name="push" value="DATA/lib/android.hardware.drm@1.0-vts.profiler.so->/data/local/tmp/32/android.hardware.drm@1.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.drm@1.0-vts.profiler.so->/data/local/tmp/64/android.hardware.drm@1.0-vts.profiler.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalDrmV1_0TargetProfiling"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalDrmV1_0TargetTest/VtsHalDrmV1_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalDrmV1_0TargetTest/VtsHalDrmV1_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="enable-profiling" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.drm@1.0"/>
+        <option name="test-timeout" value="15m"/>
+    </test>
+</configuration>
diff --git a/dumpstate/Android.bp b/dumpstate/Android.bp
new file mode 100644
index 0000000..cdc8905
--- /dev/null
+++ b/dumpstate/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "V1_0",
+]
diff --git a/dumpstate/V1_0/Android.bp b/dumpstate/V1_0/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/dumpstate/V1_0/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/dumpstate/V1_0/build/Android.bp b/dumpstate/V1_0/build/Android.bp
new file mode 100644
index 0000000..864644c
--- /dev/null
+++ b/dumpstate/V1_0/build/Android.bp
@@ -0,0 +1,139 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.dumpstate@1.0-vts.spec",
+    srcs: [
+        ":android.hardware.dumpstate@1.0_hal",
+    ],
+    out: [
+        "android/hardware/dumpstate/1.0/DumpstateDevice.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.dumpstate@1.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.dumpstate@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/dumpstate/1.0/ $(genDir)/android/hardware/dumpstate/1.0/",
+    srcs: [
+        ":android.hardware.dumpstate@1.0_hal",
+    ],
+    out: [
+        "android/hardware/dumpstate/1.0/DumpstateDevice.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.dumpstate@1.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.dumpstate@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/dumpstate/1.0/ $(genDir)/android/hardware/dumpstate/1.0/",
+    srcs: [
+        ":android.hardware.dumpstate@1.0_hal",
+    ],
+    out: [
+        "android/hardware/dumpstate/1.0/DumpstateDevice.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.dumpstate@1.0-vts.driver",
+    generated_sources: ["android.hardware.dumpstate@1.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.dumpstate@1.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.dumpstate@1.0-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.dumpstate@1.0",
+        
+    ],
+    export_shared_lib_headers: [
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.dumpstate@1.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.dumpstate@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/dumpstate/1.0/ $(genDir)/android/hardware/dumpstate/1.0/",
+    srcs: [
+        ":android.hardware.dumpstate@1.0_hal",
+    ],
+    out: [
+        "android/hardware/dumpstate/1.0/DumpstateDevice.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.dumpstate@1.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.dumpstate@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/dumpstate/1.0/ $(genDir)/android/hardware/dumpstate/1.0/",
+    srcs: [
+        ":android.hardware.dumpstate@1.0_hal",
+    ],
+    out: [
+        "android/hardware/dumpstate/1.0/DumpstateDevice.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.dumpstate@1.0-vts.profiler",
+    generated_sources: ["android.hardware.dumpstate@1.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.dumpstate@1.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.dumpstate@1.0-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.dumpstate@1.0",
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/gatekeeper/Android.bp b/gatekeeper/Android.bp
new file mode 100644
index 0000000..cdc8905
--- /dev/null
+++ b/gatekeeper/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "V1_0",
+]
diff --git a/gatekeeper/V1_0/Android.bp b/gatekeeper/V1_0/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/gatekeeper/V1_0/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/gatekeeper/V1_0/build/Android.bp b/gatekeeper/V1_0/build/Android.bp
new file mode 100644
index 0000000..7b0560f
--- /dev/null
+++ b/gatekeeper/V1_0/build/Android.bp
@@ -0,0 +1,144 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.gatekeeper@1.0-vts.spec",
+    srcs: [
+        ":android.hardware.gatekeeper@1.0_hal",
+    ],
+    out: [
+        "android/hardware/gatekeeper/1.0/Gatekeeper.vts",
+        "android/hardware/gatekeeper/1.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.gatekeeper@1.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.gatekeeper@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/gatekeeper/1.0/ $(genDir)/android/hardware/gatekeeper/1.0/",
+    srcs: [
+        ":android.hardware.gatekeeper@1.0_hal",
+    ],
+    out: [
+        "android/hardware/gatekeeper/1.0/Gatekeeper.vts.cpp",
+        "android/hardware/gatekeeper/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.gatekeeper@1.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.gatekeeper@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/gatekeeper/1.0/ $(genDir)/android/hardware/gatekeeper/1.0/",
+    srcs: [
+        ":android.hardware.gatekeeper@1.0_hal",
+    ],
+    out: [
+        "android/hardware/gatekeeper/1.0/Gatekeeper.vts.h",
+        "android/hardware/gatekeeper/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.gatekeeper@1.0-vts.driver",
+    generated_sources: ["android.hardware.gatekeeper@1.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.gatekeeper@1.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.gatekeeper@1.0-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.gatekeeper@1.0",
+        
+    ],
+    export_shared_lib_headers: [
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.gatekeeper@1.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.gatekeeper@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/gatekeeper/1.0/ $(genDir)/android/hardware/gatekeeper/1.0/",
+    srcs: [
+        ":android.hardware.gatekeeper@1.0_hal",
+    ],
+    out: [
+        "android/hardware/gatekeeper/1.0/Gatekeeper.vts.cpp",
+        "android/hardware/gatekeeper/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.gatekeeper@1.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.gatekeeper@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/gatekeeper/1.0/ $(genDir)/android/hardware/gatekeeper/1.0/",
+    srcs: [
+        ":android.hardware.gatekeeper@1.0_hal",
+    ],
+    out: [
+        "android/hardware/gatekeeper/1.0/Gatekeeper.vts.h",
+        "android/hardware/gatekeeper/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.gatekeeper@1.0-vts.profiler",
+    generated_sources: ["android.hardware.gatekeeper@1.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.gatekeeper@1.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.gatekeeper@1.0-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.gatekeeper@1.0",
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/gatekeeper/V1_0/target/Android.mk b/gatekeeper/V1_0/target/Android.mk
new file mode 100644
index 0000000..ff457e6
--- /dev/null
+++ b/gatekeeper/V1_0/target/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalGatekeeperV1_0Target
+VTS_CONFIG_SRC_DIR := testcases/hal/gatekeeper/V1_0/target
+include test/vts/tools/build/Android.host_config.mk
diff --git a/gatekeeper/V1_0/target/AndroidTest.xml b/gatekeeper/V1_0/target/AndroidTest.xml
new file mode 100644
index 0000000..5f3e3f0
--- /dev/null
+++ b/gatekeeper/V1_0/target/AndroidTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalGatekeeperV1_0Target test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetTest.push"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalGatekeeperV1_0Target"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalGatekeeperV1_0TargetTest/VtsHalGatekeeperV1_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalGatekeeperV1_0TargetTest/VtsHalGatekeeperV1_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.gatekeeper@1.0"/>
+        <option name="test-timeout" value="15m"/>
+    </test>
+</configuration>
diff --git a/gatekeeper/V1_0/target_profiling/Android.mk b/gatekeeper/V1_0/target_profiling/Android.mk
new file mode 100644
index 0000000..603a4c1
--- /dev/null
+++ b/gatekeeper/V1_0/target_profiling/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalGatekeeperV1_0TargetProfiling
+VTS_CONFIG_SRC_DIR := testcases/hal/gatekeeper/V1_0/target_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/gatekeeper/V1_0/target_profiling/AndroidTest.xml b/gatekeeper/V1_0/target_profiling/AndroidTest.xml
new file mode 100644
index 0000000..a533eb4
--- /dev/null
+++ b/gatekeeper/V1_0/target_profiling/AndroidTest.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalGatekeeperV1_0TargetProfiling test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetProfilingTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="DATA/lib/android.hardware.gatekeeper@1.0-vts.profiler.so->/data/local/tmp/32/android.hardware.gatekeeper@1.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.gatekeeper@1.0-vts.profiler.so->/data/local/tmp/64/android.hardware.gatekeeper@1.0-vts.profiler.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalGatekeeperV1_0TargetProfiling"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalGatekeeperV1_0TargetTest/VtsHalGatekeeperV1_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalGatekeeperV1_0TargetTest/VtsHalGatekeeperV1_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="enable-profiling" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.gatekeeper@1.0"/>
+        <option name="test-timeout" value="15m"/>
+    </test>
+</configuration>
diff --git a/gnss/Android.bp b/gnss/Android.bp
new file mode 100644
index 0000000..cdc8905
--- /dev/null
+++ b/gnss/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "V1_0",
+]
diff --git a/gnss/V1_0/Android.bp b/gnss/V1_0/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/gnss/V1_0/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/gnss/V1_0/build/Android.bp b/gnss/V1_0/build/Android.bp
new file mode 100644
index 0000000..6f0f25d
--- /dev/null
+++ b/gnss/V1_0/build/Android.bp
@@ -0,0 +1,239 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.gnss@1.0-vts.spec",
+    srcs: [
+        ":android.hardware.gnss@1.0_hal",
+    ],
+    out: [
+        "android/hardware/gnss/1.0/AGnss.vts",
+        "android/hardware/gnss/1.0/AGnssCallback.vts",
+        "android/hardware/gnss/1.0/AGnssRil.vts",
+        "android/hardware/gnss/1.0/AGnssRilCallback.vts",
+        "android/hardware/gnss/1.0/Gnss.vts",
+        "android/hardware/gnss/1.0/GnssBatching.vts",
+        "android/hardware/gnss/1.0/GnssBatchingCallback.vts",
+        "android/hardware/gnss/1.0/GnssCallback.vts",
+        "android/hardware/gnss/1.0/GnssConfiguration.vts",
+        "android/hardware/gnss/1.0/GnssDebug.vts",
+        "android/hardware/gnss/1.0/GnssGeofenceCallback.vts",
+        "android/hardware/gnss/1.0/GnssGeofencing.vts",
+        "android/hardware/gnss/1.0/GnssMeasurement.vts",
+        "android/hardware/gnss/1.0/GnssMeasurementCallback.vts",
+        "android/hardware/gnss/1.0/GnssNavigationMessage.vts",
+        "android/hardware/gnss/1.0/GnssNavigationMessageCallback.vts",
+        "android/hardware/gnss/1.0/GnssNi.vts",
+        "android/hardware/gnss/1.0/GnssNiCallback.vts",
+        "android/hardware/gnss/1.0/GnssXtra.vts",
+        "android/hardware/gnss/1.0/GnssXtraCallback.vts",
+        "android/hardware/gnss/1.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.gnss@1.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.gnss@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/gnss/1.0/ $(genDir)/android/hardware/gnss/1.0/",
+    srcs: [
+        ":android.hardware.gnss@1.0_hal",
+    ],
+    out: [
+        "android/hardware/gnss/1.0/AGnss.vts.cpp",
+        "android/hardware/gnss/1.0/AGnssCallback.vts.cpp",
+        "android/hardware/gnss/1.0/AGnssRil.vts.cpp",
+        "android/hardware/gnss/1.0/AGnssRilCallback.vts.cpp",
+        "android/hardware/gnss/1.0/Gnss.vts.cpp",
+        "android/hardware/gnss/1.0/GnssBatching.vts.cpp",
+        "android/hardware/gnss/1.0/GnssBatchingCallback.vts.cpp",
+        "android/hardware/gnss/1.0/GnssCallback.vts.cpp",
+        "android/hardware/gnss/1.0/GnssConfiguration.vts.cpp",
+        "android/hardware/gnss/1.0/GnssDebug.vts.cpp",
+        "android/hardware/gnss/1.0/GnssGeofenceCallback.vts.cpp",
+        "android/hardware/gnss/1.0/GnssGeofencing.vts.cpp",
+        "android/hardware/gnss/1.0/GnssMeasurement.vts.cpp",
+        "android/hardware/gnss/1.0/GnssMeasurementCallback.vts.cpp",
+        "android/hardware/gnss/1.0/GnssNavigationMessage.vts.cpp",
+        "android/hardware/gnss/1.0/GnssNavigationMessageCallback.vts.cpp",
+        "android/hardware/gnss/1.0/GnssNi.vts.cpp",
+        "android/hardware/gnss/1.0/GnssNiCallback.vts.cpp",
+        "android/hardware/gnss/1.0/GnssXtra.vts.cpp",
+        "android/hardware/gnss/1.0/GnssXtraCallback.vts.cpp",
+        "android/hardware/gnss/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.gnss@1.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.gnss@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/gnss/1.0/ $(genDir)/android/hardware/gnss/1.0/",
+    srcs: [
+        ":android.hardware.gnss@1.0_hal",
+    ],
+    out: [
+        "android/hardware/gnss/1.0/AGnss.vts.h",
+        "android/hardware/gnss/1.0/AGnssCallback.vts.h",
+        "android/hardware/gnss/1.0/AGnssRil.vts.h",
+        "android/hardware/gnss/1.0/AGnssRilCallback.vts.h",
+        "android/hardware/gnss/1.0/Gnss.vts.h",
+        "android/hardware/gnss/1.0/GnssBatching.vts.h",
+        "android/hardware/gnss/1.0/GnssBatchingCallback.vts.h",
+        "android/hardware/gnss/1.0/GnssCallback.vts.h",
+        "android/hardware/gnss/1.0/GnssConfiguration.vts.h",
+        "android/hardware/gnss/1.0/GnssDebug.vts.h",
+        "android/hardware/gnss/1.0/GnssGeofenceCallback.vts.h",
+        "android/hardware/gnss/1.0/GnssGeofencing.vts.h",
+        "android/hardware/gnss/1.0/GnssMeasurement.vts.h",
+        "android/hardware/gnss/1.0/GnssMeasurementCallback.vts.h",
+        "android/hardware/gnss/1.0/GnssNavigationMessage.vts.h",
+        "android/hardware/gnss/1.0/GnssNavigationMessageCallback.vts.h",
+        "android/hardware/gnss/1.0/GnssNi.vts.h",
+        "android/hardware/gnss/1.0/GnssNiCallback.vts.h",
+        "android/hardware/gnss/1.0/GnssXtra.vts.h",
+        "android/hardware/gnss/1.0/GnssXtraCallback.vts.h",
+        "android/hardware/gnss/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.gnss@1.0-vts.driver",
+    generated_sources: ["android.hardware.gnss@1.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.gnss@1.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.gnss@1.0-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.gnss@1.0",
+        
+    ],
+    export_shared_lib_headers: [
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.gnss@1.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.gnss@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/gnss/1.0/ $(genDir)/android/hardware/gnss/1.0/",
+    srcs: [
+        ":android.hardware.gnss@1.0_hal",
+    ],
+    out: [
+        "android/hardware/gnss/1.0/AGnss.vts.cpp",
+        "android/hardware/gnss/1.0/AGnssCallback.vts.cpp",
+        "android/hardware/gnss/1.0/AGnssRil.vts.cpp",
+        "android/hardware/gnss/1.0/AGnssRilCallback.vts.cpp",
+        "android/hardware/gnss/1.0/Gnss.vts.cpp",
+        "android/hardware/gnss/1.0/GnssBatching.vts.cpp",
+        "android/hardware/gnss/1.0/GnssBatchingCallback.vts.cpp",
+        "android/hardware/gnss/1.0/GnssCallback.vts.cpp",
+        "android/hardware/gnss/1.0/GnssConfiguration.vts.cpp",
+        "android/hardware/gnss/1.0/GnssDebug.vts.cpp",
+        "android/hardware/gnss/1.0/GnssGeofenceCallback.vts.cpp",
+        "android/hardware/gnss/1.0/GnssGeofencing.vts.cpp",
+        "android/hardware/gnss/1.0/GnssMeasurement.vts.cpp",
+        "android/hardware/gnss/1.0/GnssMeasurementCallback.vts.cpp",
+        "android/hardware/gnss/1.0/GnssNavigationMessage.vts.cpp",
+        "android/hardware/gnss/1.0/GnssNavigationMessageCallback.vts.cpp",
+        "android/hardware/gnss/1.0/GnssNi.vts.cpp",
+        "android/hardware/gnss/1.0/GnssNiCallback.vts.cpp",
+        "android/hardware/gnss/1.0/GnssXtra.vts.cpp",
+        "android/hardware/gnss/1.0/GnssXtraCallback.vts.cpp",
+        "android/hardware/gnss/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.gnss@1.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.gnss@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/gnss/1.0/ $(genDir)/android/hardware/gnss/1.0/",
+    srcs: [
+        ":android.hardware.gnss@1.0_hal",
+    ],
+    out: [
+        "android/hardware/gnss/1.0/AGnss.vts.h",
+        "android/hardware/gnss/1.0/AGnssCallback.vts.h",
+        "android/hardware/gnss/1.0/AGnssRil.vts.h",
+        "android/hardware/gnss/1.0/AGnssRilCallback.vts.h",
+        "android/hardware/gnss/1.0/Gnss.vts.h",
+        "android/hardware/gnss/1.0/GnssBatching.vts.h",
+        "android/hardware/gnss/1.0/GnssBatchingCallback.vts.h",
+        "android/hardware/gnss/1.0/GnssCallback.vts.h",
+        "android/hardware/gnss/1.0/GnssConfiguration.vts.h",
+        "android/hardware/gnss/1.0/GnssDebug.vts.h",
+        "android/hardware/gnss/1.0/GnssGeofenceCallback.vts.h",
+        "android/hardware/gnss/1.0/GnssGeofencing.vts.h",
+        "android/hardware/gnss/1.0/GnssMeasurement.vts.h",
+        "android/hardware/gnss/1.0/GnssMeasurementCallback.vts.h",
+        "android/hardware/gnss/1.0/GnssNavigationMessage.vts.h",
+        "android/hardware/gnss/1.0/GnssNavigationMessageCallback.vts.h",
+        "android/hardware/gnss/1.0/GnssNi.vts.h",
+        "android/hardware/gnss/1.0/GnssNiCallback.vts.h",
+        "android/hardware/gnss/1.0/GnssXtra.vts.h",
+        "android/hardware/gnss/1.0/GnssXtraCallback.vts.h",
+        "android/hardware/gnss/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.gnss@1.0-vts.profiler",
+    generated_sources: ["android.hardware.gnss@1.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.gnss@1.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.gnss@1.0-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.gnss@1.0",
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/gnss/V1_0/target/Android.mk b/gnss/V1_0/target/Android.mk
new file mode 100644
index 0000000..7a60e2c
--- /dev/null
+++ b/gnss/V1_0/target/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalGnssV1_0Target
+VTS_CONFIG_SRC_DIR := testcases/hal/gnss/V1_0/target
+include test/vts/tools/build/Android.host_config.mk
diff --git a/gnss/V1_0/target/AndroidTest.xml b/gnss/V1_0/target/AndroidTest.xml
new file mode 100644
index 0000000..c15a260
--- /dev/null
+++ b/gnss/V1_0/target/AndroidTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalGnssV1_0Target test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetTest.push"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalGnssV1_0Target"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalGnssV1_0TargetTest/VtsHalGnssV1_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalGnssV1_0TargetTest/VtsHalGnssV1_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.gnss@1.0"/>
+        <option name="test-timeout" value="15m"/>
+    </test>
+</configuration>
diff --git a/gnss/V1_0/target_profiling/Android.mk b/gnss/V1_0/target_profiling/Android.mk
new file mode 100644
index 0000000..bb14b55
--- /dev/null
+++ b/gnss/V1_0/target_profiling/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalGnssV1_0TargetProfiling
+VTS_CONFIG_SRC_DIR := testcases/hal/gnss/V1_0/target_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/gnss/V1_0/target_profiling/AndroidTest.xml b/gnss/V1_0/target_profiling/AndroidTest.xml
new file mode 100644
index 0000000..67537a6
--- /dev/null
+++ b/gnss/V1_0/target_profiling/AndroidTest.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalGnssV1_0TargetProfiling test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetProfilingTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="DATA/lib/android.hardware.gnss@1.0-vts.profiler.so->/data/local/tmp/32/android.hardware.gnss@1.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.gnss@1.0-vts.profiler.so->/data/local/tmp/64/android.hardware.gnss@1.0-vts.profiler.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalGnssV1_0TargetProfiling"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalGnssV1_0TargetTest/VtsHalGnssV1_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalGnssV1_0TargetTest/VtsHalGnssV1_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="enable-profiling" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.gnss@1.0"/>
+        <option name="test-timeout" value="15m"/>
+    </test>
+</configuration>
diff --git a/graphics/Android.bp b/graphics/Android.bp
new file mode 100644
index 0000000..5e19b96
--- /dev/null
+++ b/graphics/Android.bp
@@ -0,0 +1,10 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "allocator/V2_0",
+    "bufferqueue/V1_0",
+    "common/V1_0",
+    "composer/V2_1",
+    "mapper/V2_0",
+]
diff --git a/graphics/allocator/V2_0/Android.bp b/graphics/allocator/V2_0/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/graphics/allocator/V2_0/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/graphics/allocator/V2_0/build/Android.bp b/graphics/allocator/V2_0/build/Android.bp
new file mode 100644
index 0000000..41dc557
--- /dev/null
+++ b/graphics/allocator/V2_0/build/Android.bp
@@ -0,0 +1,142 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.graphics.allocator@2.0-vts.spec",
+    srcs: [
+        ":android.hardware.graphics.allocator@2.0_hal",
+    ],
+    out: [
+        "android/hardware/graphics/allocator/2.0/Allocator.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.graphics.allocator@2.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.allocator@2.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/graphics/allocator/2.0/ $(genDir)/android/hardware/graphics/allocator/2.0/",
+    srcs: [
+        ":android.hardware.graphics.allocator@2.0_hal",
+    ],
+    out: [
+        "android/hardware/graphics/allocator/2.0/Allocator.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.graphics.allocator@2.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.allocator@2.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/graphics/allocator/2.0/ $(genDir)/android/hardware/graphics/allocator/2.0/",
+    srcs: [
+        ":android.hardware.graphics.allocator@2.0_hal",
+    ],
+    out: [
+        "android/hardware/graphics/allocator/2.0/Allocator.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.graphics.allocator@2.0-vts.driver",
+    generated_sources: ["android.hardware.graphics.allocator@2.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.graphics.allocator@2.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.graphics.allocator@2.0-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.graphics.allocator@2.0",
+        "android.hardware.graphics.mapper@2.0",
+        "android.hardware.graphics.mapper@2.0-vts.driver",
+    ],
+    export_shared_lib_headers: [
+        "android.hardware.graphics.mapper@2.0",
+        "android.hardware.graphics.mapper@2.0-vts.driver",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.graphics.allocator@2.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.allocator@2.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/graphics/allocator/2.0/ $(genDir)/android/hardware/graphics/allocator/2.0/",
+    srcs: [
+        ":android.hardware.graphics.allocator@2.0_hal",
+    ],
+    out: [
+        "android/hardware/graphics/allocator/2.0/Allocator.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.graphics.allocator@2.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.allocator@2.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/graphics/allocator/2.0/ $(genDir)/android/hardware/graphics/allocator/2.0/",
+    srcs: [
+        ":android.hardware.graphics.allocator@2.0_hal",
+    ],
+    out: [
+        "android/hardware/graphics/allocator/2.0/Allocator.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.graphics.allocator@2.0-vts.profiler",
+    generated_sources: ["android.hardware.graphics.allocator@2.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.graphics.allocator@2.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.graphics.allocator@2.0-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.graphics.allocator@2.0",
+        "android.hardware.graphics.mapper@2.0",
+        "android.hardware.graphics.mapper@2.0-vts.profiler",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/graphics/bufferqueue/V1_0/Android.bp b/graphics/bufferqueue/V1_0/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/graphics/bufferqueue/V1_0/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/graphics/bufferqueue/V1_0/build/Android.bp b/graphics/bufferqueue/V1_0/build/Android.bp
new file mode 100644
index 0000000..96a7658
--- /dev/null
+++ b/graphics/bufferqueue/V1_0/build/Android.bp
@@ -0,0 +1,153 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.graphics.bufferqueue@1.0-vts.spec",
+    srcs: [
+        ":android.hardware.graphics.bufferqueue@1.0_hal",
+    ],
+    out: [
+        "android/hardware/graphics/bufferqueue/1.0/GraphicBufferProducer.vts",
+        "android/hardware/graphics/bufferqueue/1.0/ProducerListener.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.graphics.bufferqueue@1.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.bufferqueue@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/graphics/bufferqueue/1.0/ $(genDir)/android/hardware/graphics/bufferqueue/1.0/",
+    srcs: [
+        ":android.hardware.graphics.bufferqueue@1.0_hal",
+    ],
+    out: [
+        "android/hardware/graphics/bufferqueue/1.0/GraphicBufferProducer.vts.cpp",
+        "android/hardware/graphics/bufferqueue/1.0/ProducerListener.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.graphics.bufferqueue@1.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.bufferqueue@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/graphics/bufferqueue/1.0/ $(genDir)/android/hardware/graphics/bufferqueue/1.0/",
+    srcs: [
+        ":android.hardware.graphics.bufferqueue@1.0_hal",
+    ],
+    out: [
+        "android/hardware/graphics/bufferqueue/1.0/GraphicBufferProducer.vts.h",
+        "android/hardware/graphics/bufferqueue/1.0/ProducerListener.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.graphics.bufferqueue@1.0-vts.driver",
+    generated_sources: ["android.hardware.graphics.bufferqueue@1.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.graphics.bufferqueue@1.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.graphics.bufferqueue@1.0-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.graphics.bufferqueue@1.0",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.graphics.common@1.0-vts.driver",
+        "android.hardware.media@1.0",
+        "android.hardware.media@1.0-vts.driver",
+    ],
+    export_shared_lib_headers: [
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.graphics.common@1.0-vts.driver",
+        "android.hardware.media@1.0",
+        "android.hardware.media@1.0-vts.driver",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.graphics.bufferqueue@1.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.bufferqueue@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/graphics/bufferqueue/1.0/ $(genDir)/android/hardware/graphics/bufferqueue/1.0/",
+    srcs: [
+        ":android.hardware.graphics.bufferqueue@1.0_hal",
+    ],
+    out: [
+        "android/hardware/graphics/bufferqueue/1.0/GraphicBufferProducer.vts.cpp",
+        "android/hardware/graphics/bufferqueue/1.0/ProducerListener.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.graphics.bufferqueue@1.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.bufferqueue@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/graphics/bufferqueue/1.0/ $(genDir)/android/hardware/graphics/bufferqueue/1.0/",
+    srcs: [
+        ":android.hardware.graphics.bufferqueue@1.0_hal",
+    ],
+    out: [
+        "android/hardware/graphics/bufferqueue/1.0/GraphicBufferProducer.vts.h",
+        "android/hardware/graphics/bufferqueue/1.0/ProducerListener.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.graphics.bufferqueue@1.0-vts.profiler",
+    generated_sources: ["android.hardware.graphics.bufferqueue@1.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.graphics.bufferqueue@1.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.graphics.bufferqueue@1.0-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.graphics.bufferqueue@1.0",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.graphics.common@1.0-vts.profiler",
+        "android.hardware.media@1.0",
+        "android.hardware.media@1.0-vts.profiler",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/graphics/common/V1_0/Android.bp b/graphics/common/V1_0/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/graphics/common/V1_0/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/graphics/common/V1_0/build/Android.bp b/graphics/common/V1_0/build/Android.bp
new file mode 100644
index 0000000..178f2ab
--- /dev/null
+++ b/graphics/common/V1_0/build/Android.bp
@@ -0,0 +1,139 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.graphics.common@1.0-vts.spec",
+    srcs: [
+        ":android.hardware.graphics.common@1.0_hal",
+    ],
+    out: [
+        "android/hardware/graphics/common/1.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.graphics.common@1.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.common@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/graphics/common/1.0/ $(genDir)/android/hardware/graphics/common/1.0/",
+    srcs: [
+        ":android.hardware.graphics.common@1.0_hal",
+    ],
+    out: [
+        "android/hardware/graphics/common/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.graphics.common@1.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.common@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/graphics/common/1.0/ $(genDir)/android/hardware/graphics/common/1.0/",
+    srcs: [
+        ":android.hardware.graphics.common@1.0_hal",
+    ],
+    out: [
+        "android/hardware/graphics/common/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.graphics.common@1.0-vts.driver",
+    generated_sources: ["android.hardware.graphics.common@1.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.graphics.common@1.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.graphics.common@1.0-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.graphics.common@1.0",
+        
+    ],
+    export_shared_lib_headers: [
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.graphics.common@1.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.common@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/graphics/common/1.0/ $(genDir)/android/hardware/graphics/common/1.0/",
+    srcs: [
+        ":android.hardware.graphics.common@1.0_hal",
+    ],
+    out: [
+        "android/hardware/graphics/common/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.graphics.common@1.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.common@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/graphics/common/1.0/ $(genDir)/android/hardware/graphics/common/1.0/",
+    srcs: [
+        ":android.hardware.graphics.common@1.0_hal",
+    ],
+    out: [
+        "android/hardware/graphics/common/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.graphics.common@1.0-vts.profiler",
+    generated_sources: ["android.hardware.graphics.common@1.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.graphics.common@1.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.graphics.common@1.0-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.graphics.common@1.0",
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/graphics/composer/V2_1/Android.bp b/graphics/composer/V2_1/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/graphics/composer/V2_1/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/graphics/composer/V2_1/build/Android.bp b/graphics/composer/V2_1/build/Android.bp
new file mode 100644
index 0000000..9f74fd2
--- /dev/null
+++ b/graphics/composer/V2_1/build/Android.bp
@@ -0,0 +1,157 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.graphics.composer@2.1-vts.spec",
+    srcs: [
+        ":android.hardware.graphics.composer@2.1_hal",
+    ],
+    out: [
+        "android/hardware/graphics/composer/2.1/Composer.vts",
+        "android/hardware/graphics/composer/2.1/ComposerCallback.vts",
+        "android/hardware/graphics/composer/2.1/ComposerClient.vts",
+        "android/hardware/graphics/composer/2.1/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.graphics.composer@2.1-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.composer@2.1 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/graphics/composer/2.1/ $(genDir)/android/hardware/graphics/composer/2.1/",
+    srcs: [
+        ":android.hardware.graphics.composer@2.1_hal",
+    ],
+    out: [
+        "android/hardware/graphics/composer/2.1/Composer.vts.cpp",
+        "android/hardware/graphics/composer/2.1/ComposerCallback.vts.cpp",
+        "android/hardware/graphics/composer/2.1/ComposerClient.vts.cpp",
+        "android/hardware/graphics/composer/2.1/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.graphics.composer@2.1-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.composer@2.1 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/graphics/composer/2.1/ $(genDir)/android/hardware/graphics/composer/2.1/",
+    srcs: [
+        ":android.hardware.graphics.composer@2.1_hal",
+    ],
+    out: [
+        "android/hardware/graphics/composer/2.1/Composer.vts.h",
+        "android/hardware/graphics/composer/2.1/ComposerCallback.vts.h",
+        "android/hardware/graphics/composer/2.1/ComposerClient.vts.h",
+        "android/hardware/graphics/composer/2.1/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.graphics.composer@2.1-vts.driver",
+    generated_sources: ["android.hardware.graphics.composer@2.1-vts.driver_genc++"],
+    generated_headers: ["android.hardware.graphics.composer@2.1-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.graphics.composer@2.1-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.graphics.composer@2.1",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.graphics.common@1.0-vts.driver",
+    ],
+    export_shared_lib_headers: [
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.graphics.common@1.0-vts.driver",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.graphics.composer@2.1-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.composer@2.1 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/graphics/composer/2.1/ $(genDir)/android/hardware/graphics/composer/2.1/",
+    srcs: [
+        ":android.hardware.graphics.composer@2.1_hal",
+    ],
+    out: [
+        "android/hardware/graphics/composer/2.1/Composer.vts.cpp",
+        "android/hardware/graphics/composer/2.1/ComposerCallback.vts.cpp",
+        "android/hardware/graphics/composer/2.1/ComposerClient.vts.cpp",
+        "android/hardware/graphics/composer/2.1/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.graphics.composer@2.1-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.composer@2.1 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/graphics/composer/2.1/ $(genDir)/android/hardware/graphics/composer/2.1/",
+    srcs: [
+        ":android.hardware.graphics.composer@2.1_hal",
+    ],
+    out: [
+        "android/hardware/graphics/composer/2.1/Composer.vts.h",
+        "android/hardware/graphics/composer/2.1/ComposerCallback.vts.h",
+        "android/hardware/graphics/composer/2.1/ComposerClient.vts.h",
+        "android/hardware/graphics/composer/2.1/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.graphics.composer@2.1-vts.profiler",
+    generated_sources: ["android.hardware.graphics.composer@2.1-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.graphics.composer@2.1-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.graphics.composer@2.1-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.graphics.composer@2.1",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.graphics.common@1.0-vts.profiler",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/graphics/composer/V2_1/target/Android.mk b/graphics/composer/V2_1/target/Android.mk
new file mode 100644
index 0000000..5c3cd0b
--- /dev/null
+++ b/graphics/composer/V2_1/target/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalGraphicsComposerV2_1Target
+VTS_CONFIG_SRC_DIR := testcases/hal/graphics/composer/V2_1/target
+include test/vts/tools/build/Android.host_config.mk
diff --git a/graphics/composer/V2_1/target/AndroidTest.xml b/graphics/composer/V2_1/target/AndroidTest.xml
new file mode 100644
index 0000000..869028e
--- /dev/null
+++ b/graphics/composer/V2_1/target/AndroidTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalGraphicsComposerV2_1Target test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetTest.push"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalGraphicsComposerV2_1Target"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalGraphicsComposerV2_1TargetTest/VtsHalGraphicsComposerV2_1TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalGraphicsComposerV2_1TargetTest/VtsHalGraphicsComposerV2_1TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.graphics.composer@2.1"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/graphics/composer/V2_1/target_profiling/Android.mk b/graphics/composer/V2_1/target_profiling/Android.mk
new file mode 100644
index 0000000..2178f89
--- /dev/null
+++ b/graphics/composer/V2_1/target_profiling/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalGraphicsComposerV2_1TargetProfiling
+VTS_CONFIG_SRC_DIR := testcases/hal/graphics/composer/V2_1/target_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/graphics/composer/V2_1/target_profiling/AndroidTest.xml b/graphics/composer/V2_1/target_profiling/AndroidTest.xml
new file mode 100644
index 0000000..240e6c2
--- /dev/null
+++ b/graphics/composer/V2_1/target_profiling/AndroidTest.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalGraphicsComposerV2_1TargetProfiling test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetProfilingTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="DATA/lib/android.hardware.graphics.common@1.0-vts.profiler.so->/data/local/tmp/32/android.hardware.graphics.common@1.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.graphics.common@1.0-vts.profiler.so->/data/local/tmp/64/android.hardware.graphics.common@1.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib/android.hardware.graphics.composer@2.1-vts.profiler.so->/data/local/tmp/32/android.hardware.graphics.composer@2.1-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.graphics.composer@2.1-vts.profiler.so->/data/local/tmp/64/android.hardware.graphics.composer@2.1-vts.profiler.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalGraphicsComposerV2_1TargetProfiling"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalGraphicsComposerV2_1TargetTest/VtsHalGraphicsComposerV2_1TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalGraphicsComposerV2_1TargetTest/VtsHalGraphicsComposerV2_1TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="enable-profiling" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.graphics.composer@2.1"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/graphics/mapper/V2_0/Android.bp b/graphics/mapper/V2_0/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/graphics/mapper/V2_0/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/graphics/mapper/V2_0/build/Android.bp b/graphics/mapper/V2_0/build/Android.bp
new file mode 100644
index 0000000..6e137e2
--- /dev/null
+++ b/graphics/mapper/V2_0/build/Android.bp
@@ -0,0 +1,147 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.graphics.mapper@2.0-vts.spec",
+    srcs: [
+        ":android.hardware.graphics.mapper@2.0_hal",
+    ],
+    out: [
+        "android/hardware/graphics/mapper/2.0/Mapper.vts",
+        "android/hardware/graphics/mapper/2.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.graphics.mapper@2.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.mapper@2.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/graphics/mapper/2.0/ $(genDir)/android/hardware/graphics/mapper/2.0/",
+    srcs: [
+        ":android.hardware.graphics.mapper@2.0_hal",
+    ],
+    out: [
+        "android/hardware/graphics/mapper/2.0/Mapper.vts.cpp",
+        "android/hardware/graphics/mapper/2.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.graphics.mapper@2.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.mapper@2.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/graphics/mapper/2.0/ $(genDir)/android/hardware/graphics/mapper/2.0/",
+    srcs: [
+        ":android.hardware.graphics.mapper@2.0_hal",
+    ],
+    out: [
+        "android/hardware/graphics/mapper/2.0/Mapper.vts.h",
+        "android/hardware/graphics/mapper/2.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.graphics.mapper@2.0-vts.driver",
+    generated_sources: ["android.hardware.graphics.mapper@2.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.graphics.mapper@2.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.graphics.mapper@2.0-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.graphics.mapper@2.0",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.graphics.common@1.0-vts.driver",
+    ],
+    export_shared_lib_headers: [
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.graphics.common@1.0-vts.driver",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.graphics.mapper@2.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.mapper@2.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/graphics/mapper/2.0/ $(genDir)/android/hardware/graphics/mapper/2.0/",
+    srcs: [
+        ":android.hardware.graphics.mapper@2.0_hal",
+    ],
+    out: [
+        "android/hardware/graphics/mapper/2.0/Mapper.vts.cpp",
+        "android/hardware/graphics/mapper/2.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.graphics.mapper@2.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.mapper@2.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/graphics/mapper/2.0/ $(genDir)/android/hardware/graphics/mapper/2.0/",
+    srcs: [
+        ":android.hardware.graphics.mapper@2.0_hal",
+    ],
+    out: [
+        "android/hardware/graphics/mapper/2.0/Mapper.vts.h",
+        "android/hardware/graphics/mapper/2.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.graphics.mapper@2.0-vts.profiler",
+    generated_sources: ["android.hardware.graphics.mapper@2.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.graphics.mapper@2.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.graphics.mapper@2.0-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.graphics.mapper@2.0",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.graphics.common@1.0-vts.profiler",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/graphics/mapper/V2_0/target/Android.mk b/graphics/mapper/V2_0/target/Android.mk
new file mode 100644
index 0000000..5bb66f0
--- /dev/null
+++ b/graphics/mapper/V2_0/target/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalGraphicsMapperV2_0Target
+VTS_CONFIG_SRC_DIR := testcases/hal/graphics/mapper/V2_0/target
+include test/vts/tools/build/Android.host_config.mk
diff --git a/graphics/mapper/V2_0/target/AndroidTest.xml b/graphics/mapper/V2_0/target/AndroidTest.xml
new file mode 100644
index 0000000..658e268
--- /dev/null
+++ b/graphics/mapper/V2_0/target/AndroidTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalGraphicsMapperV2_0Target test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetTest.push"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalGraphicsMapperV2_0Target"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalGraphicsMapperV2_0TargetTest/VtsHalGraphicsMapperV2_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalGraphicsMapperV2_0TargetTest/VtsHalGraphicsMapperV2_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.graphics.mapper@2.0"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/graphics/mapper/V2_0/target_profiling/Android.mk b/graphics/mapper/V2_0/target_profiling/Android.mk
new file mode 100644
index 0000000..e8edcff
--- /dev/null
+++ b/graphics/mapper/V2_0/target_profiling/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalGraphicsMapperV2_0TargetProfiling
+VTS_CONFIG_SRC_DIR := testcases/hal/graphics/mapper/V2_0/target_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/graphics/mapper/V2_0/target_profiling/AndroidTest.xml b/graphics/mapper/V2_0/target_profiling/AndroidTest.xml
new file mode 100644
index 0000000..ca61733
--- /dev/null
+++ b/graphics/mapper/V2_0/target_profiling/AndroidTest.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalGraphicsMapperV2_0TargetProfiling test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetProfilingTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="DATA/lib/android.hardware.graphics.common@1.0-vts.profiler.so->/data/local/tmp/32/android.hardware.graphics.common@1.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.graphics.common@1.0-vts.profiler.so->/data/local/tmp/64/android.hardware.graphics.common@1.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib/android.hardware.graphics.mapper@2.0-vts.profiler.so->/data/local/tmp/32/android.hardware.graphics.mapper@2.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.graphics.mapper@2.0-vts.profiler.so->/data/local/tmp/64/android.hardware.graphics.mapper@2.0-vts.profiler.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalGraphicsMapperV2_0TargetProfiling"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalGraphicsMapperV2_0TargetTest/VtsHalGraphicsMapperV2_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalGraphicsMapperV2_0TargetTest/VtsHalGraphicsMapperV2_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="enable-profiling" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.graphics.mapper@2.0"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/health/Android.bp b/health/Android.bp
new file mode 100644
index 0000000..cdc8905
--- /dev/null
+++ b/health/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "V1_0",
+]
diff --git a/health/V1_0/Android.bp b/health/V1_0/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/health/V1_0/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/health/V1_0/build/Android.bp b/health/V1_0/build/Android.bp
new file mode 100644
index 0000000..8624994
--- /dev/null
+++ b/health/V1_0/build/Android.bp
@@ -0,0 +1,144 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.health@1.0-vts.spec",
+    srcs: [
+        ":android.hardware.health@1.0_hal",
+    ],
+    out: [
+        "android/hardware/health/1.0/Health.vts",
+        "android/hardware/health/1.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.health@1.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.health@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/health/1.0/ $(genDir)/android/hardware/health/1.0/",
+    srcs: [
+        ":android.hardware.health@1.0_hal",
+    ],
+    out: [
+        "android/hardware/health/1.0/Health.vts.cpp",
+        "android/hardware/health/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.health@1.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.health@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/health/1.0/ $(genDir)/android/hardware/health/1.0/",
+    srcs: [
+        ":android.hardware.health@1.0_hal",
+    ],
+    out: [
+        "android/hardware/health/1.0/Health.vts.h",
+        "android/hardware/health/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.health@1.0-vts.driver",
+    generated_sources: ["android.hardware.health@1.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.health@1.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.health@1.0-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.health@1.0",
+        
+    ],
+    export_shared_lib_headers: [
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.health@1.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.health@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/health/1.0/ $(genDir)/android/hardware/health/1.0/",
+    srcs: [
+        ":android.hardware.health@1.0_hal",
+    ],
+    out: [
+        "android/hardware/health/1.0/Health.vts.cpp",
+        "android/hardware/health/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.health@1.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.health@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/health/1.0/ $(genDir)/android/hardware/health/1.0/",
+    srcs: [
+        ":android.hardware.health@1.0_hal",
+    ],
+    out: [
+        "android/hardware/health/1.0/Health.vts.h",
+        "android/hardware/health/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.health@1.0-vts.profiler",
+    generated_sources: ["android.hardware.health@1.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.health@1.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.health@1.0-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.health@1.0",
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/health/V1_0/target/Android.mk b/health/V1_0/target/Android.mk
new file mode 100644
index 0000000..1c42abd
--- /dev/null
+++ b/health/V1_0/target/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalHealthV1_0Target
+VTS_CONFIG_SRC_DIR := testcases/hal/health/V1_0/target
+include test/vts/tools/build/Android.host_config.mk
diff --git a/health/V1_0/target/AndroidTest.xml b/health/V1_0/target/AndroidTest.xml
new file mode 100644
index 0000000..3692a5e
--- /dev/null
+++ b/health/V1_0/target/AndroidTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalHealthV1_0Target test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetTest.push"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalHealthV1_0Target"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalHealthV1_0TargetTest/VtsHalHealthV1_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalHealthV1_0TargetTest/VtsHalHealthV1_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.health@1.0"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/health/V1_0/target_profiling/Android.mk b/health/V1_0/target_profiling/Android.mk
new file mode 100644
index 0000000..20ceeee
--- /dev/null
+++ b/health/V1_0/target_profiling/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalHealthV1_0TargetProfiling
+VTS_CONFIG_SRC_DIR := testcases/hal/health/V1_0/target_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/health/V1_0/target_profiling/AndroidTest.xml b/health/V1_0/target_profiling/AndroidTest.xml
new file mode 100644
index 0000000..5b52d22
--- /dev/null
+++ b/health/V1_0/target_profiling/AndroidTest.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalHealthV1_0TargetProfiling test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetProfilingTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="DATA/lib/android.hardware.health@1.0-vts.profiler.so->/data/local/tmp/32/android.hardware.health@1.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.health@1.0-vts.profiler.so->/data/local/tmp/64/android.hardware.health@1.0-vts.profiler.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalHealthV1_0TargetProfiling"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalHealthV1_0TargetTest/VtsHalHealthV1_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalHealthV1_0TargetTest/VtsHalHealthV1_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="enable-profiling" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.health@1.0"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/keymaster/Android.bp b/keymaster/Android.bp
new file mode 100644
index 0000000..6f7b8de
--- /dev/null
+++ b/keymaster/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "V3_0",
+]
diff --git a/keymaster/V3_0/Android.bp b/keymaster/V3_0/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/keymaster/V3_0/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/keymaster/V3_0/build/Android.bp b/keymaster/V3_0/build/Android.bp
new file mode 100644
index 0000000..a005396
--- /dev/null
+++ b/keymaster/V3_0/build/Android.bp
@@ -0,0 +1,144 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.keymaster@3.0-vts.spec",
+    srcs: [
+        ":android.hardware.keymaster@3.0_hal",
+    ],
+    out: [
+        "android/hardware/keymaster/3.0/KeymasterDevice.vts",
+        "android/hardware/keymaster/3.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.keymaster@3.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.keymaster@3.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/keymaster/3.0/ $(genDir)/android/hardware/keymaster/3.0/",
+    srcs: [
+        ":android.hardware.keymaster@3.0_hal",
+    ],
+    out: [
+        "android/hardware/keymaster/3.0/KeymasterDevice.vts.cpp",
+        "android/hardware/keymaster/3.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.keymaster@3.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.keymaster@3.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/keymaster/3.0/ $(genDir)/android/hardware/keymaster/3.0/",
+    srcs: [
+        ":android.hardware.keymaster@3.0_hal",
+    ],
+    out: [
+        "android/hardware/keymaster/3.0/KeymasterDevice.vts.h",
+        "android/hardware/keymaster/3.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.keymaster@3.0-vts.driver",
+    generated_sources: ["android.hardware.keymaster@3.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.keymaster@3.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.keymaster@3.0-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.keymaster@3.0",
+        
+    ],
+    export_shared_lib_headers: [
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.keymaster@3.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.keymaster@3.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/keymaster/3.0/ $(genDir)/android/hardware/keymaster/3.0/",
+    srcs: [
+        ":android.hardware.keymaster@3.0_hal",
+    ],
+    out: [
+        "android/hardware/keymaster/3.0/KeymasterDevice.vts.cpp",
+        "android/hardware/keymaster/3.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.keymaster@3.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.keymaster@3.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/keymaster/3.0/ $(genDir)/android/hardware/keymaster/3.0/",
+    srcs: [
+        ":android.hardware.keymaster@3.0_hal",
+    ],
+    out: [
+        "android/hardware/keymaster/3.0/KeymasterDevice.vts.h",
+        "android/hardware/keymaster/3.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.keymaster@3.0-vts.profiler",
+    generated_sources: ["android.hardware.keymaster@3.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.keymaster@3.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.keymaster@3.0-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.keymaster@3.0",
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/keymaster/V3_0/target/Android.mk b/keymaster/V3_0/target/Android.mk
new file mode 100644
index 0000000..2457aec
--- /dev/null
+++ b/keymaster/V3_0/target/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalKeymasterV3_0Target
+VTS_CONFIG_SRC_DIR := testcases/hal/keymaster/V3_0/target
+include test/vts/tools/build/Android.host_config.mk
diff --git a/keymaster/V3_0/target/AndroidTest.xml b/keymaster/V3_0/target/AndroidTest.xml
new file mode 100644
index 0000000..6f0ec3a
--- /dev/null
+++ b/keymaster/V3_0/target/AndroidTest.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalKeymasterV3_0Target test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlHostTest.push"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalKeymasterV3_0Target"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalKeymasterV3_0TargetTest/VtsHalKeymasterV3_0TargetTest" />
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalKeymasterV3_0TargetTest/VtsHalKeymasterV3_0TargetTest" />
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="precondition-lshal" value="android.hardware.keymaster@3.0"/>
+        <option name="test-timeout" value="15m"/>
+    </test>
+</configuration>
diff --git a/keymaster/V3_0/target_profiling/Android.mk b/keymaster/V3_0/target_profiling/Android.mk
new file mode 100644
index 0000000..f010639
--- /dev/null
+++ b/keymaster/V3_0/target_profiling/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalKeymasterV3_0TargetProfiling
+VTS_CONFIG_SRC_DIR := testcases/hal/keymaster/V3_0/target_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/keymaster/V3_0/target_profiling/AndroidTest.xml b/keymaster/V3_0/target_profiling/AndroidTest.xml
new file mode 100644
index 0000000..8778c55
--- /dev/null
+++ b/keymaster/V3_0/target_profiling/AndroidTest.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalKeymasterV3_0TargetProfiling test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlHostTest.push"/>
+        <option name="push" value="DATA/lib/android.hardware.keymaster@3.0-vts.profiler.so->/data/local/tmp/32/android.hardware.keymaster@3.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.keymaster@3.0-vts.profiler.so->/data/local/tmp/64/android.hardware.keymaster@3.0-vts.profiler.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalKeymasterV3_0TargetProfiling"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalKeymasterV3_0TargetTest/VtsHalKeymasterV3_0TargetTest" />
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalKeymasterV3_0TargetTest/VtsHalKeymasterV3_0TargetTest" />
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="precondition-lshal" value="android.hardware.keymaster@3.0"/>
+        <option name="enable-profiling" value="true"/>
+        <option name="test-timeout" value="15m"/>
+    </test>
+</configuration>
diff --git a/keymaster/V3_0/target_replay/Android.mk b/keymaster/V3_0/target_replay/Android.mk
new file mode 100644
index 0000000..daed556
--- /dev/null
+++ b/keymaster/V3_0/target_replay/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalKeymasterV3_0TargetReplay
+VTS_CONFIG_SRC_DIR := testcases/hal/keymaster/V3_0/target_replay
+include test/vts/tools/build/Android.host_config.mk
diff --git a/keymaster/V3_0/target_replay/AndroidTest.xml b/keymaster/V3_0/target_replay/AndroidTest.xml
new file mode 100644
index 0000000..d6450eb
--- /dev/null
+++ b/keymaster/V3_0/target_replay/AndroidTest.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalKeymasterV3_0TargetReplay test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlHostTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="spec/hardware/interfaces/keymaster/3.0/vts/KeymasterDevice.vts->/data/local/tmp/spec/android/hardware/keymaster/3.0/KeymasterDevice.vts"/>
+        <option name="push" value="spec/hardware/interfaces/keymaster/3.0/vts/types.vts->/data/local/tmp/spec/android/hardware/keymaster/3.0/types.vts"/>
+        <option name="push" value="DATA/lib/android.hardware.keymaster@3.0-vts.driver.so->/data/local/tmp/32/android.hardware.keymaster@3.0-vts.driver.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.keymaster@3.0-vts.driver.so->/data/local/tmp/64/android.hardware.keymaster@3.0-vts.driver.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalKeymasterV3_0TargetReplay"/>
+        <option name="binary-test-type" value="hal_hidl_replay_test"/>
+        <option name="hal-hidl-replay-test-trace-path" value="test/vts-testcase/hal-trace/keymaster/V3_0/android.hardware.keymaster@3.0_sailfish_1.vts.trace"/>
+        <option name="hal-hidl-package-name" value="android.hardware.keymaster@3.0"/>
+        <option name="precondition-lshal" value="android.hardware.keymaster@3.0"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/light/Android.bp b/light/Android.bp
new file mode 100644
index 0000000..fb60e6b
--- /dev/null
+++ b/light/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "V2_0",
+]
diff --git a/light/V2_0/Android.bp b/light/V2_0/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/light/V2_0/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/light/V2_0/build/Android.bp b/light/V2_0/build/Android.bp
new file mode 100644
index 0000000..bc79dee
--- /dev/null
+++ b/light/V2_0/build/Android.bp
@@ -0,0 +1,144 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.light@2.0-vts.spec",
+    srcs: [
+        ":android.hardware.light@2.0_hal",
+    ],
+    out: [
+        "android/hardware/light/2.0/Light.vts",
+        "android/hardware/light/2.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.light@2.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.light@2.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/light/2.0/ $(genDir)/android/hardware/light/2.0/",
+    srcs: [
+        ":android.hardware.light@2.0_hal",
+    ],
+    out: [
+        "android/hardware/light/2.0/Light.vts.cpp",
+        "android/hardware/light/2.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.light@2.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.light@2.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/light/2.0/ $(genDir)/android/hardware/light/2.0/",
+    srcs: [
+        ":android.hardware.light@2.0_hal",
+    ],
+    out: [
+        "android/hardware/light/2.0/Light.vts.h",
+        "android/hardware/light/2.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.light@2.0-vts.driver",
+    generated_sources: ["android.hardware.light@2.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.light@2.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.light@2.0-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.light@2.0",
+        
+    ],
+    export_shared_lib_headers: [
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.light@2.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.light@2.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/light/2.0/ $(genDir)/android/hardware/light/2.0/",
+    srcs: [
+        ":android.hardware.light@2.0_hal",
+    ],
+    out: [
+        "android/hardware/light/2.0/Light.vts.cpp",
+        "android/hardware/light/2.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.light@2.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.light@2.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/light/2.0/ $(genDir)/android/hardware/light/2.0/",
+    srcs: [
+        ":android.hardware.light@2.0_hal",
+    ],
+    out: [
+        "android/hardware/light/2.0/Light.vts.h",
+        "android/hardware/light/2.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.light@2.0-vts.profiler",
+    generated_sources: ["android.hardware.light@2.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.light@2.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.light@2.0-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.light@2.0",
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/light/V2_0/target/Android.mk b/light/V2_0/target/Android.mk
new file mode 100644
index 0000000..a9b93e8
--- /dev/null
+++ b/light/V2_0/target/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalLightV2_0Target
+VTS_CONFIG_SRC_DIR := testcases/hal/light/V2_0/target
+include test/vts/tools/build/Android.host_config.mk
diff --git a/light/V2_0/target/AndroidTest.xml b/light/V2_0/target/AndroidTest.xml
new file mode 100644
index 0000000..7942b31
--- /dev/null
+++ b/light/V2_0/target/AndroidTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalLightV2_0Target test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetTest.push"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalLightV2_0Target"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalLightV2_0TargetTest/VtsHalLightV2_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalLightV2_0TargetTest/VtsHalLightV2_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.light@2.0"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/light/V2_0/target_profiling/Android.mk b/light/V2_0/target_profiling/Android.mk
new file mode 100644
index 0000000..31bf8c7
--- /dev/null
+++ b/light/V2_0/target_profiling/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalLightV2_0TargetProfiling
+VTS_CONFIG_SRC_DIR := testcases/hal/light/V2_0/target_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/light/V2_0/target_profiling/AndroidTest.xml b/light/V2_0/target_profiling/AndroidTest.xml
new file mode 100644
index 0000000..5648a9a
--- /dev/null
+++ b/light/V2_0/target_profiling/AndroidTest.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalLightV2_0TargetProfiling test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetProfilingTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="DATA/lib/android.hardware.light@2.0-vts.profiler.so->/data/local/tmp/32/android.hardware.light@2.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.light@2.0-vts.profiler.so->/data/local/tmp/64/android.hardware.light@2.0-vts.profiler.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalLightV2_0TargetProfiling"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalLightV2_0TargetTest/VtsHalLightV2_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalLightV2_0TargetTest/VtsHalLightV2_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="enable-profiling" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.light@2.0"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/light/V2_0/target_replay/Android.mk b/light/V2_0/target_replay/Android.mk
new file mode 100644
index 0000000..c21c2f6
--- /dev/null
+++ b/light/V2_0/target_replay/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2016 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalLightV2_0TargetReplay
+VTS_CONFIG_SRC_DIR := testcases/hal/light/V2_0/target_replay
+include test/vts/tools/build/Android.host_config.mk
diff --git a/light/V2_0/target_replay/AndroidTest.xml b/light/V2_0/target_replay/AndroidTest.xml
new file mode 100644
index 0000000..38eed82
--- /dev/null
+++ b/light/V2_0/target_replay/AndroidTest.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 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.
+-->
+<configuration description="Config for VTS Light HIDL HAL's target-side replay test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlHostTest.push" />
+        <option name="cleanup" value="true" />
+        <option name="push" value="spec/hardware/interfaces/light/2.0/vts/Light.vts->/data/local/tmp/spec/target.vts" />
+        <option name="push" value="DATA/lib/android.hardware.light@2.0-vts.driver.so->/data/local/tmp/32/android.hardware.light@2.0-vts.driver.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.light@2.0-vts.driver.so->/data/local/tmp/64/android.hardware.light@2.0-vts.driver.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer" />
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalLightV2_0TargetReplay" />
+        <option name="binary-test-type" value="hal_hidl_replay_test" />
+        <option name="hal-hidl-replay-test-trace-path" value="test/vts-testcase/hal-trace/light/V2_0/android.hardware.light@2.0_sailfish_1.vts.trace" />
+        <option name="hal-hidl-package-name" value="android.hardware.light@2.0" />
+        <option name="test-timeout" value="5m" />
+    </test>
+</configuration>
diff --git a/media/Android.bp b/media/Android.bp
new file mode 100644
index 0000000..341491e
--- /dev/null
+++ b/media/Android.bp
@@ -0,0 +1,7 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "V1_0",
+    "omx/V1_0",
+]
diff --git a/media/V1_0/Android.bp b/media/V1_0/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/media/V1_0/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/media/V1_0/build/Android.bp b/media/V1_0/build/Android.bp
new file mode 100644
index 0000000..05430db
--- /dev/null
+++ b/media/V1_0/build/Android.bp
@@ -0,0 +1,142 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.media@1.0-vts.spec",
+    srcs: [
+        ":android.hardware.media@1.0_hal",
+    ],
+    out: [
+        "android/hardware/media/1.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.media@1.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.media@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/media/1.0/ $(genDir)/android/hardware/media/1.0/",
+    srcs: [
+        ":android.hardware.media@1.0_hal",
+    ],
+    out: [
+        "android/hardware/media/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.media@1.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.media@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/media/1.0/ $(genDir)/android/hardware/media/1.0/",
+    srcs: [
+        ":android.hardware.media@1.0_hal",
+    ],
+    out: [
+        "android/hardware/media/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.media@1.0-vts.driver",
+    generated_sources: ["android.hardware.media@1.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.media@1.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.media@1.0-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.media@1.0",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.graphics.common@1.0-vts.driver",
+    ],
+    export_shared_lib_headers: [
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.graphics.common@1.0-vts.driver",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.media@1.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.media@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/media/1.0/ $(genDir)/android/hardware/media/1.0/",
+    srcs: [
+        ":android.hardware.media@1.0_hal",
+    ],
+    out: [
+        "android/hardware/media/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.media@1.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.media@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/media/1.0/ $(genDir)/android/hardware/media/1.0/",
+    srcs: [
+        ":android.hardware.media@1.0_hal",
+    ],
+    out: [
+        "android/hardware/media/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.media@1.0-vts.profiler",
+    generated_sources: ["android.hardware.media@1.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.media@1.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.media@1.0-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.media@1.0",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.graphics.common@1.0-vts.profiler",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/media/__init__.py b/media/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/media/__init__.py
diff --git a/media/omx/V1_0/Android.bp b/media/omx/V1_0/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/media/omx/V1_0/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/media/omx/V1_0/__init__.py b/media/omx/V1_0/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/media/omx/V1_0/__init__.py
diff --git a/media/omx/V1_0/build/Android.bp b/media/omx/V1_0/build/Android.bp
new file mode 100644
index 0000000..8ba34d8
--- /dev/null
+++ b/media/omx/V1_0/build/Android.bp
@@ -0,0 +1,184 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.media.omx@1.0-vts.spec",
+    srcs: [
+        ":android.hardware.media.omx@1.0_hal",
+    ],
+    out: [
+        "android/hardware/media/omx/1.0/GraphicBufferSource.vts",
+        "android/hardware/media/omx/1.0/Omx.vts",
+        "android/hardware/media/omx/1.0/OmxBufferSource.vts",
+        "android/hardware/media/omx/1.0/OmxNode.vts",
+        "android/hardware/media/omx/1.0/OmxObserver.vts",
+        "android/hardware/media/omx/1.0/OmxStore.vts",
+        "android/hardware/media/omx/1.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.media.omx@1.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.media.omx@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/media/omx/1.0/ $(genDir)/android/hardware/media/omx/1.0/",
+    srcs: [
+        ":android.hardware.media.omx@1.0_hal",
+    ],
+    out: [
+        "android/hardware/media/omx/1.0/GraphicBufferSource.vts.cpp",
+        "android/hardware/media/omx/1.0/Omx.vts.cpp",
+        "android/hardware/media/omx/1.0/OmxBufferSource.vts.cpp",
+        "android/hardware/media/omx/1.0/OmxNode.vts.cpp",
+        "android/hardware/media/omx/1.0/OmxObserver.vts.cpp",
+        "android/hardware/media/omx/1.0/OmxStore.vts.cpp",
+        "android/hardware/media/omx/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.media.omx@1.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.media.omx@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/media/omx/1.0/ $(genDir)/android/hardware/media/omx/1.0/",
+    srcs: [
+        ":android.hardware.media.omx@1.0_hal",
+    ],
+    out: [
+        "android/hardware/media/omx/1.0/GraphicBufferSource.vts.h",
+        "android/hardware/media/omx/1.0/Omx.vts.h",
+        "android/hardware/media/omx/1.0/OmxBufferSource.vts.h",
+        "android/hardware/media/omx/1.0/OmxNode.vts.h",
+        "android/hardware/media/omx/1.0/OmxObserver.vts.h",
+        "android/hardware/media/omx/1.0/OmxStore.vts.h",
+        "android/hardware/media/omx/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.media.omx@1.0-vts.driver",
+    generated_sources: ["android.hardware.media.omx@1.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.media.omx@1.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.media.omx@1.0-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.media.omx@1.0",
+        "android.hardware.graphics.bufferqueue@1.0",
+        "android.hardware.graphics.bufferqueue@1.0-vts.driver",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.graphics.common@1.0-vts.driver",
+        "android.hardware.media@1.0",
+        "android.hardware.media@1.0-vts.driver",
+    ],
+    export_shared_lib_headers: [
+        "android.hardware.graphics.bufferqueue@1.0",
+        "android.hardware.graphics.bufferqueue@1.0-vts.driver",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.graphics.common@1.0-vts.driver",
+        "android.hardware.media@1.0",
+        "android.hardware.media@1.0-vts.driver",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.media.omx@1.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.media.omx@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/media/omx/1.0/ $(genDir)/android/hardware/media/omx/1.0/",
+    srcs: [
+        ":android.hardware.media.omx@1.0_hal",
+    ],
+    out: [
+        "android/hardware/media/omx/1.0/GraphicBufferSource.vts.cpp",
+        "android/hardware/media/omx/1.0/Omx.vts.cpp",
+        "android/hardware/media/omx/1.0/OmxBufferSource.vts.cpp",
+        "android/hardware/media/omx/1.0/OmxNode.vts.cpp",
+        "android/hardware/media/omx/1.0/OmxObserver.vts.cpp",
+        "android/hardware/media/omx/1.0/OmxStore.vts.cpp",
+        "android/hardware/media/omx/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.media.omx@1.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.media.omx@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/media/omx/1.0/ $(genDir)/android/hardware/media/omx/1.0/",
+    srcs: [
+        ":android.hardware.media.omx@1.0_hal",
+    ],
+    out: [
+        "android/hardware/media/omx/1.0/GraphicBufferSource.vts.h",
+        "android/hardware/media/omx/1.0/Omx.vts.h",
+        "android/hardware/media/omx/1.0/OmxBufferSource.vts.h",
+        "android/hardware/media/omx/1.0/OmxNode.vts.h",
+        "android/hardware/media/omx/1.0/OmxObserver.vts.h",
+        "android/hardware/media/omx/1.0/OmxStore.vts.h",
+        "android/hardware/media/omx/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.media.omx@1.0-vts.profiler",
+    generated_sources: ["android.hardware.media.omx@1.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.media.omx@1.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.media.omx@1.0-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.media.omx@1.0",
+        "android.hardware.graphics.bufferqueue@1.0",
+        "android.hardware.graphics.bufferqueue@1.0-vts.profiler",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.graphics.common@1.0-vts.profiler",
+        "android.hardware.media@1.0",
+        "android.hardware.media@1.0-vts.profiler",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/media/omx/V1_0/host/Android.mk b/media/omx/V1_0/host/Android.mk
new file mode 100644
index 0000000..6244a05
--- /dev/null
+++ b/media/omx/V1_0/host/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalMediaOmxV1_0Host
+VTS_CONFIG_SRC_DIR := testcases/hal/media/omx/V1_0/host
+include test/vts/tools/build/Android.host_config.mk
diff --git a/media/omx/V1_0/host/AndroidTest.xml b/media/omx/V1_0/host/AndroidTest.xml
new file mode 100644
index 0000000..e0b3e9e
--- /dev/null
+++ b/media/omx/V1_0/host/AndroidTest.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalMediaOmxV1_0Host test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="true"/>
+        <option name="push-group" value="HalHidlHostTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="spec/hardware/interfaces/media/omx/1.0/vts/GraphicBufferSource.vts->/data/local/tmp/spec/android/hardware/media/omx/1.0/GraphicBufferSource.vts"/>
+        <option name="push" value="spec/hardware/interfaces/media/omx/1.0/vts/Omx.vts->/data/local/tmp/spec/android/hardware/media/omx/1.0/Omx.vts"/>
+        <option name="push" value="spec/hardware/interfaces/media/omx/1.0/vts/OmxBufferSource.vts->/data/local/tmp/spec/android/hardware/media/omx/1.0/OmxBufferSource.vts"/>
+        <option name="push" value="spec/hardware/interfaces/media/omx/1.0/vts/OmxNode.vts->/data/local/tmp/spec/android/hardware/media/omx/1.0/OmxNode.vts"/>
+        <option name="push" value="spec/hardware/interfaces/media/omx/1.0/vts/OmxObserver.vts->/data/local/tmp/spec/android/hardware/media/omx/1.0/OmxObserver.vts"/>
+        <option name="push" value="spec/hardware/interfaces/media/omx/1.0/vts/types.vts->/data/local/tmp/spec/android/hardware/media/omx/1.0/types.vts"/>
+        <option name="push" value="spec/hardware/interfaces/graphics/common/1.0/vts/types.vts->/data/local/tmp/spec/android/hardware/graphics/common/1.0/types.vts"/>
+        <option name="push" value="spec/hardware/interfaces/media/1.0/vts/types.vts->/data/local/tmp/spec/android/hardware/media/1.0/types.vts"/>
+        <option name="push" value="DATA/lib/android.hardware.graphics.bufferqueue@1.0-vts.driver.so->/data/local/tmp/32/android.hardware.graphics.bufferqueue@1.0-vts.driver.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.graphics.bufferqueue@1.0-vts.driver.so->/data/local/tmp/64/android.hardware.graphics.bufferqueue@1.0-vts.driver.so"/>
+        <option name="push" value="DATA/lib/android.hardware.graphics.common@1.0-vts.driver.so->/data/local/tmp/32/android.hardware.graphics.common@1.0-vts.driver.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.graphics.common@1.0-vts.driver.so->/data/local/tmp/64/android.hardware.graphics.common@1.0-vts.driver.so"/>
+        <option name="push" value="DATA/lib/android.hardware.media@1.0-vts.driver.so->/data/local/tmp/32/android.hardware.media@1.0-vts.driver.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.media@1.0-vts.driver.so->/data/local/tmp/64/android.hardware.media@1.0-vts.driver.so"/>
+        <option name="push" value="DATA/lib/android.hardware.media.omx@1.0-vts.driver.so->/data/local/tmp/32/android.hardware.media.omx@1.0-vts.driver.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.media.omx@1.0-vts.driver.so->/data/local/tmp/64/android.hardware.media.omx@1.0-vts.driver.so"/>
+        <option name="push" value="DATA/media/res/bbb_352x288_420p_30fps_32frames.yuv->/sdcard/media/bbb_352x288_420p_30fps_32frames.yuv"/>
+        <option name="push" value="DATA/media/res/bbb_avc_1920x1080_5000kbps_30fps.h264->/sdcard/media/bbb_avc_1920x1080_5000kbps_30fps.h264"/>
+        <option name="push" value="DATA/media/res/bbb_avc_1920x1080_5000kbps_30fps.info->/sdcard/media/bbb_avc_1920x1080_5000kbps_30fps.info"/>
+        <option name="push" value="DATA/media/res/bbb_mp3_stereo_192kbps_48000hz.info->/sdcard/media/bbb_mp3_stereo_192kbps_48000hz.info"/>
+        <option name="push" value="DATA/media/res/bbb_mp3_stereo_192kbps_48000hz.mp3->/sdcard/media/bbb_mp3_stereo_192kbps_48000hz.mp3"/>
+        <option name="push" value="DATA/media/res/bbb_raw_1ch_16khz_s16le.raw->/sdcard/media/bbb_raw_1ch_16khz_s16le.raw"/>
+        <option name="push" value="DATA/media/res/bbb_raw_1ch_8khz_s16le.raw->/sdcard/media/bbb_raw_1ch_8khz_s16le.raw"/>
+        <option name="push" value="DATA/media/res/bbb_raw_2ch_48khz_s16le.raw->/sdcard/media/bbb_raw_2ch_48khz_s16le.raw"/>
+        <option name="push" value="DATA/media/res/sine_amrnb_1ch_12kbps_8000hz.amrnb->/sdcard/media/sine_amrnb_1ch_12kbps_8000hz.amrnb"/>
+        <option name="push" value="DATA/media/res/sine_amrnb_1ch_12kbps_8000hz.info->/sdcard/media/sine_amrnb_1ch_12kbps_8000hz.info"/>
+        <option name="push" value="DATA/media/res/bbb_h263_352x288_300kbps_12fps.h263->/sdcard/media/bbb_h263_352x288_300kbps_12fps.h263"/>
+        <option name="push" value="DATA/media/res/bbb_h263_352x288_300kbps_12fps.info->/sdcard/media/bbb_h263_352x288_300kbps_12fps.info"/>
+        <option name="push" value="DATA/media/res/bbb_hevc_640x360_1600kbps_30fps.hevc->/sdcard/media/bbb_hevc_640x360_1600kbps_30fps.hevc"/>
+        <option name="push" value="DATA/media/res/bbb_hevc_640x360_1600kbps_30fps.info->/sdcard/media/bbb_hevc_640x360_1600kbps_30fps.info"/>
+        <option name="push" value="DATA/media/res/bbb_mpeg2_176x144_105kbps_25fps.m2v->/sdcard/media/bbb_mpeg2_176x144_105kbps_25fps.m2v"/>
+        <option name="push" value="DATA/media/res/bbb_mpeg2_176x144_105kbps_25fps.info->/sdcard/media/bbb_mpeg2_176x144_105kbps_25fps.info"/>
+        <option name="push" value="DATA/media/res/bbb_mpeg4_1280x720_1000kbps_25fps.m4v->/sdcard/media/bbb_mpeg4_1280x720_1000kbps_25fps.m4v"/>
+        <option name="push" value="DATA/media/res/bbb_mpeg4_1280x720_1000kbps_25fps.info->/sdcard/media/bbb_mpeg4_1280x720_1000kbps_25fps.info"/>
+        <option name="push" value="DATA/media/res/bbb_vp8_640x360_2mbps_30fps.vp8->/sdcard/media/bbb_vp8_640x360_2mbps_30fps.vp8"/>
+        <option name="push" value="DATA/media/res/bbb_vp8_640x360_2mbps_30fps.info->/sdcard/media/bbb_vp8_640x360_2mbps_30fps.info"/>
+        <option name="push" value="DATA/media/res/bbb_vp9_640x360_1600kbps_30fps.vp9->/sdcard/media/bbb_vp9_640x360_1600kbps_30fps.vp9"/>
+        <option name="push" value="DATA/media/res/bbb_vp9_640x360_1600kbps_30fps.info->/sdcard/media/bbb_vp9_640x360_1600kbps_30fps.info"/>
+        <option name="push" value="DATA/media/res/bbb_aac_stereo_128kbps_48000hz.aac->/sdcard/media/bbb_aac_stereo_128kbps_48000hz.aac"/>
+        <option name="push" value="DATA/media/res/bbb_aac_stereo_128kbps_48000hz.info->/sdcard/media/bbb_aac_stereo_128kbps_48000hz.info"/>
+        <option name="push" value="DATA/media/res/bbb_amrwb_1ch_14kbps_16000hz.amrwb->/sdcard/media/bbb_amrwb_1ch_14kbps_16000hz.amrwb"/>
+        <option name="push" value="DATA/media/res/bbb_amrwb_1ch_14kbps_16000hz.info->/sdcard/media/bbb_amrwb_1ch_14kbps_16000hz.info"/>
+        <option name="push" value="DATA/media/res/bbb_opus_stereo_128kbps_48000hz.opus->/sdcard/media/bbb_opus_stereo_128kbps_48000hz.opus"/>
+        <option name="push" value="DATA/media/res/bbb_opus_stereo_128kbps_48000hz.info->/sdcard/media/bbb_opus_stereo_128kbps_48000hz.info"/>
+        <option name="push" value="DATA/media/res/bbb_vorbis_stereo_128kbps_48000hz.vorbis->/sdcard/media/bbb_vorbis_stereo_128kbps_48000hz.vorbis"/>
+        <option name="push" value="DATA/media/res/bbb_vorbis_stereo_128kbps_48000hz.info->/sdcard/media/bbb_vorbis_stereo_128kbps_48000hz.info"/>
+        <option name="push" value="DATA/media/res/bbb_g711alaw_1ch_8khz.raw->/sdcard/media/bbb_g711alaw_1ch_8khz.raw"/>
+        <option name="push" value="DATA/media/res/bbb_g711alaw_1ch_8khz.info->/sdcard/media/bbb_g711alaw_1ch_8khz.info"/>
+        <option name="push" value="DATA/media/res/bbb_g711mulaw_1ch_8khz.raw->/sdcard/media/bbb_g711mulaw_1ch_8khz.raw"/>
+        <option name="push" value="DATA/media/res/bbb_g711mulaw_1ch_8khz.info->/sdcard/media/bbb_g711mulaw_1ch_8khz.info"/>
+        <option name="push" value="DATA/media/res/bbb_gsm_1ch_8khz_13kbps.raw->/sdcard/media/bbb_gsm_1ch_8khz_13kbps.raw"/>
+        <option name="push" value="DATA/media/res/bbb_gsm_1ch_8khz_13kbps.info->/sdcard/media/bbb_gsm_1ch_8khz_13kbps.info"/>
+        <option name="push" value="DATA/media/res/bbb_raw_1ch_8khz_s32le.raw->/sdcard/media/bbb_raw_1ch_8khz_s32le.raw"/>
+        <option name="push" value="DATA/media/res/bbb_raw_1ch_8khz_s32le.info->/sdcard/media/bbb_raw_1ch_8khz_s32le.info"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalMediaOmxV1_0Host"/>
+        <option name="test-case-path" value="vts/testcases/hal/media/omx/V1_0/host/VtsHalMediaOmxV1_0HostTest"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalMediaOmxV1_0TargetComponentTest/VtsHalMediaOmxV1_0TargetComponentTest"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalMediaOmxV1_0TargetAudioEncTest/VtsHalMediaOmxV1_0TargetAudioEncTest"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalMediaOmxV1_0TargetAudioDecTest/VtsHalMediaOmxV1_0TargetAudioDecTest"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalMediaOmxV1_0TargetVideoEncTest/VtsHalMediaOmxV1_0TargetVideoEncTest"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalMediaOmxV1_0TargetVideoDecTest/VtsHalMediaOmxV1_0TargetVideoDecTest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="hal-hidl-package-name" value="android.hardware.media.omx@1.0"/>
+        <option name="precondition-lshal" value="android.hardware.media.omx@1.0"/>
+        <option name="test-timeout" value="2h"/>
+    </test>
+</configuration>
diff --git a/media/omx/V1_0/host/VtsHalMediaOmxV1_0HostTest.py b/media/omx/V1_0/host/VtsHalMediaOmxV1_0HostTest.py
new file mode 100644
index 0000000..2f4d6e9
--- /dev/null
+++ b/media/omx/V1_0/host/VtsHalMediaOmxV1_0HostTest.py
@@ -0,0 +1,130 @@
+#!/usr/bin/env python
+#
+# Copyright (C) 2017 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.
+#
+
+import logging
+import time
+
+from vts.runners.host import asserts
+from vts.runners.host import keys
+from vts.runners.host import test_runner
+from vts.testcases.template.hal_hidl_gtest import hal_hidl_gtest
+import VtsHalMediaOmxV1_0TestCase as omx_test_case
+
+
+class VtsHalMediaOmxV1_0Host(hal_hidl_gtest.HidlHalGTest):
+    """Host test class to run the Media_Omx HAL."""
+
+    COMPONENT_TEST = "ComponentHidlTest"
+    AUDIO_ENC_TEST = "AudioEncHidlTest"
+    AUDIO_DEC_TEST = "AudioDecHidlTest"
+    VIDEO_ENC_TEST = "VideoEncHidlTest"
+    VIDEO_DEC_TEST = "VideoDecHidlTest"
+
+    # Roles we want to test.
+    whitelist_roles = ["audio_encoder.aac",
+                       "audio_encoder.amrnb",
+                       "audio_encoder.amrwb",
+                       "audio_encoder.flac",
+                       "audio_decoder.aac",
+                       "audio_decoder.amrnb",
+                       "audio_decoder.amrwb",
+                       "audio_decoder.g711alaw",
+                       "audio_decoder.g711mlaw",
+                       "audio_decoder.gsm",
+                       "audio_decoder.mp3",
+                       "audio_decoder.opus",
+                       "audio_decoder.raw",
+                       "audio_decoder.vorbis",
+                       "video_encoder.avc",
+                       "video_encoder.h263",
+                       "video_encoder.mpeg4",
+                       "video_encoder.vp8",
+                       "video_encoder.vp9",
+                       "video_decoder.avc",
+                       "video_decoder.h263",
+                       "video_decoder.hevc",
+                       "video_decoder.mpeg4",
+                       "video_decoder.vp8",
+                       "video_decoder.vp9"]
+
+    def CreateTestCases(self):
+        """Get all registered test components and create test case objects."""
+        # Init the IOmx hal.
+        self._dut.hal.InitHidlHal(
+            target_type="media_omx",
+            target_basepaths=self._dut.libPaths,
+            target_version=1.0,
+            target_package="android.hardware.media.omx",
+            target_component_name="IOmx",
+            bits=64 if self._dut.is64Bit else 32)
+
+        # Call listNodes to get all registered components.
+        self.vtypes = self._dut.hal.media_omx.GetHidlTypeInterface("types")
+        status, nodeList = self._dut.hal.media_omx.listNodes()
+        asserts.assertEqual(self.vtypes.Status.OK, status)
+
+        self.components = {}
+        for node in nodeList:
+            self.components[node['mName']] = node['mRoles']
+
+        super(VtsHalMediaOmxV1_0Host, self).CreateTestCases()
+
+    # @Override
+    def CreateTestCase(self, path, tag=''):
+        """Create a list of VtsHalMediaOmxV1_0testCase objects.
+
+        For each target side gtest test case, create a set of new test cases
+        argumented with different component and role values.
+
+        Args:
+            path: string, absolute path of a gtest binary on device
+            tag: string, a tag that will be appended to the end of test name
+
+        Returns:
+            A list of VtsHalMediaOmxV1_0TestCase objects
+        """
+        gtest_cases = super(VtsHalMediaOmxV1_0Host, self).CreateTestCase(path,
+                                                                         tag)
+        test_cases = []
+
+        for gtest_case in gtest_cases:
+            test_suite = gtest_case.GetFullName()
+            for component, roles in self.components.iteritems():
+                for role in roles:
+                    if not self.COMPONENT_TEST in test_suite and not role in self.whitelist_roles:
+                        continue
+                    if self.AUDIO_ENC_TEST in test_suite and not "audio_encoder" in role:
+                        continue
+                    if self.AUDIO_DEC_TEST in test_suite and not "audio_decoder" in role:
+                        continue
+                    if self.VIDEO_ENC_TEST in test_suite and not "video_encoder" in role:
+                        continue
+                    if self.VIDEO_DEC_TEST in test_suite and not "video_decoder" in role:
+                        continue
+                    test_name = component + '_' + role
+                    # TODO (zhuoyao): get instance name using lshal.
+                    instance_name = "default"
+                    test_case = omx_test_case.VtsHalMediaOmxV1_0TestCase(
+                        component, role, instance_name, test_suite, test_name,
+                        path)
+                    test_cases.append(test_case)
+        logging.info("num of test_testcases: %s", len(test_cases))
+        return test_cases
+
+
+if __name__ == "__main__":
+    test_runner.main()
diff --git a/media/omx/V1_0/host/VtsHalMediaOmxV1_0TestCase.py b/media/omx/V1_0/host/VtsHalMediaOmxV1_0TestCase.py
new file mode 100644
index 0000000..53b2189
--- /dev/null
+++ b/media/omx/V1_0/host/VtsHalMediaOmxV1_0TestCase.py
@@ -0,0 +1,50 @@
+#
+# Copyright (C) 2017 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.
+#
+
+import logging
+import os
+
+from vts.testcases.template.gtest_binary_test import gtest_test_case
+
+class VtsHalMediaOmxV1_0TestCase(gtest_test_case.GtestTestCase):
+    """A class to represent a media_omx test case.
+
+    Attributes:
+        component: string, name of a IOmxNode component.
+        role: string, role of a IOmxNode component.
+        instance: string, name of the binderized hal server instance.
+    """
+
+    def __init__(self, component, role, instance, *args, **kwargs):
+        super(VtsHalMediaOmxV1_0TestCase, self).__init__(*args, **kwargs)
+        self._component = component
+        self._role = role
+        self._instance = instance
+
+    # @Override
+    def GetRunCommand(self):
+        """Get the command to run the test. """
+
+        orig_cmds = super(VtsHalMediaOmxV1_0TestCase,
+                          self).GetRunCommand(test_name=self.test_suite),
+
+        new_cmd = [('{cmd} -I {instance} -C {component} -R {role}').format(
+            cmd=orig_cmds[0][0],
+            instance=self._instance,
+            component=self._component,
+            role=self._role), orig_cmds[0][1]]
+
+        return new_cmd
diff --git a/media/omx/V1_0/host/__init__.py b/media/omx/V1_0/host/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/media/omx/V1_0/host/__init__.py
diff --git a/media/omx/__init__.py b/media/omx/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/media/omx/__init__.py
diff --git a/memtrack/Android.bp b/memtrack/Android.bp
new file mode 100644
index 0000000..cdc8905
--- /dev/null
+++ b/memtrack/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "V1_0",
+]
diff --git a/memtrack/V1_0/Android.bp b/memtrack/V1_0/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/memtrack/V1_0/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/memtrack/V1_0/build/Android.bp b/memtrack/V1_0/build/Android.bp
new file mode 100644
index 0000000..9f33ebf
--- /dev/null
+++ b/memtrack/V1_0/build/Android.bp
@@ -0,0 +1,144 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.memtrack@1.0-vts.spec",
+    srcs: [
+        ":android.hardware.memtrack@1.0_hal",
+    ],
+    out: [
+        "android/hardware/memtrack/1.0/Memtrack.vts",
+        "android/hardware/memtrack/1.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.memtrack@1.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.memtrack@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/memtrack/1.0/ $(genDir)/android/hardware/memtrack/1.0/",
+    srcs: [
+        ":android.hardware.memtrack@1.0_hal",
+    ],
+    out: [
+        "android/hardware/memtrack/1.0/Memtrack.vts.cpp",
+        "android/hardware/memtrack/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.memtrack@1.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.memtrack@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/memtrack/1.0/ $(genDir)/android/hardware/memtrack/1.0/",
+    srcs: [
+        ":android.hardware.memtrack@1.0_hal",
+    ],
+    out: [
+        "android/hardware/memtrack/1.0/Memtrack.vts.h",
+        "android/hardware/memtrack/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.memtrack@1.0-vts.driver",
+    generated_sources: ["android.hardware.memtrack@1.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.memtrack@1.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.memtrack@1.0-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.memtrack@1.0",
+        
+    ],
+    export_shared_lib_headers: [
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.memtrack@1.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.memtrack@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/memtrack/1.0/ $(genDir)/android/hardware/memtrack/1.0/",
+    srcs: [
+        ":android.hardware.memtrack@1.0_hal",
+    ],
+    out: [
+        "android/hardware/memtrack/1.0/Memtrack.vts.cpp",
+        "android/hardware/memtrack/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.memtrack@1.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.memtrack@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/memtrack/1.0/ $(genDir)/android/hardware/memtrack/1.0/",
+    srcs: [
+        ":android.hardware.memtrack@1.0_hal",
+    ],
+    out: [
+        "android/hardware/memtrack/1.0/Memtrack.vts.h",
+        "android/hardware/memtrack/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.memtrack@1.0-vts.profiler",
+    generated_sources: ["android.hardware.memtrack@1.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.memtrack@1.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.memtrack@1.0-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.memtrack@1.0",
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/memtrack/V1_0/target/Android.mk b/memtrack/V1_0/target/Android.mk
new file mode 100644
index 0000000..7469bcf
--- /dev/null
+++ b/memtrack/V1_0/target/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalMemtrackV1_0Target
+VTS_CONFIG_SRC_DIR := testcases/hal/memtrack/V1_0/target
+include test/vts/tools/build/Android.host_config.mk
diff --git a/memtrack/V1_0/target/AndroidTest.xml b/memtrack/V1_0/target/AndroidTest.xml
new file mode 100644
index 0000000..df9cc62
--- /dev/null
+++ b/memtrack/V1_0/target/AndroidTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalMemtrackV1_0Target test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetTest.push"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalMemtrackV1_0Target"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalMemtrackV1_0TargetTest/VtsHalMemtrackV1_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalMemtrackV1_0TargetTest/VtsHalMemtrackV1_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.memtrack@1.0"/>
+        <option name="test-timeout" value="15m"/>
+    </test>
+</configuration>
diff --git a/memtrack/V1_0/target_profiling/Android.mk b/memtrack/V1_0/target_profiling/Android.mk
new file mode 100644
index 0000000..9e3c1d6
--- /dev/null
+++ b/memtrack/V1_0/target_profiling/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalMemtrackV1_0TargetProfiling
+VTS_CONFIG_SRC_DIR := testcases/hal/memtrack/V1_0/target_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/memtrack/V1_0/target_profiling/AndroidTest.xml b/memtrack/V1_0/target_profiling/AndroidTest.xml
new file mode 100644
index 0000000..1b2f632
--- /dev/null
+++ b/memtrack/V1_0/target_profiling/AndroidTest.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalMemtrackV1_0TargetProfiling test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetProfilingTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="DATA/lib/android.hardware.memtrack@1.0-vts.profiler.so->/data/local/tmp/32/android.hardware.memtrack@1.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.memtrack@1.0-vts.profiler.so->/data/local/tmp/64/android.hardware.memtrack@1.0-vts.profiler.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalMemtrackV1_0TargetProfiling"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalMemtrackV1_0TargetTest/VtsHalMemtrackV1_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalMemtrackV1_0TargetTest/VtsHalMemtrackV1_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="enable-profiling" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.memtrack@1.0"/>
+        <option name="test-timeout" value="15m"/>
+    </test>
+</configuration>
diff --git a/memtrack/V1_0/target_replay/Android.mk b/memtrack/V1_0/target_replay/Android.mk
new file mode 100644
index 0000000..af28dd5
--- /dev/null
+++ b/memtrack/V1_0/target_replay/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalMemtrackV1_0TargetReplay
+VTS_CONFIG_SRC_DIR := testcases/hal/memtrack/V1_0/target
+include test/vts/tools/build/Android.host_config.mk
diff --git a/memtrack/V1_0/target_replay/AndroidTest.xml b/memtrack/V1_0/target_replay/AndroidTest.xml
new file mode 100644
index 0000000..4f5ad9b
--- /dev/null
+++ b/memtrack/V1_0/target_replay/AndroidTest.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalMemtrackV1_0TargetReplay test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlHostTest.push"/>
+        <option name="cleanup" value="true" />
+        <option name="push" value="spec/hardware/interfaces/memtrack/1.0/vts/Memtrack.vts->/data/local/tmp/spec/target.vts" />
+        <option name="push" value="DATA/lib/android.hardware.memtrack@1.0-vts.driver.so->/data/local/tmp/32/android.hardware.memtrack@1.0-vts.driver.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.memtrack@1.0-vts.driver.so->/data/local/tmp/64/android.hardware.memtrack@1.0-vts.driver.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalMemtrackV1_0TargetReplay"/>
+        <option name="binary-test-type" value="hal_hidl_replay_test" />
+        <option name="hal-hidl-replay-test-trace-path" value="test/vts-testcase/hal-trace/memtrack/V1_0/android.hardware.memtrack@1.0_sailfish_1.vts.trace" />
+        <option name="hal-hidl-package-name" value="android.hardware.memtrack@1.0" />
+        <option name="test-timeout" value="15m"/>
+    </test>
+</configuration>
diff --git a/power/Android.bp b/power/Android.bp
new file mode 100644
index 0000000..cdc8905
--- /dev/null
+++ b/power/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "V1_0",
+]
diff --git a/power/V1_0/Android.bp b/power/V1_0/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/power/V1_0/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/power/V1_0/build/Android.bp b/power/V1_0/build/Android.bp
new file mode 100644
index 0000000..ba53695
--- /dev/null
+++ b/power/V1_0/build/Android.bp
@@ -0,0 +1,144 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.power@1.0-vts.spec",
+    srcs: [
+        ":android.hardware.power@1.0_hal",
+    ],
+    out: [
+        "android/hardware/power/1.0/Power.vts",
+        "android/hardware/power/1.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.power@1.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.power@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/power/1.0/ $(genDir)/android/hardware/power/1.0/",
+    srcs: [
+        ":android.hardware.power@1.0_hal",
+    ],
+    out: [
+        "android/hardware/power/1.0/Power.vts.cpp",
+        "android/hardware/power/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.power@1.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.power@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/power/1.0/ $(genDir)/android/hardware/power/1.0/",
+    srcs: [
+        ":android.hardware.power@1.0_hal",
+    ],
+    out: [
+        "android/hardware/power/1.0/Power.vts.h",
+        "android/hardware/power/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.power@1.0-vts.driver",
+    generated_sources: ["android.hardware.power@1.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.power@1.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.power@1.0-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.power@1.0",
+        
+    ],
+    export_shared_lib_headers: [
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.power@1.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.power@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/power/1.0/ $(genDir)/android/hardware/power/1.0/",
+    srcs: [
+        ":android.hardware.power@1.0_hal",
+    ],
+    out: [
+        "android/hardware/power/1.0/Power.vts.cpp",
+        "android/hardware/power/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.power@1.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.power@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/power/1.0/ $(genDir)/android/hardware/power/1.0/",
+    srcs: [
+        ":android.hardware.power@1.0_hal",
+    ],
+    out: [
+        "android/hardware/power/1.0/Power.vts.h",
+        "android/hardware/power/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.power@1.0-vts.profiler",
+    generated_sources: ["android.hardware.power@1.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.power@1.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.power@1.0-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.power@1.0",
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/power/V1_0/target/Android.mk b/power/V1_0/target/Android.mk
new file mode 100644
index 0000000..6057ecf
--- /dev/null
+++ b/power/V1_0/target/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalPowerV1_0Target
+VTS_CONFIG_SRC_DIR := testcases/hal/power/V1_0/target
+include test/vts/tools/build/Android.host_config.mk
diff --git a/power/V1_0/target/AndroidTest.xml b/power/V1_0/target/AndroidTest.xml
new file mode 100644
index 0000000..1353e36
--- /dev/null
+++ b/power/V1_0/target/AndroidTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalPowerV1_0Target test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetTest.push"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalPowerV1_0Target"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalPowerV1_0TargetTest/VtsHalPowerV1_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalPowerV1_0TargetTest/VtsHalPowerV1_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.power@1.0"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/power/V1_0/target_profiling/Android.mk b/power/V1_0/target_profiling/Android.mk
new file mode 100644
index 0000000..c20df37
--- /dev/null
+++ b/power/V1_0/target_profiling/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalPowerV1_0TargetProfiling
+VTS_CONFIG_SRC_DIR := testcases/hal/power/V1_0/target_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/power/V1_0/target_profiling/AndroidTest.xml b/power/V1_0/target_profiling/AndroidTest.xml
new file mode 100644
index 0000000..db17918
--- /dev/null
+++ b/power/V1_0/target_profiling/AndroidTest.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalPowerV1_0TargetProfiling test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetProfilingTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="DATA/lib/android.hardware.power@1.0-vts.profiler.so->/data/local/tmp/32/android.hardware.power@1.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.power@1.0-vts.profiler.so->/data/local/tmp/64/android.hardware.power@1.0-vts.profiler.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalPowerV1_0TargetProfiling"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalPowerV1_0TargetTest/VtsHalPowerV1_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalPowerV1_0TargetTest/VtsHalPowerV1_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="enable-profiling" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.power@1.0"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/power/V1_0/target_replay/Android.mk b/power/V1_0/target_replay/Android.mk
new file mode 100644
index 0000000..aed74e5
--- /dev/null
+++ b/power/V1_0/target_replay/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalPowerV1_0TargetReplay
+VTS_CONFIG_SRC_DIR := testcases/hal/power/V1_0/target
+include test/vts/tools/build/Android.host_config.mk
diff --git a/power/V1_0/target_replay/AndroidTest.xml b/power/V1_0/target_replay/AndroidTest.xml
new file mode 100644
index 0000000..983754b
--- /dev/null
+++ b/power/V1_0/target_replay/AndroidTest.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalPowerV1_0TargetReplay test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlHostTest.push"/>
+        <option name="cleanup" value="true" />
+        <option name="push" value="spec/hardware/interfaces/power/1.0/vts/Power.vts->/data/local/tmp/spec/target.vts" />
+        <option name="push" value="DATA/lib/android.hardware.power@1.0-vts.driver.so->/data/local/tmp/32/android.hardware.power@1.0-vts.driver.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.power@1.0-vts.driver.so->/data/local/tmp/64/android.hardware.power@1.0-vts.driver.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalPowerV1_0TargetReplay"/>
+        <option name="binary-test-type" value="hal_hidl_replay_test" />
+        <option name="hal-hidl-replay-test-trace-path" value="test/vts-testcase/hal-trace/power/V1_0/android.hardware.power@1.0_sailfish_1.vts.trace" />
+        <option name="hal-hidl-package-name" value="android.hardware.power@1.0" />
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/radio/V1_0/__init__.py b/radio/V1_0/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/radio/V1_0/__init__.py
diff --git a/radio/V1_0/target/AndroidTest.xml b/radio/V1_0/target/AndroidTest.xml
index 0fbf429..27f7b93 100644
--- a/radio/V1_0/target/AndroidTest.xml
+++ b/radio/V1_0/target/AndroidTest.xml
@@ -29,6 +29,12 @@
         <option name="binary-test-disable-framework" value="true"/>
         <option name="binary-test-stop-native-servers" value="true"/>
         <option name="precondition-lshal" value="android.hardware.radio@1.0"/>
+        <option name="exclude-filter" value="RadioHidlTest.getDataCallList" />
+        <option name="exclude-filter" value="RadioHidlTest.setRadioCapability" />
+        <option name="exclude-filter" value="RadioHidlTest.sendCDMAFeatureCode" />
+        <option name="exclude-filter" value="RadioHidlTest.setSimCardPower" />
+        <option name="exclude-filter" value="SapHidlTest.transferAtrReq" />
+        <option name="exclude-filter" value="RadioHidlTest.dial" />
         <option name="test-timeout" value="15m"/>
     </test>
 </configuration>
diff --git a/radio/__init__.py b/radio/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/radio/__init__.py
diff --git a/renderscript/V1_0/target_profiling/AndroidTest.xml b/renderscript/V1_0/target_profiling/AndroidTest.xml
index 1e1223f..1d87e03 100644
--- a/renderscript/V1_0/target_profiling/AndroidTest.xml
+++ b/renderscript/V1_0/target_profiling/AndroidTest.xml
@@ -29,6 +29,6 @@
         <option name="binary-test-type" value="hal_hidl_gtest"/>
         <option name="enable-profiling" value="true"/>
         <option name="precondition-lshal" value="android.hardware.renderscript@1.0"/>
-        <option name="test-timeout" value="5m"/>
+        <option name="test-timeout" value="2m"/>
     </test>
 </configuration>
diff --git a/sensors/Android.bp b/sensors/Android.bp
new file mode 100644
index 0000000..cdc8905
--- /dev/null
+++ b/sensors/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "V1_0",
+]
diff --git a/sensors/V1_0/Android.bp b/sensors/V1_0/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/sensors/V1_0/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/sensors/V1_0/__init__.py b/sensors/V1_0/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/sensors/V1_0/__init__.py
diff --git a/sensors/V1_0/build/Android.bp b/sensors/V1_0/build/Android.bp
new file mode 100644
index 0000000..16125e5
--- /dev/null
+++ b/sensors/V1_0/build/Android.bp
@@ -0,0 +1,144 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.sensors@1.0-vts.spec",
+    srcs: [
+        ":android.hardware.sensors@1.0_hal",
+    ],
+    out: [
+        "android/hardware/sensors/1.0/Sensors.vts",
+        "android/hardware/sensors/1.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.sensors@1.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.sensors@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/sensors/1.0/ $(genDir)/android/hardware/sensors/1.0/",
+    srcs: [
+        ":android.hardware.sensors@1.0_hal",
+    ],
+    out: [
+        "android/hardware/sensors/1.0/Sensors.vts.cpp",
+        "android/hardware/sensors/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.sensors@1.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.sensors@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/sensors/1.0/ $(genDir)/android/hardware/sensors/1.0/",
+    srcs: [
+        ":android.hardware.sensors@1.0_hal",
+    ],
+    out: [
+        "android/hardware/sensors/1.0/Sensors.vts.h",
+        "android/hardware/sensors/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.sensors@1.0-vts.driver",
+    generated_sources: ["android.hardware.sensors@1.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.sensors@1.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.sensors@1.0-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.sensors@1.0",
+        
+    ],
+    export_shared_lib_headers: [
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.sensors@1.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.sensors@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/sensors/1.0/ $(genDir)/android/hardware/sensors/1.0/",
+    srcs: [
+        ":android.hardware.sensors@1.0_hal",
+    ],
+    out: [
+        "android/hardware/sensors/1.0/Sensors.vts.cpp",
+        "android/hardware/sensors/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.sensors@1.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.sensors@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/sensors/1.0/ $(genDir)/android/hardware/sensors/1.0/",
+    srcs: [
+        ":android.hardware.sensors@1.0_hal",
+    ],
+    out: [
+        "android/hardware/sensors/1.0/Sensors.vts.h",
+        "android/hardware/sensors/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.sensors@1.0-vts.profiler",
+    generated_sources: ["android.hardware.sensors@1.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.sensors@1.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.sensors@1.0-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.sensors@1.0",
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/sensors/V1_0/host/Android.mk b/sensors/V1_0/host/Android.mk
new file mode 100644
index 0000000..55dc449
--- /dev/null
+++ b/sensors/V1_0/host/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalSensorsV1_0Host
+VTS_CONFIG_SRC_DIR := testcases/hal/sensors/V1_0/host
+include test/vts/tools/build/Android.host_config.mk
diff --git a/sensors/V1_0/host/AndroidTest.xml b/sensors/V1_0/host/AndroidTest.xml
new file mode 100644
index 0000000..9b979f2
--- /dev/null
+++ b/sensors/V1_0/host/AndroidTest.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalSensorsV1_0Host test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlHostTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="spec/hardware/interfaces/sensors/1.0/vts/Sensors.vts->/data/local/tmp/spec/android/hardware/sensors/1.0/Sensors.vts"/>
+        <option name="push" value="spec/hardware/interfaces/sensors/1.0/vts/types.vts->/data/local/tmp/spec/android/hardware/sensors/1.0/types.vts"/>
+        <option name="push" value="DATA/lib/android.hardware.sensors@1.0-vts.driver.so->/data/local/tmp/32/android.hardware.sensors@1.0-vts.driver.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.sensors@1.0-vts.driver.so->/data/local/tmp/64/android.hardware.sensors@1.0-vts.driver.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalSensorsV1_0Host"/>
+        <option name="test-case-path" value="vts/testcases/hal/sensors/V1_0/host/VtsHalSensorsV1_0HostTest"/>
+        <option name="precondition-lshal" value="android.hardware.sensors@1.0"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/sensors/V1_0/host/VtsHalSensorsV1_0HostTest.py b/sensors/V1_0/host/VtsHalSensorsV1_0HostTest.py
new file mode 100644
index 0000000..72acf35
--- /dev/null
+++ b/sensors/V1_0/host/VtsHalSensorsV1_0HostTest.py
@@ -0,0 +1,103 @@
+#!/usr/bin/env python
+#
+# Copyright (C) 2016 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.
+#
+
+import logging
+import time
+
+from vts.runners.host import asserts
+from vts.runners.host import base_test
+from vts.runners.host import test_runner
+from vts.utils.python.controllers import android_device
+from vts.utils.python.precondition import precondition_utils
+
+
+class SensorsHidlTest(base_test.BaseTestClass):
+    """Host testcase class for the SENSORS HIDL HAL.
+
+    This class set-up/tear-down the webDB host test framwork and contains host test cases for
+    sensors HIDL HAL.
+    """
+
+    def setUpClass(self):
+        """Creates a mirror and turns on the framework-layer SENSORS service."""
+        self.dut = self.registerController(android_device)[0]
+
+        self.dut.shell.InvokeTerminal("one")
+        self.dut.shell.one.Execute("setenforce 0")  # SELinux permissive mode
+        if not precondition_utils.CanRunHidlHalTest(
+            self, self.dut, self.dut.shell.one):
+            self._skip_all_testcases = True
+            return
+
+        # Test using the binderized mode
+        self.dut.shell.one.Execute(
+            "setprop vts.hal.vts.hidl.get_stub true")
+
+        self.dut.hal.InitHidlHal(
+            target_type="sensors",
+            target_basepaths=self.dut.libPaths,
+            target_version=1.0,
+            target_package="android.hardware.sensors",
+            target_component_name="ISensors",
+            hw_binder_service_name=None,
+            bits=int(self.abi_bitness))
+
+    def tearDownClass(self):
+        """ If profiling is enabled for the test, collect the profiling data
+            and disable profiling after the test is done.
+        """
+        if not self._skip_all_testcases and self.profiling.enabled:
+            self.profiling.ProcessAndUploadTraceData()
+
+    def setUp(self):
+        if self.profiling.enabled:
+            self.profiling.EnableVTSProfiling(self.dut.shell.one)
+
+    def tearDown(self):
+        if self.profiling.enabled:
+            self.profiling.ProcessTraceDataForTestCase(self.dut)
+            self.profiling.DisableVTSProfiling(self.dut.shell.one)
+
+    def testSensorsBasic(self):
+        """Test the basic operation of test framework and sensor HIDL HAL
+
+        This test obtains predefined enum values via sensors HIDL HAL host test framework and
+        compares them to known values as a sanity check to make sure both sensors HAL
+        and the test framework are working properly.
+        """
+        sensors_types = self.dut.hal.sensors.GetHidlTypeInterface("types")
+        logging.info("sensors_types: %s", sensors_types)
+        logging.info("OK: %s", sensors_types.Result.OK)
+        logging.info("BAD_VALUE: %s", sensors_types.Result.BAD_VALUE)
+        logging.info("NO_MEMORY: %s", sensors_types.Result.NO_MEMORY)
+        logging.info("PERMISSION_DENIED: %s", sensors_types.Result.PERMISSION_DENIED)
+        logging.info("INVALID_OPERATION: %s", sensors_types.Result.INVALID_OPERATION)
+        asserts.assertEqual(sensors_types.Result.OK, 0)
+        asserts.assertEqual(sensors_types.Result.NO_MEMORY, -12)
+        asserts.assertEqual(sensors_types.Result.BAD_VALUE, -22)
+        asserts.assertEqual(sensors_types.Result.INVALID_OPERATION, -38)
+
+        logging.info("sensor types:")
+        logging.info("ACCELEROMETER: %s", sensors_types.SensorType.ACCELEROMETER)
+        logging.info("MAGNETIC_FIELD: %s", sensors_types.SensorType.MAGNETIC_FIELD)
+        logging.info("GYROSCOPE: %s", sensors_types.SensorType.GYROSCOPE)
+        asserts.assertEqual(sensors_types.SensorType.ACCELEROMETER, 1)
+        asserts.assertEqual(sensors_types.SensorType.MAGNETIC_FIELD, 2)
+        asserts.assertEqual(sensors_types.SensorType.GYROSCOPE, 4)
+
+if __name__ == "__main__":
+    test_runner.main()
diff --git a/sensors/V1_0/host/__init__.py b/sensors/V1_0/host/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/sensors/V1_0/host/__init__.py
diff --git a/sensors/V1_0/host_profiling/Android.mk b/sensors/V1_0/host_profiling/Android.mk
new file mode 100644
index 0000000..74fff3b
--- /dev/null
+++ b/sensors/V1_0/host_profiling/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalSensorsV1_0HostProfiling
+VTS_CONFIG_SRC_DIR := testcases/hal/sensors/V1_0/host_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/sensors/V1_0/host_profiling/AndroidTest.xml b/sensors/V1_0/host_profiling/AndroidTest.xml
new file mode 100644
index 0000000..652512d
--- /dev/null
+++ b/sensors/V1_0/host_profiling/AndroidTest.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalSensorsV1_0HostProfiling test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlHostProfilingTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="spec/hardware/interfaces/sensors/1.0/vts/Sensors.vts->/data/local/tmp/spec/android/hardware/sensors/1.0/Sensors.vts"/>
+        <option name="push" value="spec/hardware/interfaces/sensors/1.0/vts/types.vts->/data/local/tmp/spec/android/hardware/sensors/1.0/types.vts"/>
+        <option name="push" value="DATA/lib/android.hardware.sensors@1.0-vts.driver.so->/data/local/tmp/32/android.hardware.sensors@1.0-vts.driver.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.sensors@1.0-vts.driver.so->/data/local/tmp/64/android.hardware.sensors@1.0-vts.driver.so"/>
+        <option name="push" value="DATA/lib/android.hardware.sensors@1.0-vts.profiler.so->/data/local/tmp/32/android.hardware.sensors@1.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.sensors@1.0-vts.profiler.so->/data/local/tmp/64/android.hardware.sensors@1.0-vts.profiler.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalSensorsV1_0HostProfiling"/>
+        <option name="test-case-path" value="vts/testcases/hal/sensors/V1_0/host/VtsHalSensorsV1_0HostTest"/>
+        <option name="enable-profiling" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.sensors@1.0"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/sensors/V1_0/target/Android.mk b/sensors/V1_0/target/Android.mk
new file mode 100644
index 0000000..64bb97d
--- /dev/null
+++ b/sensors/V1_0/target/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalSensorsV1_0Target
+VTS_CONFIG_SRC_DIR := testcases/hal/sensors/V1_0/target
+include test/vts/tools/build/Android.host_config.mk
diff --git a/sensors/V1_0/target/AndroidTest.xml b/sensors/V1_0/target/AndroidTest.xml
new file mode 100644
index 0000000..d9ead28
--- /dev/null
+++ b/sensors/V1_0/target/AndroidTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalSensorsV1_0Target test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetTest.push"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalSensorsV1_0Target"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalSensorsV1_0TargetTest/VtsHalSensorsV1_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalSensorsV1_0TargetTest/VtsHalSensorsV1_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.sensors@1.0"/>
+        <option name="test-timeout" value="15m"/>
+    </test>
+</configuration>
diff --git a/sensors/V1_0/target_profiling/Android.mk b/sensors/V1_0/target_profiling/Android.mk
new file mode 100644
index 0000000..a989354
--- /dev/null
+++ b/sensors/V1_0/target_profiling/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalSensorsV1_0TargetProfiling
+VTS_CONFIG_SRC_DIR := testcases/hal/sensors/V1_0/target_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/sensors/V1_0/target_profiling/AndroidTest.xml b/sensors/V1_0/target_profiling/AndroidTest.xml
new file mode 100644
index 0000000..ef6fe27
--- /dev/null
+++ b/sensors/V1_0/target_profiling/AndroidTest.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalSensorsV1_0TargetProfiling test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetProfilingTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="DATA/lib/android.hardware.sensors@1.0-vts.profiler.so->/data/local/tmp/32/android.hardware.sensors@1.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.sensors@1.0-vts.profiler.so->/data/local/tmp/64/android.hardware.sensors@1.0-vts.profiler.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalSensorsV1_0TargetProfiling"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalSensorsV1_0TargetTest/VtsHalSensorsV1_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalSensorsV1_0TargetTest/VtsHalSensorsV1_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="enable-profiling" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.sensors@1.0"/>
+        <option name="test-timeout" value="15m"/>
+    </test>
+</configuration>
diff --git a/sensors/__init__.py b/sensors/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/sensors/__init__.py
diff --git a/soundtrigger/Android.bp b/soundtrigger/Android.bp
new file mode 100644
index 0000000..fb60e6b
--- /dev/null
+++ b/soundtrigger/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "V2_0",
+]
diff --git a/soundtrigger/V2_0/Android.bp b/soundtrigger/V2_0/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/soundtrigger/V2_0/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/soundtrigger/V2_0/build/Android.bp b/soundtrigger/V2_0/build/Android.bp
new file mode 100644
index 0000000..952ed8b
--- /dev/null
+++ b/soundtrigger/V2_0/build/Android.bp
@@ -0,0 +1,152 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.soundtrigger@2.0-vts.spec",
+    srcs: [
+        ":android.hardware.soundtrigger@2.0_hal",
+    ],
+    out: [
+        "android/hardware/soundtrigger/2.0/SoundTriggerHw.vts",
+        "android/hardware/soundtrigger/2.0/SoundTriggerHwCallback.vts",
+        "android/hardware/soundtrigger/2.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.soundtrigger@2.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.soundtrigger@2.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/soundtrigger/2.0/ $(genDir)/android/hardware/soundtrigger/2.0/",
+    srcs: [
+        ":android.hardware.soundtrigger@2.0_hal",
+    ],
+    out: [
+        "android/hardware/soundtrigger/2.0/SoundTriggerHw.vts.cpp",
+        "android/hardware/soundtrigger/2.0/SoundTriggerHwCallback.vts.cpp",
+        "android/hardware/soundtrigger/2.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.soundtrigger@2.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.soundtrigger@2.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/soundtrigger/2.0/ $(genDir)/android/hardware/soundtrigger/2.0/",
+    srcs: [
+        ":android.hardware.soundtrigger@2.0_hal",
+    ],
+    out: [
+        "android/hardware/soundtrigger/2.0/SoundTriggerHw.vts.h",
+        "android/hardware/soundtrigger/2.0/SoundTriggerHwCallback.vts.h",
+        "android/hardware/soundtrigger/2.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.soundtrigger@2.0-vts.driver",
+    generated_sources: ["android.hardware.soundtrigger@2.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.soundtrigger@2.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.soundtrigger@2.0-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.soundtrigger@2.0",
+        "android.hardware.audio.common@2.0",
+        "android.hardware.audio.common@2.0-vts.driver",
+    ],
+    export_shared_lib_headers: [
+        "android.hardware.audio.common@2.0",
+        "android.hardware.audio.common@2.0-vts.driver",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.soundtrigger@2.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.soundtrigger@2.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/soundtrigger/2.0/ $(genDir)/android/hardware/soundtrigger/2.0/",
+    srcs: [
+        ":android.hardware.soundtrigger@2.0_hal",
+    ],
+    out: [
+        "android/hardware/soundtrigger/2.0/SoundTriggerHw.vts.cpp",
+        "android/hardware/soundtrigger/2.0/SoundTriggerHwCallback.vts.cpp",
+        "android/hardware/soundtrigger/2.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.soundtrigger@2.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.soundtrigger@2.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/soundtrigger/2.0/ $(genDir)/android/hardware/soundtrigger/2.0/",
+    srcs: [
+        ":android.hardware.soundtrigger@2.0_hal",
+    ],
+    out: [
+        "android/hardware/soundtrigger/2.0/SoundTriggerHw.vts.h",
+        "android/hardware/soundtrigger/2.0/SoundTriggerHwCallback.vts.h",
+        "android/hardware/soundtrigger/2.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.soundtrigger@2.0-vts.profiler",
+    generated_sources: ["android.hardware.soundtrigger@2.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.soundtrigger@2.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.soundtrigger@2.0-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.soundtrigger@2.0",
+        "android.hardware.audio.common@2.0",
+        "android.hardware.audio.common@2.0-vts.profiler",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/soundtrigger/V2_0/target/Android.mk b/soundtrigger/V2_0/target/Android.mk
new file mode 100644
index 0000000..09e4d6e
--- /dev/null
+++ b/soundtrigger/V2_0/target/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalSoundtriggerV2_0Target
+VTS_CONFIG_SRC_DIR := testcases/hal/soundtrigger/V2_0/target
+include test/vts/tools/build/Android.host_config.mk
diff --git a/soundtrigger/V2_0/target/AndroidTest.xml b/soundtrigger/V2_0/target/AndroidTest.xml
new file mode 100644
index 0000000..6fe5197
--- /dev/null
+++ b/soundtrigger/V2_0/target/AndroidTest.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalSoundtriggerV2_0Target test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetTest.push"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalSoundtriggerV2_0Target"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalSoundtriggerV2_0TargetTest/VtsHalSoundtriggerV2_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalSoundtriggerV2_0TargetTest/VtsHalSoundtriggerV2_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.soundtrigger@2.0"/>
+        <option name="precondition-file-path-prefix" value="/*/lib/hw/sound_trigger.primary." />
+        <option name="skip-on-64bit-abi" value="true" />
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/soundtrigger/V2_0/target/HalSoundTriggerHidlTargetBasicTest.config b/soundtrigger/V2_0/target/HalSoundTriggerHidlTargetBasicTest.config
new file mode 100644
index 0000000..5c12d13
--- /dev/null
+++ b/soundtrigger/V2_0/target/HalSoundTriggerHidlTargetBasicTest.config
@@ -0,0 +1,41 @@
+{
+    "use_gae_db": true,
+    "coverage": true,
+    "modules": [
+        {
+            "module_name": "system/lib/hw/sound_trigger.primary.bullhead",
+            "git_project": {
+                "name": "platform/vendor/lge/bullhead",
+                "path": "vendor/lge/bullhead"
+            }
+        },
+        {
+            "module_name": "system/lib/hw/sound_trigger.primary.angler",
+            "git_project": {
+                "name": "platform/vendor/huawei/angler",
+                "path": "vendor/huawei/angler"
+            }
+        },
+        {
+            "module_name": "system/lib/hw/sound_trigger.primary.marlin",
+            "git_project": {
+                "name": "platform/vendor/google_devices/marlin",
+                "path": "vendor/google_devices/marlin"
+            }
+        },
+        {
+            "module_name": "system/lib/hw/sound_trigger.primary.sailfish",
+            "git_project": {
+                "name": "platform/vendor/google_devices/marlin",
+                "path": "vendor/google_devices/marlin"
+            }
+        },
+        {
+            "module_name": "system/lib/hw/android.hardware.soundtrigger@2.0-impl",
+            "git_project": {
+                "name": "platform/hardware/interfaces",
+                "path": "hardware/interfaces"
+            }
+        }
+    ]
+}
diff --git a/soundtrigger/V2_0/target_profiling/Android.mk b/soundtrigger/V2_0/target_profiling/Android.mk
new file mode 100644
index 0000000..8b203c3
--- /dev/null
+++ b/soundtrigger/V2_0/target_profiling/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalSoundtriggerV2_0TargetProfiling
+VTS_CONFIG_SRC_DIR := testcases/hal/soundtrigger/V2_0/target_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/soundtrigger/V2_0/target_profiling/AndroidTest.xml b/soundtrigger/V2_0/target_profiling/AndroidTest.xml
new file mode 100644
index 0000000..b41e29f
--- /dev/null
+++ b/soundtrigger/V2_0/target_profiling/AndroidTest.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalSoundtriggerV2_0TargetProfiling test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetProfilingTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="DATA/lib/android.hardware.audio.common@2.0-vts.profiler.so->/data/local/tmp/32/android.hardware.audio.common@2.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.audio.common@2.0-vts.profiler.so->/data/local/tmp/64/android.hardware.audio.common@2.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib/android.hardware.soundtrigger@2.0-vts.profiler.so->/data/local/tmp/32/android.hardware.soundtrigger@2.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.soundtrigger@2.0-vts.profiler.so->/data/local/tmp/64/android.hardware.soundtrigger@2.0-vts.profiler.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalSoundtriggerV2_0TargetProfiling"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalSoundtriggerV2_0TargetTest/VtsHalSoundtriggerV2_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalSoundtriggerV2_0TargetTest/VtsHalSoundtriggerV2_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="enable-profiling" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.soundtrigger@2.0"/>
+        <option name="precondition-file-path-prefix" value="/*/lib/hw/sound_trigger.primary." />
+        <option name="skip-on-64bit-abi" value="true" />
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/tests/Android.bp b/tests/Android.bp
index 1ff9b9e..aa484db 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -5,6 +5,7 @@
     "bar/V1_0",
     "baz/V1_0",
     "expression/V1_0",
+    "extension/light/V2_0",
     "foo/V1_0",
     "hash/V1_0",
     "inheritance/V1_0",
diff --git a/tests/extension/light/V2_0/Android.bp b/tests/extension/light/V2_0/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/tests/extension/light/V2_0/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/tests/extension/light/V2_0/build/Android.bp b/tests/extension/light/V2_0/build/Android.bp
new file mode 100644
index 0000000..d2e28f8
--- /dev/null
+++ b/tests/extension/light/V2_0/build/Android.bp
@@ -0,0 +1,147 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.tests.extension.light@2.0-vts.spec",
+    srcs: [
+        ":android.hardware.tests.extension.light@2.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/extension/light/2.0/ExtLight.vts",
+        "android/hardware/tests/extension/light/2.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.tests.extension.light@2.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.extension.light@2.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/tests/extension/light/2.0/ $(genDir)/android/hardware/tests/extension/light/2.0/",
+    srcs: [
+        ":android.hardware.tests.extension.light@2.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/extension/light/2.0/ExtLight.vts.cpp",
+        "android/hardware/tests/extension/light/2.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tests.extension.light@2.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.extension.light@2.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/tests/extension/light/2.0/ $(genDir)/android/hardware/tests/extension/light/2.0/",
+    srcs: [
+        ":android.hardware.tests.extension.light@2.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/extension/light/2.0/ExtLight.vts.h",
+        "android/hardware/tests/extension/light/2.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.tests.extension.light@2.0-vts.driver",
+    generated_sources: ["android.hardware.tests.extension.light@2.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.tests.extension.light@2.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.tests.extension.light@2.0-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.tests.extension.light@2.0",
+        "android.hardware.light@2.0",
+        "android.hardware.light@2.0-vts.driver",
+    ],
+    export_shared_lib_headers: [
+        "android.hardware.light@2.0",
+        "android.hardware.light@2.0-vts.driver",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.tests.extension.light@2.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.extension.light@2.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/tests/extension/light/2.0/ $(genDir)/android/hardware/tests/extension/light/2.0/",
+    srcs: [
+        ":android.hardware.tests.extension.light@2.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/extension/light/2.0/ExtLight.vts.cpp",
+        "android/hardware/tests/extension/light/2.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tests.extension.light@2.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.extension.light@2.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/tests/extension/light/2.0/ $(genDir)/android/hardware/tests/extension/light/2.0/",
+    srcs: [
+        ":android.hardware.tests.extension.light@2.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/extension/light/2.0/ExtLight.vts.h",
+        "android/hardware/tests/extension/light/2.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.tests.extension.light@2.0-vts.profiler",
+    generated_sources: ["android.hardware.tests.extension.light@2.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.tests.extension.light@2.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.tests.extension.light@2.0-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.tests.extension.light@2.0",
+        "android.hardware.light@2.0",
+        "android.hardware.light@2.0-vts.profiler",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/thermal/Android.bp b/thermal/Android.bp
new file mode 100644
index 0000000..cdc8905
--- /dev/null
+++ b/thermal/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "V1_0",
+]
diff --git a/thermal/V1_0/Android.bp b/thermal/V1_0/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/thermal/V1_0/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/thermal/V1_0/build/Android.bp b/thermal/V1_0/build/Android.bp
new file mode 100644
index 0000000..c06e87b
--- /dev/null
+++ b/thermal/V1_0/build/Android.bp
@@ -0,0 +1,144 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.thermal@1.0-vts.spec",
+    srcs: [
+        ":android.hardware.thermal@1.0_hal",
+    ],
+    out: [
+        "android/hardware/thermal/1.0/Thermal.vts",
+        "android/hardware/thermal/1.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.thermal@1.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.thermal@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/thermal/1.0/ $(genDir)/android/hardware/thermal/1.0/",
+    srcs: [
+        ":android.hardware.thermal@1.0_hal",
+    ],
+    out: [
+        "android/hardware/thermal/1.0/Thermal.vts.cpp",
+        "android/hardware/thermal/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.thermal@1.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.thermal@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/thermal/1.0/ $(genDir)/android/hardware/thermal/1.0/",
+    srcs: [
+        ":android.hardware.thermal@1.0_hal",
+    ],
+    out: [
+        "android/hardware/thermal/1.0/Thermal.vts.h",
+        "android/hardware/thermal/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.thermal@1.0-vts.driver",
+    generated_sources: ["android.hardware.thermal@1.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.thermal@1.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.thermal@1.0-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.thermal@1.0",
+        
+    ],
+    export_shared_lib_headers: [
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.thermal@1.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.thermal@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/thermal/1.0/ $(genDir)/android/hardware/thermal/1.0/",
+    srcs: [
+        ":android.hardware.thermal@1.0_hal",
+    ],
+    out: [
+        "android/hardware/thermal/1.0/Thermal.vts.cpp",
+        "android/hardware/thermal/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.thermal@1.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.thermal@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/thermal/1.0/ $(genDir)/android/hardware/thermal/1.0/",
+    srcs: [
+        ":android.hardware.thermal@1.0_hal",
+    ],
+    out: [
+        "android/hardware/thermal/1.0/Thermal.vts.h",
+        "android/hardware/thermal/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.thermal@1.0-vts.profiler",
+    generated_sources: ["android.hardware.thermal@1.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.thermal@1.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.thermal@1.0-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.thermal@1.0",
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/thermal/V1_0/target/Android.mk b/thermal/V1_0/target/Android.mk
new file mode 100644
index 0000000..0d260e3
--- /dev/null
+++ b/thermal/V1_0/target/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalThermalV1_0Target
+VTS_CONFIG_SRC_DIR := testcases/hal/thermal/V1_0/target
+include test/vts/tools/build/Android.host_config.mk
diff --git a/thermal/V1_0/target/AndroidTest.xml b/thermal/V1_0/target/AndroidTest.xml
new file mode 100644
index 0000000..a9bb014
--- /dev/null
+++ b/thermal/V1_0/target/AndroidTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalThermalV1_0Target test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetTest.push"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalThermalV1_0Target"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalThermalV1_0TargetTest/VtsHalThermalV1_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalThermalV1_0TargetTest/VtsHalThermalV1_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.thermal@1.0"/>
+        <option name="test-timeout" value="15m"/>
+    </test>
+</configuration>
diff --git a/thermal/V1_0/target_profiling/Android.mk b/thermal/V1_0/target_profiling/Android.mk
new file mode 100644
index 0000000..3aebc82
--- /dev/null
+++ b/thermal/V1_0/target_profiling/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalThermalV1_0TargetProfiling
+VTS_CONFIG_SRC_DIR := testcases/hal/thermal/V1_0/target_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/thermal/V1_0/target_profiling/AndroidTest.xml b/thermal/V1_0/target_profiling/AndroidTest.xml
new file mode 100644
index 0000000..01cac2a
--- /dev/null
+++ b/thermal/V1_0/target_profiling/AndroidTest.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalThermalV1_0TargetProfiling test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetProfilingTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="DATA/lib/android.hardware.thermal@1.0-vts.profiler.so->/data/local/tmp/32/android.hardware.thermal@1.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.thermal@1.0-vts.profiler.so->/data/local/tmp/64/android.hardware.thermal@1.0-vts.profiler.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalThermalV1_0TargetProfiling"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalThermalV1_0TargetTest/VtsHalThermalV1_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalThermalV1_0TargetTest/VtsHalThermalV1_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="enable-profiling" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.thermal@1.0"/>
+        <option name="test-timeout" value="15m"/>
+    </test>
+</configuration>
diff --git a/thermal/V1_0/target_stress/Android.bp b/thermal/V1_0/target_stress/Android.bp
new file mode 100644
index 0000000..5e33c2e
--- /dev/null
+++ b/thermal/V1_0/target_stress/Android.bp
@@ -0,0 +1,37 @@
+//
+// Copyright (C) 2017 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.
+//
+
+cc_test {
+    name: "thermal_hidl_stress_test",
+    gtest: true,
+    srcs: ["thermal_hidl_stress_test.cpp"],
+    shared_libs: [
+        "libbase",
+        "liblog",
+        "libcutils",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libnativehelper",
+        "libutils",
+        "android.hardware.thermal@1.0",
+    ],
+    static_libs: ["libgtest"],
+    cflags: [
+        "-O0",
+        "-g",
+    ],
+}
diff --git a/thermal/V1_0/target_stress/Android.mk b/thermal/V1_0/target_stress/Android.mk
new file mode 100644
index 0000000..023cfa5
--- /dev/null
+++ b/thermal/V1_0/target_stress/Android.mk
@@ -0,0 +1,25 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(call all-subdir-makefiles)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := ThermalHidlTargetStressTest
+VTS_CONFIG_SRC_DIR := testcases/hal/thermal/V1_0/target_stress
+include test/vts/tools/build/Android.host_config.mk
diff --git a/thermal/V1_0/target_stress/AndroidTest.xml b/thermal/V1_0/target_stress/AndroidTest.xml
new file mode 100644
index 0000000..a59d9da
--- /dev/null
+++ b/thermal/V1_0/target_stress/AndroidTest.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS THERMAL HAL's target-side stress test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetTest.push" />
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer" />
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="ThermalHidlTargetStressTest" />
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/thermal_hidl_stress_test/thermal_hidl_stress_test" />
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/thermal_hidl_stress_test/thermal_hidl_stress_test" />
+        <option name="binary-test-type" value="gtest" />
+        <option name="test-timeout" value="5m" />
+    </test>
+</configuration>
+
diff --git a/thermal/V1_0/target_stress/thermal_hidl_stress_test.cpp b/thermal/V1_0/target_stress/thermal_hidl_stress_test.cpp
new file mode 100644
index 0000000..34be82a
--- /dev/null
+++ b/thermal/V1_0/target_stress/thermal_hidl_stress_test.cpp
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+
+#define LOG_TAG "thermal_hidl_target_stress_test"
+
+#include <android-base/logging.h>
+#include <android/hardware/thermal/1.0/IThermal.h>
+#include <android/hardware/thermal/1.0/types.h>
+
+#include <gtest/gtest.h>
+#include <chrono>
+#include <condition_variable>
+#include <mutex>
+
+using ::android::hardware::hidl_vec;
+using ::android::hardware::thermal::V1_0::CoolingDevice;
+using ::android::hardware::thermal::V1_0::CpuUsage;
+using ::android::hardware::thermal::V1_0::IThermal;
+using ::android::hardware::thermal::V1_0::Temperature;
+using ::android::hardware::thermal::V1_0::ThermalStatus;
+using ::android::hardware::thermal::V1_0::ThermalStatusCode;
+using ::android::sp;
+
+#define NUMBER_LOOPS 100
+#define TIMEOUT_PERIOD 1
+
+class ThermalHidlStressTest : public ::testing::Test {
+ public:
+  virtual void SetUp() override {
+    thermal_ = IThermal::getService();
+    ASSERT_NE(thermal_, nullptr);
+    count_ = 0;
+  }
+
+  /* Test code calls this function to wait for callback */
+  inline std::cv_status wait() {
+    std::unique_lock<std::mutex> lock(mtx_);
+
+    std::cv_status status = std::cv_status::no_timeout;
+    auto now = std::chrono::system_clock::now();
+    while (count_ == 0) {
+      status = cv_.wait_until(lock, now + std::chrono::seconds(TIMEOUT_PERIOD));
+      if (status == std::cv_status::timeout) return status;
+    }
+    count_--;
+    return status;
+  }
+
+ protected:
+  sp<IThermal> thermal_;
+  std::mutex mtx_;
+  std::condition_variable cv_;
+  int count_;
+};
+
+/* Stress test for Thermal::getTemperatures(). */
+TEST_F(ThermalHidlStressTest, stressTemperatures) {
+  for (int loops = 0; loops < NUMBER_LOOPS; loops++) {
+    thermal_->getTemperatures(
+        [&](ThermalStatus status, hidl_vec<Temperature> /* temperatures */) {
+          EXPECT_EQ(ThermalStatusCode::SUCCESS, status.code);
+          /* Inform the test about callback. */
+          std::unique_lock<std::mutex> lock(mtx_);
+          count_++;
+          cv_.notify_one();
+        });
+    EXPECT_EQ(std::cv_status::no_timeout, wait());
+  }
+}
+
+/* Stress test for Thermal::getCpuUsages(). */
+TEST_F(ThermalHidlStressTest, stressCpuUsages) {
+  for (int loops = 0; loops < NUMBER_LOOPS; loops++) {
+    thermal_->getCpuUsages(
+        [&](ThermalStatus status, hidl_vec<CpuUsage> /* cpuUsages */) {
+          EXPECT_EQ(ThermalStatusCode::SUCCESS, status.code);
+          /* Inform the test about callback. */
+          std::unique_lock<std::mutex> lock(mtx_);
+          count_++;
+          cv_.notify_one();
+        });
+    EXPECT_EQ(std::cv_status::no_timeout, wait());
+  }
+}
+
+/* Stress test for Thermal::getCoolingDevices(). */
+TEST_F(ThermalHidlStressTest, stressCoolingDevices) {
+  for (int loops = 0; loops < NUMBER_LOOPS; loops++) {
+    thermal_->getCoolingDevices(
+        [&](ThermalStatus status, hidl_vec<CoolingDevice> /* coolingDevice */) {
+          EXPECT_EQ(ThermalStatusCode::SUCCESS, status.code);
+          /* Inform the test about callback. */
+          std::unique_lock<std::mutex> lock(mtx_);
+          count_++;
+          cv_.notify_one();
+        });
+    EXPECT_EQ(std::cv_status::no_timeout, wait());
+  }
+}
diff --git a/tv/Android.bp b/tv/Android.bp
new file mode 100644
index 0000000..4cb3cb0
--- /dev/null
+++ b/tv/Android.bp
@@ -0,0 +1,7 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "cec/V1_0",
+    "input/V1_0",
+]
diff --git a/tv/__init__.py b/tv/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tv/__init__.py
diff --git a/tv/cec/V1_0/Android.bp b/tv/cec/V1_0/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/tv/cec/V1_0/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/tv/cec/V1_0/__init__.py b/tv/cec/V1_0/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tv/cec/V1_0/__init__.py
diff --git a/tv/cec/V1_0/build/Android.bp b/tv/cec/V1_0/build/Android.bp
new file mode 100644
index 0000000..357adc8
--- /dev/null
+++ b/tv/cec/V1_0/build/Android.bp
@@ -0,0 +1,149 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.tv.cec@1.0-vts.spec",
+    srcs: [
+        ":android.hardware.tv.cec@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tv/cec/1.0/HdmiCec.vts",
+        "android/hardware/tv/cec/1.0/HdmiCecCallback.vts",
+        "android/hardware/tv/cec/1.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.tv.cec@1.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tv.cec@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/tv/cec/1.0/ $(genDir)/android/hardware/tv/cec/1.0/",
+    srcs: [
+        ":android.hardware.tv.cec@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tv/cec/1.0/HdmiCec.vts.cpp",
+        "android/hardware/tv/cec/1.0/HdmiCecCallback.vts.cpp",
+        "android/hardware/tv/cec/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tv.cec@1.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tv.cec@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/tv/cec/1.0/ $(genDir)/android/hardware/tv/cec/1.0/",
+    srcs: [
+        ":android.hardware.tv.cec@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tv/cec/1.0/HdmiCec.vts.h",
+        "android/hardware/tv/cec/1.0/HdmiCecCallback.vts.h",
+        "android/hardware/tv/cec/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.tv.cec@1.0-vts.driver",
+    generated_sources: ["android.hardware.tv.cec@1.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.tv.cec@1.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.tv.cec@1.0-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.tv.cec@1.0",
+        
+    ],
+    export_shared_lib_headers: [
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.tv.cec@1.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tv.cec@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/tv/cec/1.0/ $(genDir)/android/hardware/tv/cec/1.0/",
+    srcs: [
+        ":android.hardware.tv.cec@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tv/cec/1.0/HdmiCec.vts.cpp",
+        "android/hardware/tv/cec/1.0/HdmiCecCallback.vts.cpp",
+        "android/hardware/tv/cec/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tv.cec@1.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tv.cec@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/tv/cec/1.0/ $(genDir)/android/hardware/tv/cec/1.0/",
+    srcs: [
+        ":android.hardware.tv.cec@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tv/cec/1.0/HdmiCec.vts.h",
+        "android/hardware/tv/cec/1.0/HdmiCecCallback.vts.h",
+        "android/hardware/tv/cec/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.tv.cec@1.0-vts.profiler",
+    generated_sources: ["android.hardware.tv.cec@1.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.tv.cec@1.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.tv.cec@1.0-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.tv.cec@1.0",
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/tv/cec/V1_0/host/Android.mk b/tv/cec/V1_0/host/Android.mk
new file mode 100644
index 0000000..b992cd6
--- /dev/null
+++ b/tv/cec/V1_0/host/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalTvCecV1_0Host
+VTS_CONFIG_SRC_DIR := testcases/hal/tv/cec/V1_0/host
+include test/vts/tools/build/Android.host_config.mk
diff --git a/tv/cec/V1_0/host/AndroidTest.xml b/tv/cec/V1_0/host/AndroidTest.xml
new file mode 100644
index 0000000..b4d86a1
--- /dev/null
+++ b/tv/cec/V1_0/host/AndroidTest.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalTvCecV1_0Host test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlHostTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="spec/hardware/interfaces/tv/cec/1.0/vts/HdmiCec.vts->/data/local/tmp/spec/android/hardware/tv/cec/1.0/HdmiCec.vts"/>
+        <option name="push" value="spec/hardware/interfaces/tv/cec/1.0/vts/HdmiCecCallback.vts->/data/local/tmp/spec/android/hardware/tv/cec/1.0/HdmiCecCallback.vts"/>
+        <option name="push" value="spec/hardware/interfaces/tv/cec/1.0/vts/types.vts->/data/local/tmp/spec/android/hardware/tv/cec/1.0/types.vts"/>
+        <option name="push" value="DATA/lib/android.hardware.tv.cec@1.0-vts.driver.so->/data/local/tmp/32/android.hardware.tv.cec@1.0-vts.driver.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalTvCecV1_0Host"/>
+        <option name="test-case-path" value="vts/testcases/hal/tv/cec/V1_0/host/VtsHalTvCecV1_0HostTest"/>
+        <option name="precondition-lshal" value="android.hardware.tv.cec@1.0"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/tv/cec/V1_0/host/VtsHalTvCecV1_0HostTest.py b/tv/cec/V1_0/host/VtsHalTvCecV1_0HostTest.py
new file mode 100644
index 0000000..779870f
--- /dev/null
+++ b/tv/cec/V1_0/host/VtsHalTvCecV1_0HostTest.py
@@ -0,0 +1,159 @@
+#!/usr/bin/env python
+#
+# Copyright (C) 2016 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.
+#
+
+import logging
+import time
+
+from vts.proto import ComponentSpecificationMessage_pb2 as CompSpecMsg
+from vts.runners.host import asserts
+from vts.runners.host import base_test
+from vts.runners.host import const
+from vts.runners.host import keys
+from vts.runners.host import test_runner
+from vts.utils.python.controllers import android_device
+from vts.utils.python.precondition import precondition_utils
+
+
+class TvCecHidlTest(base_test.BaseTestClass):
+    """Host testcase class for the TV HDMI_CEC HIDL HAL."""
+
+    def setUpClass(self):
+        """Creates a mirror and init tv hdmi cec hal service."""
+        self.dut = self.registerController(android_device)[0]
+
+        self.dut.shell.InvokeTerminal("one")
+        self.dut.shell.one.Execute("setenforce 0")  # SELinux permissive mode
+        if not precondition_utils.CanRunHidlHalTest(
+            self, self.dut, self.dut.shell.one):
+            self._skip_all_testcases = True
+            return
+
+        self.dut.shell.one.Execute(
+            "setprop vts.hal.vts.hidl.get_stub true")
+
+        if self.coverage.enabled:
+            self.coverage.LoadArtifacts()
+            self.coverage.InitializeDeviceCoverage(self.dut)
+
+        if self.profiling.enabled:
+            self.profiling.EnableVTSProfiling(self.dut.shell.one)
+
+        self.dut.hal.InitHidlHal(
+            target_type="tv_cec",
+            target_basepaths=self.dut.libPaths,
+            target_version=1.0,
+            target_package="android.hardware.tv.cec",
+            target_component_name="IHdmiCec",
+            bits=int(self.abi_bitness))
+
+        time.sleep(1) # Wait for hal to be ready
+
+        self.vtypes = self.dut.hal.tv_cec.GetHidlTypeInterface("types")
+        logging.info("tv_cec types: %s", self.vtypes)
+
+    def setUp(self):
+        """Setup function that will be called every time before executing each
+        test case in the test class."""
+        if self.profiling.enabled:
+            self.profiling.EnableVTSProfiling(self.dut.shell.one)
+
+    def tearDown(self):
+        """TearDown function that will be called every time after executing each
+        test case in the test class."""
+        if self.profiling.enabled:
+            self.profiling.ProcessTraceDataForTestCase(self.dut)
+            self.profiling.DisableVTSProfiling(self.dut.shell.one)
+
+    def tearDownClass(self):
+        """To be executed when all test cases are finished."""
+        if self._skip_all_testcases:
+            return
+
+        if self.coverage.enabled:
+            self.coverage.SetCoverageData(dut=self.dut, isGlobal=True)
+
+        if self.profiling.enabled:
+            self.profiling.ProcessAndUploadTraceData()
+
+    def testClearAndAddLogicalAddress(self):
+        """A simple test case which sets logical address and clears it."""
+        self.dut.hal.tv_cec.clearLogicalAddress()
+        result = self.dut.hal.tv_cec.addLogicalAddress(
+                self.vtypes.CecLogicalAddress.PLAYBACK_3)
+        asserts.assertEqual(self.vtypes.Result.SUCCESS, result)
+        logging.info("addLogicalAddress result: %s", result)
+
+    def testGetPhysicalAddress(self):
+        """A simple test case which queries the physical address."""
+        status, paddr = self.dut.hal.tv_cec.getPhysicalAddress()
+        asserts.assertEqual(self.vtypes.Result.SUCCESS, status)
+        logging.info("getPhysicalAddress status: %s, paddr: %s", status, paddr)
+
+    def testSendRandomMessage(self):
+        """A test case which sends a random message."""
+        cec_message = {
+            "initiator": self.vtypes.CecLogicalAddress.TV,
+            "destination": self.vtypes.CecLogicalAddress.PLAYBACK_1,
+            "body": [1, 2, 3]
+        }
+        message = self.vtypes.Py2Pb("CecMessage", cec_message)
+        logging.info("message: %s", message)
+        result = self.dut.hal.tv_cec.sendMessage(message)
+        logging.info("sendMessage result: %s", result)
+
+    def testGetCecVersion1(self):
+        """A simple test case which queries the cec version."""
+        version = self.dut.hal.tv_cec.getCecVersion()
+        logging.info("getCecVersion version: %s", version)
+
+    def testGetVendorId(self):
+        """A simple test case which queries vendor id."""
+        vendor_id = self.dut.hal.tv_cec.getVendorId()
+        asserts.assertEqual(0, 0xff000000 & vendor_id)
+        logging.info("getVendorId vendor_id: %s", vendor_id)
+
+    def testGetPortInfo(self):
+        """A simple test case which queries port information."""
+        port_infos = self.dut.hal.tv_cec.getPortInfo()
+        logging.info("getPortInfo port_infos: %s", port_infos)
+
+    def testSetOption(self):
+        """A simple test case which changes CEC options."""
+        self.dut.hal.tv_cec.setOption(self.vtypes.OptionKey.WAKEUP, True)
+        self.dut.hal.tv_cec.setOption(self.vtypes.OptionKey.ENABLE_CEC, True)
+        self.dut.hal.tv_cec.setOption(
+                self.vtypes.OptionKey.SYSTEM_CEC_CONTROL, True)
+
+    def testSetLanguage(self):
+        """A simple test case which updates language information."""
+        self.dut.hal.tv_cec.setLanguage("eng")
+
+    def testEnableAudioReturnChannel(self):
+        """Checks whether Audio Return Channel can be enabled."""
+        port_infos = self.dut.hal.tv_cec.getPortInfo()
+        for port_info in port_infos:
+            if "portId" in port_info and port_info.get("arcSupported"):
+                self.dut.hal.tv_cec.enableAudioReturnChannel(
+                        port_info["portId"], True)
+
+    def testIsConnected(self):
+        """A simple test case which queries the connected status."""
+        status = self.dut.hal.tv_cec.isConnected()
+        logging.info("isConnected status: %s", status)
+
+if __name__ == "__main__":
+    test_runner.main()
diff --git a/tv/cec/V1_0/host/__init__.py b/tv/cec/V1_0/host/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tv/cec/V1_0/host/__init__.py
diff --git a/tv/cec/V1_0/host_profiling/Android.mk b/tv/cec/V1_0/host_profiling/Android.mk
new file mode 100644
index 0000000..66c23ab
--- /dev/null
+++ b/tv/cec/V1_0/host_profiling/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalTvCecV1_0HostProfiling
+VTS_CONFIG_SRC_DIR := testcases/hal/tv/cec/V1_0/host_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/tv/cec/V1_0/host_profiling/AndroidTest.xml b/tv/cec/V1_0/host_profiling/AndroidTest.xml
new file mode 100644
index 0000000..19f9066
--- /dev/null
+++ b/tv/cec/V1_0/host_profiling/AndroidTest.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalTvCecV1_0HostProfiling test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlHostProfilingTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="spec/hardware/interfaces/tv/cec/1.0/vts/HdmiCec.vts->/data/local/tmp/spec/android/hardware/tv/cec/1.0/HdmiCec.vts"/>
+        <option name="push" value="spec/hardware/interfaces/tv/cec/1.0/vts/HdmiCecCallback.vts->/data/local/tmp/spec/android/hardware/tv/cec/1.0/HdmiCecCallback.vts"/>
+        <option name="push" value="spec/hardware/interfaces/tv/cec/1.0/vts/types.vts->/data/local/tmp/spec/android/hardware/tv/cec/1.0/types.vts"/>
+        <option name="push" value="DATA/lib/android.hardware.tv.cec@1.0-vts.driver.so->/data/local/tmp/32/android.hardware.tv.cec@1.0-vts.driver.so"/>
+        <option name="push" value="DATA/lib/android.hardware.tv.cec@1.0-vts.profiler.so->/data/local/tmp/32/android.hardware.tv.cec@1.0-vts.profiler.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalTvCecV1_0HostProfiling"/>
+        <option name="test-case-path" value="vts/testcases/hal/tv/cec/V1_0/host/VtsHalTvCecV1_0HostTest"/>
+        <option name="enable-profiling" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.tv.cec@1.0"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/tv/cec/__init__.py b/tv/cec/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tv/cec/__init__.py
diff --git a/tv/input/V1_0/Android.bp b/tv/input/V1_0/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/tv/input/V1_0/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/tv/input/V1_0/__init__.py b/tv/input/V1_0/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tv/input/V1_0/__init__.py
diff --git a/tv/input/V1_0/build/Android.bp b/tv/input/V1_0/build/Android.bp
new file mode 100644
index 0000000..a277c5b
--- /dev/null
+++ b/tv/input/V1_0/build/Android.bp
@@ -0,0 +1,152 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.tv.input@1.0-vts.spec",
+    srcs: [
+        ":android.hardware.tv.input@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tv/input/1.0/TvInput.vts",
+        "android/hardware/tv/input/1.0/TvInputCallback.vts",
+        "android/hardware/tv/input/1.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.tv.input@1.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tv.input@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/tv/input/1.0/ $(genDir)/android/hardware/tv/input/1.0/",
+    srcs: [
+        ":android.hardware.tv.input@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tv/input/1.0/TvInput.vts.cpp",
+        "android/hardware/tv/input/1.0/TvInputCallback.vts.cpp",
+        "android/hardware/tv/input/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tv.input@1.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tv.input@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/tv/input/1.0/ $(genDir)/android/hardware/tv/input/1.0/",
+    srcs: [
+        ":android.hardware.tv.input@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tv/input/1.0/TvInput.vts.h",
+        "android/hardware/tv/input/1.0/TvInputCallback.vts.h",
+        "android/hardware/tv/input/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.tv.input@1.0-vts.driver",
+    generated_sources: ["android.hardware.tv.input@1.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.tv.input@1.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.tv.input@1.0-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.tv.input@1.0",
+        "android.hardware.audio.common@2.0",
+        "android.hardware.audio.common@2.0-vts.driver",
+    ],
+    export_shared_lib_headers: [
+        "android.hardware.audio.common@2.0",
+        "android.hardware.audio.common@2.0-vts.driver",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.tv.input@1.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tv.input@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/tv/input/1.0/ $(genDir)/android/hardware/tv/input/1.0/",
+    srcs: [
+        ":android.hardware.tv.input@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tv/input/1.0/TvInput.vts.cpp",
+        "android/hardware/tv/input/1.0/TvInputCallback.vts.cpp",
+        "android/hardware/tv/input/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tv.input@1.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tv.input@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/tv/input/1.0/ $(genDir)/android/hardware/tv/input/1.0/",
+    srcs: [
+        ":android.hardware.tv.input@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tv/input/1.0/TvInput.vts.h",
+        "android/hardware/tv/input/1.0/TvInputCallback.vts.h",
+        "android/hardware/tv/input/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.tv.input@1.0-vts.profiler",
+    generated_sources: ["android.hardware.tv.input@1.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.tv.input@1.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.tv.input@1.0-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.tv.input@1.0",
+        "android.hardware.audio.common@2.0",
+        "android.hardware.audio.common@2.0-vts.profiler",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/tv/input/V1_0/host/Android.mk b/tv/input/V1_0/host/Android.mk
new file mode 100644
index 0000000..d83909a
--- /dev/null
+++ b/tv/input/V1_0/host/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalTvInputV1_0Host
+VTS_CONFIG_SRC_DIR := testcases/hal/tv/input/V1_0/host
+include test/vts/tools/build/Android.host_config.mk
diff --git a/tv/input/V1_0/host/AndroidTest.xml b/tv/input/V1_0/host/AndroidTest.xml
new file mode 100644
index 0000000..5bed90b
--- /dev/null
+++ b/tv/input/V1_0/host/AndroidTest.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalTvInputV1_0Host test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlHostTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="spec/hardware/interfaces/audio/common/2.0/vts/types.vts->/data/local/tmp/spec/android/hardware/audio/common/2.0/types.vts"/>
+        <option name="push" value="DATA/lib/android.hardware.audio.common@2.0-vts.driver.so->/data/local/tmp/32/android.hardware.audio.common@2.0-vts.driver.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.audio.common@2.0-vts.driver.so->/data/local/tmp/64/android.hardware.audio.common@2.0-vts.driver.so"/>
+        <option name="push" value="spec/hardware/interfaces/tv/input/1.0/vts/TvInput.vts->/data/local/tmp/spec/android/hardware/tv/input/1.0/TvInput.vts"/>
+        <option name="push" value="spec/hardware/interfaces/tv/input/1.0/vts/TvInputCallback.vts->/data/local/tmp/spec/android/hardware/tv/input/1.0/TvInputCallback.vts"/>
+        <option name="push" value="spec/hardware/interfaces/tv/input/1.0/vts/types.vts->/data/local/tmp/spec/android/hardware/tv/input/1.0/types.vts"/>
+        <option name="push" value="DATA/lib/android.hardware.tv.input@1.0-vts.driver.so->/data/local/tmp/32/android.hardware.tv.input@1.0-vts.driver.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalTvInputV1_0Host"/>
+        <option name="test-case-path" value="vts/testcases/hal/tv/input/V1_0/host/VtsHalTvInputV1_0HostTest"/>
+        <option name="precondition-lshal" value="android.hardware.tv.input@1.0"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/tv/input/V1_0/host/VtsHalTvInputV1_0HostTest.py b/tv/input/V1_0/host/VtsHalTvInputV1_0HostTest.py
new file mode 100644
index 0000000..305c4f5
--- /dev/null
+++ b/tv/input/V1_0/host/VtsHalTvInputV1_0HostTest.py
@@ -0,0 +1,86 @@
+#!/usr/bin/env python
+#
+# Copyright (C) 2016 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.
+#
+
+import logging
+
+from vts.runners.host import asserts
+from vts.runners.host import base_test
+from vts.runners.host import const
+from vts.runners.host import keys
+from vts.runners.host import test_runner
+from vts.utils.python.controllers import android_device
+from vts.utils.python.precondition import precondition_utils
+
+
+class TvInputHidlTest(base_test.BaseTestClass):
+    """Two hello world test cases which use the shell driver."""
+
+    def setUpClass(self):
+        """Creates a mirror and init tv input hal."""
+        self.dut = self.registerController(android_device)[0]
+
+        self.dut.shell.InvokeTerminal("one")
+        self.dut.shell.one.Execute("setenforce 0")  # SELinux permissive mode
+        if not precondition_utils.CanRunHidlHalTest(
+            self, self.dut, self.dut.shell.one):
+            self._skip_all_testcases = True
+            return
+
+        if self.coverage.enabled:
+            self.coverage.LoadArtifacts()
+            self.coverage.InitializeDeviceCoverage(self.dut)
+
+        self.dut.hal.InitHidlHal(target_type="tv_input",
+                                 target_basepaths=self.dut.libPaths,
+                                 target_version=1.0,
+                                 target_package="android.hardware.tv.input",
+                                 target_component_name="ITvInput",
+                                 bits=int(self.abi_bitness))
+
+        self.dut.shell.InvokeTerminal("one")
+
+    def setUp(self):
+        """Setup function that will be called every time before executing each
+        test case in the test class."""
+        if self.profiling.enabled:
+            self.profiling.EnableVTSProfiling(self.dut.shell.one)
+
+    def tearDown(self):
+        """TearDown function that will be called every time after executing each
+        test case in the test class."""
+        if self.profiling.enabled:
+            self.profiling.ProcessTraceDataForTestCase(self.dut)
+            self.profiling.DisableVTSProfiling(self.dut.shell.one)
+
+    def tearDownClass(self):
+        """To be executed when all test cases are finished."""
+        if self._skip_all_testcases:
+            return
+
+        if self.coverage.enabled:
+            self.coverage.SetCoverageData(dut=self.dut, isGlobal=True)
+
+        if self.profiling.enabled:
+            self.profiling.ProcessAndUploadTraceData()
+
+    def testGetStreamConfigurations(self):
+        configs = self.dut.hal.tv_input.getStreamConfigurations(0)
+        logging.info('return value of getStreamConfigurations(0): %s', configs)
+
+
+if __name__ == "__main__":
+    test_runner.main()
diff --git a/tv/input/V1_0/host/__init__.py b/tv/input/V1_0/host/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tv/input/V1_0/host/__init__.py
diff --git a/tv/input/V1_0/host_profiling/Android.mk b/tv/input/V1_0/host_profiling/Android.mk
new file mode 100644
index 0000000..a4fd611
--- /dev/null
+++ b/tv/input/V1_0/host_profiling/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalTvInputV1_0HostProfiling
+VTS_CONFIG_SRC_DIR := testcases/hal/tv/input/V1_0/host_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/tv/input/V1_0/host_profiling/AndroidTest.xml b/tv/input/V1_0/host_profiling/AndroidTest.xml
new file mode 100644
index 0000000..b4589d8
--- /dev/null
+++ b/tv/input/V1_0/host_profiling/AndroidTest.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalTvInputV1_0HostProfiling test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlHostProfilingTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="spec/hardware/interfaces/audio/common/2.0/vts/types.vts->/data/local/tmp/spec/android/hardware/audio/common/2.0/types.vts"/>
+        <option name="push" value="DATA/lib/android.hardware.audio.common@2.0-vts.driver.so->/data/local/tmp/32/android.hardware.audio.common@2.0-vts.driver.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.audio.common@2.0-vts.driver.so->/data/local/tmp/64/android.hardware.audio.common@2.0-vts.driver.so"/>
+        <option name="push" value="spec/hardware/interfaces/tv/input/1.0/vts/TvInput.vts->/data/local/tmp/spec/android/hardware/tv/input/1.0/TvInput.vts"/>
+        <option name="push" value="spec/hardware/interfaces/tv/input/1.0/vts/TvInputCallback.vts->/data/local/tmp/spec/android/hardware/tv/input/1.0/TvInputCallback.vts"/>
+        <option name="push" value="spec/hardware/interfaces/tv/input/1.0/vts/types.vts->/data/local/tmp/spec/android/hardware/tv/input/1.0/types.vts"/>
+        <option name="push" value="DATA/lib/android.hardware.tv.input@1.0-vts.driver.so->/data/local/tmp/32/android.hardware.tv.input@1.0-vts.driver.so"/>
+        <option name="push" value="DATA/lib/android.hardware.audio.common@2.0-vts.profiler.so->/data/local/tmp/32/android.hardware.audio.common@2.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib/android.hardware.tv.input@1.0-vts.profiler.so->/data/local/tmp/32/android.hardware.tv.input@1.0-vts.profiler.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalTvInputV1_0HostProfiling"/>
+        <option name="test-case-path" value="vts/testcases/hal/tv/input/V1_0/host/VtsHalTvInputV1_0HostTest"/>
+        <option name="enable-profiling" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.tv.input@1.0"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/tv/input/V1_0/host_profiling/__init__.py b/tv/input/V1_0/host_profiling/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tv/input/V1_0/host_profiling/__init__.py
diff --git a/tv/input/V1_0/target/Android.mk b/tv/input/V1_0/target/Android.mk
new file mode 100644
index 0000000..97ba1af
--- /dev/null
+++ b/tv/input/V1_0/target/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalTvInputV1_0Target
+VTS_CONFIG_SRC_DIR := testcases/hal/tv/input/V1_0/target
+include test/vts/tools/build/Android.host_config.mk
diff --git a/tv/input/V1_0/target/AndroidTest.xml b/tv/input/V1_0/target/AndroidTest.xml
new file mode 100644
index 0000000..c461912
--- /dev/null
+++ b/tv/input/V1_0/target/AndroidTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalTvInputV1_0Target test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetTest.push"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalTvInputV1_0Target"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalTvInputV1_0TargetTest/VtsHalTvInputV1_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.tv.input@1.0"/>
+        <!-- Needs about 50 seconds if no device. Needs about 15 seconds for every additional device -->
+        <option name="test-timeout" value="15m"/>
+    </test>
+</configuration>
diff --git a/tv/input/V1_0/target_profiling/Android.mk b/tv/input/V1_0/target_profiling/Android.mk
new file mode 100644
index 0000000..dbba4e1
--- /dev/null
+++ b/tv/input/V1_0/target_profiling/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalTvInputV1_0TargetProfiling
+VTS_CONFIG_SRC_DIR := testcases/hal/tv/input/V1_0/target_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/tv/input/V1_0/target_profiling/AndroidTest.xml b/tv/input/V1_0/target_profiling/AndroidTest.xml
new file mode 100644
index 0000000..460e888
--- /dev/null
+++ b/tv/input/V1_0/target_profiling/AndroidTest.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalTvInputV1_0TargetProfiling test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetProfilingTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="DATA/lib/android.hardware.audio.common@2.0-vts.profiler.so->/data/local/tmp/32/android.hardware.audio.common@2.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib/android.hardware.tv.input@1.0-vts.profiler.so->/data/local/tmp/32/android.hardware.tv.input@1.0-vts.profiler.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalTvInputV1_0TargetProfiling"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalTvInputV1_0TargetTest/VtsHalTvInputV1_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="enable-profiling" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.tv.input@1.0"/>
+        <!-- Needs about 50 seconds if no device. Needs about 15 seconds for every additional device -->
+        <option name="test-timeout" value="15m"/>
+    </test>
+</configuration>
diff --git a/tv/input/__init__.py b/tv/input/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tv/input/__init__.py
diff --git a/usb/Android.bp b/usb/Android.bp
new file mode 100644
index 0000000..cdc8905
--- /dev/null
+++ b/usb/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "V1_0",
+]
diff --git a/usb/V1_0/Android.bp b/usb/V1_0/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/usb/V1_0/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/usb/V1_0/build/Android.bp b/usb/V1_0/build/Android.bp
new file mode 100644
index 0000000..46d97ab
--- /dev/null
+++ b/usb/V1_0/build/Android.bp
@@ -0,0 +1,149 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.usb@1.0-vts.spec",
+    srcs: [
+        ":android.hardware.usb@1.0_hal",
+    ],
+    out: [
+        "android/hardware/usb/1.0/Usb.vts",
+        "android/hardware/usb/1.0/UsbCallback.vts",
+        "android/hardware/usb/1.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.usb@1.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.usb@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/usb/1.0/ $(genDir)/android/hardware/usb/1.0/",
+    srcs: [
+        ":android.hardware.usb@1.0_hal",
+    ],
+    out: [
+        "android/hardware/usb/1.0/Usb.vts.cpp",
+        "android/hardware/usb/1.0/UsbCallback.vts.cpp",
+        "android/hardware/usb/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.usb@1.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.usb@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/usb/1.0/ $(genDir)/android/hardware/usb/1.0/",
+    srcs: [
+        ":android.hardware.usb@1.0_hal",
+    ],
+    out: [
+        "android/hardware/usb/1.0/Usb.vts.h",
+        "android/hardware/usb/1.0/UsbCallback.vts.h",
+        "android/hardware/usb/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.usb@1.0-vts.driver",
+    generated_sources: ["android.hardware.usb@1.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.usb@1.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.usb@1.0-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.usb@1.0",
+        
+    ],
+    export_shared_lib_headers: [
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.usb@1.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.usb@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/usb/1.0/ $(genDir)/android/hardware/usb/1.0/",
+    srcs: [
+        ":android.hardware.usb@1.0_hal",
+    ],
+    out: [
+        "android/hardware/usb/1.0/Usb.vts.cpp",
+        "android/hardware/usb/1.0/UsbCallback.vts.cpp",
+        "android/hardware/usb/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.usb@1.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.usb@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/usb/1.0/ $(genDir)/android/hardware/usb/1.0/",
+    srcs: [
+        ":android.hardware.usb@1.0_hal",
+    ],
+    out: [
+        "android/hardware/usb/1.0/Usb.vts.h",
+        "android/hardware/usb/1.0/UsbCallback.vts.h",
+        "android/hardware/usb/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.usb@1.0-vts.profiler",
+    generated_sources: ["android.hardware.usb@1.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.usb@1.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.usb@1.0-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.usb@1.0",
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/usb/V1_0/target/Android.mk b/usb/V1_0/target/Android.mk
new file mode 100644
index 0000000..31d2a85
--- /dev/null
+++ b/usb/V1_0/target/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalUsbV1_0Target
+VTS_CONFIG_SRC_DIR := testcases/hal/usb/V1_0/target
+include test/vts/tools/build/Android.host_config.mk
diff --git a/usb/V1_0/target/AndroidTest.xml b/usb/V1_0/target/AndroidTest.xml
new file mode 100644
index 0000000..8011921
--- /dev/null
+++ b/usb/V1_0/target/AndroidTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalUsbV1_0Target test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetTest.push"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalUsbV1_0Target"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalUsbV1_0TargetTest/VtsHalUsbV1_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalUsbV1_0TargetTest/VtsHalUsbV1_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.usb@1.0"/>
+        <option name="test-timeout" value="15m"/>
+    </test>
+</configuration>
diff --git a/usb/V1_0/target_profiling/Android.mk b/usb/V1_0/target_profiling/Android.mk
new file mode 100644
index 0000000..6f35895
--- /dev/null
+++ b/usb/V1_0/target_profiling/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalUsbV1_0TargetProfiling
+VTS_CONFIG_SRC_DIR := testcases/hal/usb/V1_0/target_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/usb/V1_0/target_profiling/AndroidTest.xml b/usb/V1_0/target_profiling/AndroidTest.xml
new file mode 100644
index 0000000..b1e86a9
--- /dev/null
+++ b/usb/V1_0/target_profiling/AndroidTest.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalUsbV1_0TargetProfiling test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetProfilingTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="DATA/lib/android.hardware.usb@1.0-vts.profiler.so->/data/local/tmp/32/android.hardware.usb@1.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.usb@1.0-vts.profiler.so->/data/local/tmp/64/android.hardware.usb@1.0-vts.profiler.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalUsbV1_0TargetProfiling"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalUsbV1_0TargetTest/VtsHalUsbV1_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalUsbV1_0TargetTest/VtsHalUsbV1_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="enable-profiling" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.usb@1.0"/>
+        <option name="test-timeout" value="15m"/>
+    </test>
+</configuration>
diff --git a/usb/V1_0/target_replay/Android.mk b/usb/V1_0/target_replay/Android.mk
new file mode 100644
index 0000000..f73e6a8
--- /dev/null
+++ b/usb/V1_0/target_replay/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalUsbV1_0TargetReplay
+VTS_CONFIG_SRC_DIR := testcases/hal/usb/V1_0/target_replay
+include test/vts/tools/build/Android.host_config.mk
diff --git a/usb/V1_0/target_replay/AndroidTest.xml b/usb/V1_0/target_replay/AndroidTest.xml
new file mode 100644
index 0000000..b59c138
--- /dev/null
+++ b/usb/V1_0/target_replay/AndroidTest.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalUsbV1_0TargetReplay test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlHostTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="spec/hardware/interfaces/usb/1.0/vts/Usb.vts->/data/local/tmp/spec/android/hardware/usb/1.0/Usb.vts"/>
+        <option name="push" value="spec/hardware/interfaces/usb/1.0/vts/UsbCallback.vts->/data/local/tmp/spec/android/hardware/usb/1.0/UsbCallback.vts"/>
+        <option name="push" value="spec/hardware/interfaces/usb/1.0/vts/types.vts->/data/local/tmp/spec/android/hardware/usb/1.0/types.vts"/>
+        <option name="push" value="DATA/lib/android.hardware.usb@1.0-vts.driver.so->/data/local/tmp/32/android.hardware.usb@1.0-vts.driver.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.usb@1.0-vts.driver.so->/data/local/tmp/64/android.hardware.usb@1.0-vts.driver.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalUsbV1_0TargetReplay"/>
+        <option name="binary-test-type" value="hal_hidl_replay_test"/>
+        <option name="hal-hidl-replay-test-trace-path" value="test/vts-testcase/hal-trace/usb/V1_0/android.hardware.usb@1.0_sailfish_1.vts.trace"/>
+        <option name="hal-hidl-package-name" value="android.hardware.usb@1.0"/>
+        <option name="precondition-lshal" value="android.hardware.usb@1.0"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/vibrator/Android.bp b/vibrator/Android.bp
new file mode 100644
index 0000000..cdc8905
--- /dev/null
+++ b/vibrator/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "V1_0",
+]
diff --git a/vibrator/V1_0/Android.bp b/vibrator/V1_0/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/vibrator/V1_0/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/vibrator/V1_0/__init__.py b/vibrator/V1_0/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/vibrator/V1_0/__init__.py
diff --git a/vibrator/V1_0/build/Android.bp b/vibrator/V1_0/build/Android.bp
new file mode 100644
index 0000000..011f03e
--- /dev/null
+++ b/vibrator/V1_0/build/Android.bp
@@ -0,0 +1,144 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.vibrator@1.0-vts.spec",
+    srcs: [
+        ":android.hardware.vibrator@1.0_hal",
+    ],
+    out: [
+        "android/hardware/vibrator/1.0/Vibrator.vts",
+        "android/hardware/vibrator/1.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.vibrator@1.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.vibrator@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/vibrator/1.0/ $(genDir)/android/hardware/vibrator/1.0/",
+    srcs: [
+        ":android.hardware.vibrator@1.0_hal",
+    ],
+    out: [
+        "android/hardware/vibrator/1.0/Vibrator.vts.cpp",
+        "android/hardware/vibrator/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.vibrator@1.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.vibrator@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/vibrator/1.0/ $(genDir)/android/hardware/vibrator/1.0/",
+    srcs: [
+        ":android.hardware.vibrator@1.0_hal",
+    ],
+    out: [
+        "android/hardware/vibrator/1.0/Vibrator.vts.h",
+        "android/hardware/vibrator/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.vibrator@1.0-vts.driver",
+    generated_sources: ["android.hardware.vibrator@1.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.vibrator@1.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.vibrator@1.0-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.vibrator@1.0",
+        
+    ],
+    export_shared_lib_headers: [
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.vibrator@1.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.vibrator@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/vibrator/1.0/ $(genDir)/android/hardware/vibrator/1.0/",
+    srcs: [
+        ":android.hardware.vibrator@1.0_hal",
+    ],
+    out: [
+        "android/hardware/vibrator/1.0/Vibrator.vts.cpp",
+        "android/hardware/vibrator/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.vibrator@1.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.vibrator@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/vibrator/1.0/ $(genDir)/android/hardware/vibrator/1.0/",
+    srcs: [
+        ":android.hardware.vibrator@1.0_hal",
+    ],
+    out: [
+        "android/hardware/vibrator/1.0/Vibrator.vts.h",
+        "android/hardware/vibrator/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.vibrator@1.0-vts.profiler",
+    generated_sources: ["android.hardware.vibrator@1.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.vibrator@1.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.vibrator@1.0-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.vibrator@1.0",
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/vibrator/V1_0/host/Android.mk b/vibrator/V1_0/host/Android.mk
new file mode 100644
index 0000000..d7d253f
--- /dev/null
+++ b/vibrator/V1_0/host/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalVibratorV1_0Host
+VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/V1_0/host
+include test/vts/tools/build/Android.host_config.mk
diff --git a/vibrator/V1_0/host/AndroidTest.xml b/vibrator/V1_0/host/AndroidTest.xml
new file mode 100644
index 0000000..b5a47e1
--- /dev/null
+++ b/vibrator/V1_0/host/AndroidTest.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalVibratorV1_0Host test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlHostTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="spec/hardware/interfaces/vibrator/1.0/vts/Vibrator.vts->/data/local/tmp/spec/android/hardware/vibrator/1.0/Vibrator.vts"/>
+        <option name="push" value="spec/hardware/interfaces/vibrator/1.0/vts/types.vts->/data/local/tmp/spec/android/hardware/vibrator/1.0/types.vts"/>
+        <option name="push" value="DATA/lib/android.hardware.vibrator@1.0-vts.driver.so->/data/local/tmp/32/android.hardware.vibrator@1.0-vts.driver.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.vibrator@1.0-vts.driver.so->/data/local/tmp/64/android.hardware.vibrator@1.0-vts.driver.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalVibratorV1_0Host"/>
+        <option name="test-case-path" value="vts/testcases/hal/vibrator/V1_0/host/VtsHalVibratorV1_0HostTest"/>
+        <option name="precondition-lshal" value="android.hardware.vibrator@1.0"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/vibrator/V1_0/host/VtsHalVibratorV1_0HostTest.py b/vibrator/V1_0/host/VtsHalVibratorV1_0HostTest.py
new file mode 100644
index 0000000..8b66418
--- /dev/null
+++ b/vibrator/V1_0/host/VtsHalVibratorV1_0HostTest.py
@@ -0,0 +1,91 @@
+#!/usr/bin/env python
+#
+# Copyright (C) 2016 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.
+#
+
+import logging
+import time
+
+from vts.runners.host import asserts
+from vts.runners.host import base_test
+from vts.runners.host import test_runner
+from vts.utils.python.controllers import android_device
+from vts.utils.python.precondition import precondition_utils
+
+
+class VibratorHidlTest(base_test.BaseTestClass):
+    """A simple testcase for the VIBRATOR HIDL HAL."""
+
+    def setUpClass(self):
+        """Creates a mirror and turns on the framework-layer VIBRATOR service."""
+        self.dut = self.registerController(android_device)[0]
+
+        self.dut.shell.InvokeTerminal("one")
+        self.dut.shell.one.Execute("setenforce 0")  # SELinux permissive mode
+        if not precondition_utils.CanRunHidlHalTest(
+            self, self.dut, self.dut.shell.one):
+            self._skip_all_testcases = True
+            return
+
+        # Test using the binderized mode
+        self.dut.shell.one.Execute(
+            "setprop vts.hal.vts.hidl.get_stub true")
+
+        self.dut.hal.InitHidlHal(
+            target_type="vibrator",
+            target_basepaths=self.dut.libPaths,
+            target_version=1.0,
+            target_package="android.hardware.vibrator",
+            target_component_name="IVibrator",
+            bits=int(self.abi_bitness))
+
+    def tearDownClass(self):
+        """ If profiling is enabled for the test, collect the profiling data
+            and disable profiling after the test is done.
+        """
+        if not self._skip_all_testcases and self.profiling.enabled:
+            self.profiling.ProcessAndUploadTraceData()
+
+    def setUp(self):
+        if self.profiling.enabled:
+            self.profiling.EnableVTSProfiling(self.dut.shell.one)
+
+    def tearDown(self):
+        if self.profiling.enabled:
+            self.profiling.ProcessTraceDataForTestCase(self.dut)
+            self.profiling.DisableVTSProfiling(self.dut.shell.one)
+
+    def testVibratorBasic(self):
+        """A simple test case which just calls each registered function."""
+        vibrator_types = self.dut.hal.vibrator.GetHidlTypeInterface("types")
+        logging.info("vibrator_types: %s", vibrator_types)
+        logging.info("OK: %s", vibrator_types.Status.OK)
+        logging.info("UNKNOWN_ERROR: %s", vibrator_types.Status.UNKNOWN_ERROR)
+        logging.info("BAD_VALUE: %s", vibrator_types.Status.BAD_VALUE)
+        logging.info("UNSUPPORTED_OPERATION: %s",
+            vibrator_types.Status.UNSUPPORTED_OPERATION)
+
+        result = self.dut.hal.vibrator.on(10000)
+        logging.info("on result: %s", result)
+        asserts.assertEqual(vibrator_types.Status.OK, result)
+
+        time.sleep(1)
+
+        result = self.dut.hal.vibrator.off()
+        logging.info("off result: %s", result)
+        asserts.assertEqual(vibrator_types.Status.OK, result)
+
+if __name__ == "__main__":
+    test_runner.main()
diff --git a/vibrator/V1_0/host/__init__.py b/vibrator/V1_0/host/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/vibrator/V1_0/host/__init__.py
diff --git a/vibrator/V1_0/host_profiling/Android.mk b/vibrator/V1_0/host_profiling/Android.mk
new file mode 100644
index 0000000..cb5719a
--- /dev/null
+++ b/vibrator/V1_0/host_profiling/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalVibratorV1_0HostProfiling
+VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/V1_0/host_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/vibrator/V1_0/host_profiling/AndroidTest.xml b/vibrator/V1_0/host_profiling/AndroidTest.xml
new file mode 100644
index 0000000..a8cdfe6
--- /dev/null
+++ b/vibrator/V1_0/host_profiling/AndroidTest.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalVibratorV1_0HostProfiling test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlHostProfilingTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="spec/hardware/interfaces/vibrator/1.0/vts/Vibrator.vts->/data/local/tmp/spec/android/hardware/vibrator/1.0/Vibrator.vts"/>
+        <option name="push" value="spec/hardware/interfaces/vibrator/1.0/vts/types.vts->/data/local/tmp/spec/android/hardware/vibrator/1.0/types.vts"/>
+        <option name="push" value="DATA/lib/android.hardware.vibrator@1.0-vts.driver.so->/data/local/tmp/32/android.hardware.vibrator@1.0-vts.driver.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.vibrator@1.0-vts.driver.so->/data/local/tmp/64/android.hardware.vibrator@1.0-vts.driver.so"/>
+        <option name="push" value="DATA/lib/android.hardware.vibrator@1.0-vts.profiler.so->/data/local/tmp/32/android.hardware.vibrator@1.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.vibrator@1.0-vts.profiler.so->/data/local/tmp/64/android.hardware.vibrator@1.0-vts.profiler.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalVibratorV1_0HostProfiling"/>
+        <option name="test-case-path" value="vts/testcases/hal/vibrator/V1_0/host/VtsHalVibratorV1_0HostTest"/>
+        <option name="enable-profiling" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.vibrator@1.0"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/vibrator/V1_0/target/Android.mk b/vibrator/V1_0/target/Android.mk
new file mode 100644
index 0000000..9ba8846
--- /dev/null
+++ b/vibrator/V1_0/target/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalVibratorV1_0Target
+VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/V1_0/target
+include test/vts/tools/build/Android.host_config.mk
diff --git a/vibrator/V1_0/target/AndroidTest.xml b/vibrator/V1_0/target/AndroidTest.xml
new file mode 100644
index 0000000..b67333a
--- /dev/null
+++ b/vibrator/V1_0/target/AndroidTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalVibratorV1_0Target test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetTest.push"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalVibratorV1_0Target"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalVibratorV1_0TargetTest/VtsHalVibratorV1_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalVibratorV1_0TargetTest/VtsHalVibratorV1_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.vibrator@1.0"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/vibrator/V1_0/target_profiling/Android.mk b/vibrator/V1_0/target_profiling/Android.mk
new file mode 100644
index 0000000..d6b67eb
--- /dev/null
+++ b/vibrator/V1_0/target_profiling/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalVibratorV1_0TargetProfiling
+VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/V1_0/target_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/vibrator/V1_0/target_profiling/AndroidTest.xml b/vibrator/V1_0/target_profiling/AndroidTest.xml
new file mode 100644
index 0000000..3e6bfdc
--- /dev/null
+++ b/vibrator/V1_0/target_profiling/AndroidTest.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalVibratorV1_0TargetProfiling test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetProfilingTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="DATA/lib/android.hardware.vibrator@1.0-vts.profiler.so->/data/local/tmp/32/android.hardware.vibrator@1.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.vibrator@1.0-vts.profiler.so->/data/local/tmp/64/android.hardware.vibrator@1.0-vts.profiler.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalVibratorV1_0TargetProfiling"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalVibratorV1_0TargetTest/VtsHalVibratorV1_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalVibratorV1_0TargetTest/VtsHalVibratorV1_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="enable-profiling" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.vibrator@1.0"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/vibrator/V1_0/target_replay/Android.mk b/vibrator/V1_0/target_replay/Android.mk
new file mode 100644
index 0000000..449fd95
--- /dev/null
+++ b/vibrator/V1_0/target_replay/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalVibratorV1_0TargetReplay
+VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/V1_0/target
+include test/vts/tools/build/Android.host_config.mk
diff --git a/vibrator/V1_0/target_replay/AndroidTest.xml b/vibrator/V1_0/target_replay/AndroidTest.xml
new file mode 100644
index 0000000..4db646b
--- /dev/null
+++ b/vibrator/V1_0/target_replay/AndroidTest.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalVibratorV1_0TargetReplay test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlHostTest.push"/>
+        <option name="cleanup" value="true" />
+        <option name="push" value="spec/hardware/interfaces/vibrator/1.0/vts/Vibrator.vts->/data/local/tmp/spec/target.vts" />
+        <option name="push" value="DATA/lib/android.hardware.vibrator@1.0-vts.driver.so->/data/local/tmp/32/android.hardware.vibrator@1.0-vts.driver.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.vibrator@1.0-vts.driver.so->/data/local/tmp/64/android.hardware.vibrator@1.0-vts.driver.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalVibratorV1_0TargetReplay"/>
+        <option name="binary-test-type" value="hal_hidl_replay_test" />
+        <option name="hal-hidl-replay-test-trace-path" value="test/vts-testcase/hal-trace/vibrator/V1_0/android.hardware.vibrator@1.0_sailfish_1.vts.trace" />
+        <option name="hal-hidl-package-name" value="android.hardware.vibrator@1.0" />
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/vibrator/__init__.py b/vibrator/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/vibrator/__init__.py
diff --git a/vr/Android.bp b/vr/Android.bp
new file mode 100644
index 0000000..cdc8905
--- /dev/null
+++ b/vr/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "V1_0",
+]
diff --git a/vr/V1_0/Android.bp b/vr/V1_0/Android.bp
new file mode 100644
index 0000000..995dd5b
--- /dev/null
+++ b/vr/V1_0/Android.bp
@@ -0,0 +1,6 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+subdirs = [
+    "*",
+]
diff --git a/vr/V1_0/__init__.py b/vr/V1_0/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/vr/V1_0/__init__.py
diff --git a/vr/V1_0/build/Android.bp b/vr/V1_0/build/Android.bp
new file mode 100644
index 0000000..57c6f72
--- /dev/null
+++ b/vr/V1_0/build/Android.bp
@@ -0,0 +1,139 @@
+// This file was auto-generated. Do not edit manually.
+// Use test/vts-testcase/hal/update_makefiles.py to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.vr@1.0-vts.spec",
+    srcs: [
+        ":android.hardware.vr@1.0_hal",
+    ],
+    out: [
+        "android/hardware/vr/1.0/Vr.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.vr@1.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.vr@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/vr/1.0/ $(genDir)/android/hardware/vr/1.0/",
+    srcs: [
+        ":android.hardware.vr@1.0_hal",
+    ],
+    out: [
+        "android/hardware/vr/1.0/Vr.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.vr@1.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.vr@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/vr/1.0/ $(genDir)/android/hardware/vr/1.0/",
+    srcs: [
+        ":android.hardware.vr@1.0_hal",
+    ],
+    out: [
+        "android/hardware/vr/1.0/Vr.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.vr@1.0-vts.driver",
+    generated_sources: ["android.hardware.vr@1.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.vr@1.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.vr@1.0-vts.driver_genc++_headers"],
+    shared_libs: [
+        "libcamera_metadata",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libprotobuf-cpp-full",
+        "libutils",
+        "libvts_common",
+        "libvts_datatype",
+        "libvts_drivercomm",
+        "libvts_measurement",
+        "libvts_multidevice_proto",
+        "android.hidl.allocator@1.0",
+        "android.hardware.vr@1.0",
+        
+    ],
+    export_shared_lib_headers: [
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.vr@1.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.vr@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/vr/1.0/ $(genDir)/android/hardware/vr/1.0/",
+    srcs: [
+        ":android.hardware.vr@1.0_hal",
+    ],
+    out: [
+        "android/hardware/vr/1.0/Vr.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.vr@1.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.vr@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/vr/1.0/ $(genDir)/android/hardware/vr/1.0/",
+    srcs: [
+        ":android.hardware.vr@1.0_hal",
+    ],
+    out: [
+        "android/hardware/vr/1.0/Vr.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.vr@1.0-vts.profiler",
+    generated_sources: ["android.hardware.vr@1.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.vr@1.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.vr@1.0-vts.profiler_genc++_headers"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libvts_common",
+        "libvts_profiling",
+        "libvts_multidevice_proto",
+        "libprotobuf-cpp-full",
+        "android.hardware.vr@1.0",
+        
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+
+        // These warnings are in code generated with vtsc
+        // b/31362043
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-unused-private-field",
+        "-Wno-duplicate-decl-specifier",
+        "-Wno-uninitialized",
+        "-Wno-implicitly-unsigned-literal",
+    ],
+}
+
diff --git a/vr/V1_0/host/Android.mk b/vr/V1_0/host/Android.mk
new file mode 100644
index 0000000..bbb2e6c
--- /dev/null
+++ b/vr/V1_0/host/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalVrV1_0Host
+VTS_CONFIG_SRC_DIR := testcases/hal/vr/V1_0/host
+include test/vts/tools/build/Android.host_config.mk
diff --git a/vr/V1_0/host/AndroidTest.xml b/vr/V1_0/host/AndroidTest.xml
new file mode 100644
index 0000000..456a877
--- /dev/null
+++ b/vr/V1_0/host/AndroidTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalVrV1_0Host test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlHostTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="spec/hardware/interfaces/vr/1.0/vts/Vr.vts->/data/local/tmp/spec/android/hardware/vr/1.0/Vr.vts"/>
+        <option name="push" value="DATA/lib/android.hardware.vr@1.0-vts.driver.so->/data/local/tmp/32/android.hardware.vr@1.0-vts.driver.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.vr@1.0-vts.driver.so->/data/local/tmp/64/android.hardware.vr@1.0-vts.driver.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalVrV1_0Host"/>
+        <option name="test-case-path" value="vts/testcases/hal/vr/V1_0/host/VtsHalVrV1_0HostTest"/>
+        <option name="precondition-lshal" value="android.hardware.vr@1.0"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/vr/V1_0/host/VtsHalVrV1_0HostTest.py b/vr/V1_0/host/VtsHalVrV1_0HostTest.py
new file mode 100644
index 0000000..85883ed
--- /dev/null
+++ b/vr/V1_0/host/VtsHalVrV1_0HostTest.py
@@ -0,0 +1,88 @@
+#!/usr/bin/env python
+#
+# Copyright (C) 2016 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.
+#
+
+import logging
+import time
+
+from vts.runners.host import asserts
+from vts.runners.host import base_test
+from vts.runners.host import test_runner
+from vts.utils.python.controllers import android_device
+from vts.utils.python.precondition import precondition_utils
+
+
+class VrHidlTest(base_test.BaseTestClass):
+    """A simple testcase for the VR HIDL HAL."""
+
+    def setUpClass(self):
+        """Creates a mirror and turns on the framework-layer VR service."""
+        self.dut = self.registerController(android_device)[0]
+
+        self.dut.shell.InvokeTerminal("one")
+        self.dut.shell.one.Execute("setenforce 0")  # SELinux permissive mode
+        if not precondition_utils.CanRunHidlHalTest(
+            self, self.dut, self.dut.shell.one):
+            self._skip_all_testcases = True
+            return
+
+        # Test using the binderized mode
+        self.dut.shell.one.Execute(
+            "setprop vts.hal.vts.hidl.get_stub true")
+
+        self.dut.hal.InitHidlHal(
+            target_type="vr",
+            target_basepaths=self.dut.libPaths,
+            target_version=1.0,
+            target_package="android.hardware.vr",
+            target_component_name="IVr",
+            hw_binder_service_name=None,
+            bits=int(self.abi_bitness))
+
+    def tearDownClass(self):
+        """ If profiling is enabled for the test, collect the profiling data
+            and disable profiling after the test is done.
+        """
+        if not self._skip_all_testcases and self.profiling.enabled:
+            self.profiling.ProcessAndUploadTraceData()
+
+    def setUp(self):
+        if self.profiling.enabled:
+            self.profiling.EnableVTSProfiling(self.dut.shell.one)
+
+    def tearDown(self):
+        if self.profiling.enabled:
+            self.profiling.ProcessTraceDataForTestCase(self.dut)
+            self.profiling.DisableVTSProfiling(self.dut.shell.one)
+
+    def testVrBasic(self):
+        """A simple test case which just calls each registered function."""
+        result = self.dut.hal.vr.init()
+        logging.info("init result: %s", result)
+
+        time.sleep(1)
+
+        result = self.dut.hal.vr.setVrMode(True)
+        logging.info("setVrMode(true) result: %s", result)
+
+        time.sleep(1)
+
+        result = self.dut.hal.vr.setVrMode(False)
+        logging.info("setVrMode(false) result: %s", result)
+
+
+if __name__ == "__main__":
+    test_runner.main()
diff --git a/vr/V1_0/host/__init__.py b/vr/V1_0/host/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/vr/V1_0/host/__init__.py
diff --git a/vr/V1_0/target/Android.mk b/vr/V1_0/target/Android.mk
new file mode 100644
index 0000000..0667055
--- /dev/null
+++ b/vr/V1_0/target/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalVrV1_0Target
+VTS_CONFIG_SRC_DIR := testcases/hal/vr/V1_0/target
+include test/vts/tools/build/Android.host_config.mk
diff --git a/vr/V1_0/target/AndroidTest.xml b/vr/V1_0/target/AndroidTest.xml
new file mode 100644
index 0000000..51574f3
--- /dev/null
+++ b/vr/V1_0/target/AndroidTest.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalVrV1_0Target test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetTest.push"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalVrV1_0Target"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalVrV1_0TargetTest/VtsHalVrV1_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalVrV1_0TargetTest/VtsHalVrV1_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <!-- Uncomment this and comment 'precondition-feature' to run this test
+          only on devices using binderized VR HALs.
+        <option name="precondition-hwbinder-service" value="android.hardware.vr" /> -->
+        <option name="precondition-feature" value="android.hardware.vr.high_performance" />
+        <option name="precondition-lshal" value="android.hardware.vr@1.0"/>
+        <option name="test-config-path" value="vts/testcases/hal/vr/V1_0/target/VrHidlTargetTest.config" />
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/vr/V1_0/target/VrHidlTargetTest.config b/vr/V1_0/target/VrHidlTargetTest.config
new file mode 100644
index 0000000..ec01b5f
--- /dev/null
+++ b/vr/V1_0/target/VrHidlTargetTest.config
@@ -0,0 +1,25 @@
+{
+    "use_gae_db": true,
+    "coverage": true,
+    "modules": [{
+                    "module_name": "system/lib64/hw/vr.marlin",
+                    "git_project": {
+                        "name": "device/google/marlin",
+                        "path": "device/google/marlin"
+                    }
+                },
+                {
+                    "module_name": "system/lib64/hw/vr.sailfish",
+                    "git_project": {
+                        "name": "device/google/marlin",
+                        "path": "device/google/marlin"
+                    }
+                },
+                {
+                    "module_name": "system/lib64/hw/android.hardware.vr@1.0-impl",
+                    "git_project": {
+                        "name": "platform/hardware/interfaces",
+                        "path": "hardware/interfaces"
+                    }
+                }]
+}
diff --git a/vr/V1_0/target_profiling/Android.mk b/vr/V1_0/target_profiling/Android.mk
new file mode 100644
index 0000000..e6c20c9
--- /dev/null
+++ b/vr/V1_0/target_profiling/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalVrV1_0TargetProfiling
+VTS_CONFIG_SRC_DIR := testcases/hal/vr/V1_0/target_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/vr/V1_0/target_profiling/AndroidTest.xml b/vr/V1_0/target_profiling/AndroidTest.xml
new file mode 100644
index 0000000..67dcd70
--- /dev/null
+++ b/vr/V1_0/target_profiling/AndroidTest.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalVrV1_0TargetProfiling test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetProfilingTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="DATA/lib/android.hardware.vr@1.0-vts.profiler.so->/data/local/tmp/32/android.hardware.vr@1.0-vts.profiler.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.vr@1.0-vts.profiler.so->/data/local/tmp/64/android.hardware.vr@1.0-vts.profiler.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalVrV1_0TargetProfiling"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalVrV1_0TargetTest/VtsHalVrV1_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalVrV1_0TargetTest/VtsHalVrV1_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="enable-profiling" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.vr@1.0"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/vr/V1_0/target_replay/Android.mk b/vr/V1_0/target_replay/Android.mk
new file mode 100644
index 0000000..feed713
--- /dev/null
+++ b/vr/V1_0/target_replay/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VtsHalVrV1_0TargetReplay
+VTS_CONFIG_SRC_DIR := testcases/hal/vr/V1_0/target_replay
+include test/vts/tools/build/Android.host_config.mk
diff --git a/vr/V1_0/target_replay/AndroidTest.xml b/vr/V1_0/target_replay/AndroidTest.xml
new file mode 100644
index 0000000..a9de929
--- /dev/null
+++ b/vr/V1_0/target_replay/AndroidTest.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for VTS VtsHalVrV1_0TargetReplay test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlHostTest.push"/>
+        <option name="cleanup" value="true"/>
+        <option name="push" value="spec/hardware/interfaces/vr/1.0/vts/Vr.vts->/data/local/tmp/spec/android/hardware/vr/1.0/Vr.vts"/>
+        <option name="push" value="DATA/lib/android.hardware.vr@1.0-vts.driver.so->/data/local/tmp/32/android.hardware.vr@1.0-vts.driver.so"/>
+        <option name="push" value="DATA/lib64/android.hardware.vr@1.0-vts.driver.so->/data/local/tmp/64/android.hardware.vr@1.0-vts.driver.so"/>
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"/>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalVrV1_0TargetReplay"/>
+        <option name="binary-test-type" value="hal_hidl_replay_test"/>
+        <option name="hal-hidl-replay-test-trace-path" value="test/vts-testcase/hal-trace/vr/V1_0/android.hardware.vr@1.0_sailfish_1.vts.trace"/>
+        <option name="hal-hidl-package-name" value="android.hardware.vr@1.0"/>
+        <option name="precondition-lshal" value="android.hardware.vr@1.0"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/vr/__init__.py b/vr/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/vr/__init__.py
diff --git a/wifi/V1_0/target/base/AndroidTest.xml b/wifi/V1_0/target/base/AndroidTest.xml
index c1fa290..76c0895 100644
--- a/wifi/V1_0/target/base/AndroidTest.xml
+++ b/wifi/V1_0/target/base/AndroidTest.xml
@@ -24,6 +24,8 @@
         <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalWifiV1_0TargetTest/VtsHalWifiV1_0TargetTest" />
         <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalWifiV1_0TargetTest/VtsHalWifiV1_0TargetTest" />
         <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
         <option name="precondition-lshal" value="android.hardware.wifi@1.0"/>
         <option name="test-timeout" value="15m"/>
     </test>
diff --git a/wifi/V1_0/target_profiling/base/AndroidTest.xml b/wifi/V1_0/target_profiling/base/AndroidTest.xml
index 3289103..4ae9f18 100644
--- a/wifi/V1_0/target_profiling/base/AndroidTest.xml
+++ b/wifi/V1_0/target_profiling/base/AndroidTest.xml
@@ -27,6 +27,8 @@
         <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalWifiV1_0TargetTest/VtsHalWifiV1_0TargetTest" />
         <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalWifiV1_0TargetTest/VtsHalWifiV1_0TargetTest" />
         <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="binary-test-disable-framework" value="true"/>
+        <option name="binary-test-stop-native-servers" value="true"/>
         <option name="enable-profiling" value="true"/>
         <option name="precondition-lshal" value="android.hardware.wifi@1.0"/>
         <option name="test-timeout" value="15m"/>