Merge "audiohal: Pass thread identifiers to the client for priority adjustment"
diff --git a/audio/2.0/Android.bp b/audio/2.0/Android.bp
index 1d4515d..007dc8a 100644
--- a/audio/2.0/Android.bp
+++ b/audio/2.0/Android.bp
@@ -1,5 +1,19 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.audio@2.0_hal",
+    srcs: [
+        "types.hal",
+        "IDevice.hal",
+        "IDevicesFactory.hal",
+        "IPrimaryDevice.hal",
+        "IStream.hal",
+        "IStreamIn.hal",
+        "IStreamOut.hal",
+        "IStreamOutCallback.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.audio@2.0_genc++",
     tools: ["hidl-gen"],
@@ -104,157 +118,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.audio.vts.driver@2.0_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: [
-        "types.hal",
-        "IDevice.hal",
-        "IDevicesFactory.hal",
-        "IPrimaryDevice.hal",
-        "IStream.hal",
-        "IStreamIn.hal",
-        "IStreamOut.hal",
-        "IStreamOutCallback.hal",
-    ],
-    out: [
-        "android/hardware/audio/2.0/types.vts.cpp",
-        "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",
-    ],
-}
-
-genrule {
-    name: "android.hardware.audio.vts.driver@2.0_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: [
-        "types.hal",
-        "IDevice.hal",
-        "IDevicesFactory.hal",
-        "IPrimaryDevice.hal",
-        "IStream.hal",
-        "IStreamIn.hal",
-        "IStreamOut.hal",
-        "IStreamOutCallback.hal",
-    ],
-    out: [
-        "android/hardware/audio/2.0/types.vts.h",
-        "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",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.audio.vts.driver@2.0",
-    generated_sources: ["android.hardware.audio.vts.driver@2.0_genc++"],
-    generated_headers: ["android.hardware.audio.vts.driver@2.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.audio.vts.driver@2.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hardware.audio.common@2.0",
-        "android.hidl.base@1.0",
-        "android.hardware.audio@2.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hardware.audio.common@2.0",
-        "android.hidl.base@1.0",
-    ],
-}
-
-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: [
-        "types.hal",
-        "IDevice.hal",
-        "IDevicesFactory.hal",
-        "IPrimaryDevice.hal",
-        "IStream.hal",
-        "IStreamIn.hal",
-        "IStreamOut.hal",
-        "IStreamOutCallback.hal",
-    ],
-    out: [
-        "android/hardware/audio/2.0/types.vts.cpp",
-        "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",
-    ],
-}
-
-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: [
-        "types.hal",
-        "IDevice.hal",
-        "IDevicesFactory.hal",
-        "IPrimaryDevice.hal",
-        "IStream.hal",
-        "IStreamIn.hal",
-        "IStreamOut.hal",
-        "IStreamOutCallback.hal",
-    ],
-    out: [
-        "android/hardware/audio/2.0/types.vts.h",
-        "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",
-    ],
-}
-
-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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hardware.audio.common@2.0",
-        "android.hidl.base@1.0",
-        "android.hardware.audio@2.0",
-    ],
-}
diff --git a/audio/2.0/Android.mk b/audio/2.0/Android.mk
index f8767ec..e989364 100644
--- a/audio/2.0/Android.mk
+++ b/audio/2.0/Android.mk
@@ -8,7 +8,7 @@
 LOCAL_MODULE := android.hardware.audio@2.0-java-constants
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 #
diff --git a/audio/common/2.0/Android.bp b/audio/common/2.0/Android.bp
index 284766c..8c14995 100644
--- a/audio/common/2.0/Android.bp
+++ b/audio/common/2.0/Android.bp
@@ -1,5 +1,12 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.audio.common@2.0_hal",
+    srcs: [
+        "types.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.audio.common@2.0_genc++",
     tools: ["hidl-gen"],
@@ -44,95 +51,3 @@
         "libutils",
     ],
 }
-
-genrule {
-    name: "android.hardware.audio.common.vts.driver@2.0_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: [
-        "types.hal",
-    ],
-    out: [
-        "android/hardware/audio/common/2.0/types.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.audio.common.vts.driver@2.0_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: [
-        "types.hal",
-    ],
-    out: [
-        "android/hardware/audio/common/2.0/types.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.audio.common.vts.driver@2.0",
-    generated_sources: ["android.hardware.audio.common.vts.driver@2.0_genc++"],
-    generated_headers: ["android.hardware.audio.common.vts.driver@2.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.audio.common.vts.driver@2.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hardware.audio.common@2.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-    ],
-}
-
-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: [
-        "types.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: [
-        "types.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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hardware.audio.common@2.0",
-    ],
-}
diff --git a/audio/common/2.0/Android.mk b/audio/common/2.0/Android.mk
index 423fe35..7d62779 100644
--- a/audio/common/2.0/Android.mk
+++ b/audio/common/2.0/Android.mk
@@ -8,7 +8,7 @@
 LOCAL_MODULE := android.hardware.audio.common@2.0-java-constants
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 #
diff --git a/audio/effect/2.0/Android.bp b/audio/effect/2.0/Android.bp
index 98d6cfe..29bc890 100644
--- a/audio/effect/2.0/Android.bp
+++ b/audio/effect/2.0/Android.bp
@@ -1,5 +1,26 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.audio.effect@2.0_hal",
+    srcs: [
+        "types.hal",
+        "IAcousticEchoCancelerEffect.hal",
+        "IAutomaticGainControlEffect.hal",
+        "IBassBoostEffect.hal",
+        "IDownmixEffect.hal",
+        "IEffect.hal",
+        "IEffectBufferProviderCallback.hal",
+        "IEffectsFactory.hal",
+        "IEnvironmentalReverbEffect.hal",
+        "IEqualizerEffect.hal",
+        "ILoudnessEnhancerEffect.hal",
+        "INoiseSuppressionEffect.hal",
+        "IPresetReverbEffect.hal",
+        "IVirtualizerEffect.hal",
+        "IVisualizerEffect.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.audio.effect@2.0_genc++",
     tools: ["hidl-gen"],
@@ -160,213 +181,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.audio.effect.vts.driver@2.0_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: [
-        "types.hal",
-        "IAcousticEchoCancelerEffect.hal",
-        "IAutomaticGainControlEffect.hal",
-        "IBassBoostEffect.hal",
-        "IDownmixEffect.hal",
-        "IEffect.hal",
-        "IEffectBufferProviderCallback.hal",
-        "IEffectsFactory.hal",
-        "IEnvironmentalReverbEffect.hal",
-        "IEqualizerEffect.hal",
-        "ILoudnessEnhancerEffect.hal",
-        "INoiseSuppressionEffect.hal",
-        "IPresetReverbEffect.hal",
-        "IVirtualizerEffect.hal",
-        "IVisualizerEffect.hal",
-    ],
-    out: [
-        "android/hardware/audio/effect/2.0/types.vts.cpp",
-        "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",
-    ],
-}
-
-genrule {
-    name: "android.hardware.audio.effect.vts.driver@2.0_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: [
-        "types.hal",
-        "IAcousticEchoCancelerEffect.hal",
-        "IAutomaticGainControlEffect.hal",
-        "IBassBoostEffect.hal",
-        "IDownmixEffect.hal",
-        "IEffect.hal",
-        "IEffectBufferProviderCallback.hal",
-        "IEffectsFactory.hal",
-        "IEnvironmentalReverbEffect.hal",
-        "IEqualizerEffect.hal",
-        "ILoudnessEnhancerEffect.hal",
-        "INoiseSuppressionEffect.hal",
-        "IPresetReverbEffect.hal",
-        "IVirtualizerEffect.hal",
-        "IVisualizerEffect.hal",
-    ],
-    out: [
-        "android/hardware/audio/effect/2.0/types.vts.h",
-        "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",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.audio.effect.vts.driver@2.0",
-    generated_sources: ["android.hardware.audio.effect.vts.driver@2.0_genc++"],
-    generated_headers: ["android.hardware.audio.effect.vts.driver@2.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.audio.effect.vts.driver@2.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hardware.audio.common@2.0",
-        "android.hidl.base@1.0",
-        "android.hardware.audio.effect@2.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hardware.audio.common@2.0",
-        "android.hidl.base@1.0",
-    ],
-}
-
-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: [
-        "types.hal",
-        "IAcousticEchoCancelerEffect.hal",
-        "IAutomaticGainControlEffect.hal",
-        "IBassBoostEffect.hal",
-        "IDownmixEffect.hal",
-        "IEffect.hal",
-        "IEffectBufferProviderCallback.hal",
-        "IEffectsFactory.hal",
-        "IEnvironmentalReverbEffect.hal",
-        "IEqualizerEffect.hal",
-        "ILoudnessEnhancerEffect.hal",
-        "INoiseSuppressionEffect.hal",
-        "IPresetReverbEffect.hal",
-        "IVirtualizerEffect.hal",
-        "IVisualizerEffect.hal",
-    ],
-    out: [
-        "android/hardware/audio/effect/2.0/types.vts.cpp",
-        "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",
-    ],
-}
-
-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: [
-        "types.hal",
-        "IAcousticEchoCancelerEffect.hal",
-        "IAutomaticGainControlEffect.hal",
-        "IBassBoostEffect.hal",
-        "IDownmixEffect.hal",
-        "IEffect.hal",
-        "IEffectBufferProviderCallback.hal",
-        "IEffectsFactory.hal",
-        "IEnvironmentalReverbEffect.hal",
-        "IEqualizerEffect.hal",
-        "ILoudnessEnhancerEffect.hal",
-        "INoiseSuppressionEffect.hal",
-        "IPresetReverbEffect.hal",
-        "IVirtualizerEffect.hal",
-        "IVisualizerEffect.hal",
-    ],
-    out: [
-        "android/hardware/audio/effect/2.0/types.vts.h",
-        "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",
-    ],
-}
-
-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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hardware.audio.common@2.0",
-        "android.hidl.base@1.0",
-        "android.hardware.audio.effect@2.0",
-    ],
-}
diff --git a/audio/effect/2.0/Android.mk b/audio/effect/2.0/Android.mk
index 3383efd..d71255e 100644
--- a/audio/effect/2.0/Android.mk
+++ b/audio/effect/2.0/Android.mk
@@ -8,7 +8,7 @@
 LOCAL_MODULE := android.hardware.audio.effect@2.0-java-constants
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 #
diff --git a/automotive/Android.bp b/automotive/Android.bp
new file mode 100644
index 0000000..aa8f74f
--- /dev/null
+++ b/automotive/Android.bp
@@ -0,0 +1,5 @@
+// This is an autogenerated file, do not edit.
+subdirs = [
+    "vehicle",
+    "vehicle/2.0",
+]
diff --git a/automotive/vehicle/2.0/Android.bp b/automotive/vehicle/2.0/Android.bp
new file mode 100644
index 0000000..3f5b383
--- /dev/null
+++ b/automotive/vehicle/2.0/Android.bp
@@ -0,0 +1,73 @@
+// This file is autogenerated by hidl-gen. Do not edit manually.
+
+filegroup {
+    name: "android.hardware.automotive.vehicle@2.0_hal",
+    srcs: [
+        "types.hal",
+        "IVehicle.hal",
+        "IVehicleCallback.hal",
+    ],
+}
+
+genrule {
+    name: "android.hardware.automotive.vehicle@2.0_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.automotive.vehicle@2.0",
+    srcs: [
+        "types.hal",
+        "IVehicle.hal",
+        "IVehicleCallback.hal",
+    ],
+    out: [
+        "android/hardware/automotive/vehicle/2.0/types.cpp",
+        "android/hardware/automotive/vehicle/2.0/VehicleAll.cpp",
+        "android/hardware/automotive/vehicle/2.0/VehicleCallbackAll.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.automotive.vehicle@2.0_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.automotive.vehicle@2.0",
+    srcs: [
+        "types.hal",
+        "IVehicle.hal",
+        "IVehicleCallback.hal",
+    ],
+    out: [
+        "android/hardware/automotive/vehicle/2.0/types.h",
+        "android/hardware/automotive/vehicle/2.0/IVehicle.h",
+        "android/hardware/automotive/vehicle/2.0/IHwVehicle.h",
+        "android/hardware/automotive/vehicle/2.0/BnHwVehicle.h",
+        "android/hardware/automotive/vehicle/2.0/BpHwVehicle.h",
+        "android/hardware/automotive/vehicle/2.0/BsVehicle.h",
+        "android/hardware/automotive/vehicle/2.0/IVehicleCallback.h",
+        "android/hardware/automotive/vehicle/2.0/IHwVehicleCallback.h",
+        "android/hardware/automotive/vehicle/2.0/BnHwVehicleCallback.h",
+        "android/hardware/automotive/vehicle/2.0/BpHwVehicleCallback.h",
+        "android/hardware/automotive/vehicle/2.0/BsVehicleCallback.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.automotive.vehicle@2.0",
+    generated_sources: ["android.hardware.automotive.vehicle@2.0_genc++"],
+    generated_headers: ["android.hardware.automotive.vehicle@2.0_genc++_headers"],
+    export_generated_headers: ["android.hardware.automotive.vehicle@2.0_genc++_headers"],
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "android.hidl.base@1.0",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "android.hidl.base@1.0",
+    ],
+}
diff --git a/vehicle/2.0/Android.mk b/automotive/vehicle/2.0/Android.mk
similarity index 74%
rename from vehicle/2.0/Android.mk
rename to automotive/vehicle/2.0/Android.mk
index 1f7fd71..c540027 100644
--- a/vehicle/2.0/Android.mk
+++ b/automotive/vehicle/2.0/Android.mk
@@ -5,10 +5,10 @@
 ################################################################################
 
 include $(CLEAR_VARS)
-LOCAL_MODULE := android.hardware.vehicle@2.0-java
+LOCAL_MODULE := android.hardware.automotive.vehicle@2.0-java
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -19,7 +19,7 @@
 #
 # Build types.hal (CommonIgnitionMonitors)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/CommonIgnitionMonitors.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/CommonIgnitionMonitors.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -29,7 +29,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.CommonIgnitionMonitors
+        android.hardware.automotive.vehicle@2.0::types.CommonIgnitionMonitors
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -38,7 +38,7 @@
 #
 # Build types.hal (CompressionIgnitionMonitors)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/CompressionIgnitionMonitors.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/CompressionIgnitionMonitors.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -48,7 +48,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.CompressionIgnitionMonitors
+        android.hardware.automotive.vehicle@2.0::types.CompressionIgnitionMonitors
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -57,7 +57,7 @@
 #
 # Build types.hal (FuelSystemStatus)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/FuelSystemStatus.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/FuelSystemStatus.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -67,7 +67,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.FuelSystemStatus
+        android.hardware.automotive.vehicle@2.0::types.FuelSystemStatus
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -76,7 +76,7 @@
 #
 # Build types.hal (FuelType)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/FuelType.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/FuelType.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -86,7 +86,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.FuelType
+        android.hardware.automotive.vehicle@2.0::types.FuelType
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -95,7 +95,7 @@
 #
 # Build types.hal (IgnitionMonitorKind)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/IgnitionMonitorKind.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/IgnitionMonitorKind.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -105,7 +105,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.IgnitionMonitorKind
+        android.hardware.automotive.vehicle@2.0::types.IgnitionMonitorKind
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -114,7 +114,7 @@
 #
 # Build types.hal (Obd2FloatSensorIndex)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/Obd2FloatSensorIndex.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/Obd2FloatSensorIndex.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -124,7 +124,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.Obd2FloatSensorIndex
+        android.hardware.automotive.vehicle@2.0::types.Obd2FloatSensorIndex
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -133,7 +133,7 @@
 #
 # Build types.hal (Obd2IntegerSensorIndex)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/Obd2IntegerSensorIndex.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/Obd2IntegerSensorIndex.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -143,7 +143,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.Obd2IntegerSensorIndex
+        android.hardware.automotive.vehicle@2.0::types.Obd2IntegerSensorIndex
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -152,7 +152,7 @@
 #
 # Build types.hal (SecondaryAirStatus)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/SecondaryAirStatus.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/SecondaryAirStatus.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -162,7 +162,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.SecondaryAirStatus
+        android.hardware.automotive.vehicle@2.0::types.SecondaryAirStatus
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -171,7 +171,7 @@
 #
 # Build types.hal (SparkIgnitionMonitors)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/SparkIgnitionMonitors.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/SparkIgnitionMonitors.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -181,7 +181,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.SparkIgnitionMonitors
+        android.hardware.automotive.vehicle@2.0::types.SparkIgnitionMonitors
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -190,7 +190,7 @@
 #
 # Build types.hal (StatusCode)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/StatusCode.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/StatusCode.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -200,7 +200,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.StatusCode
+        android.hardware.automotive.vehicle@2.0::types.StatusCode
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -209,7 +209,7 @@
 #
 # Build types.hal (SubscribeFlags)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/SubscribeFlags.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/SubscribeFlags.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -219,7 +219,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.SubscribeFlags
+        android.hardware.automotive.vehicle@2.0::types.SubscribeFlags
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -228,7 +228,7 @@
 #
 # Build types.hal (SubscribeOptions)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/SubscribeOptions.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/SubscribeOptions.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -238,7 +238,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.SubscribeOptions
+        android.hardware.automotive.vehicle@2.0::types.SubscribeOptions
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -247,7 +247,7 @@
 #
 # Build types.hal (VehicleApPowerBootupReason)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleApPowerBootupReason.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleApPowerBootupReason.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -257,7 +257,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleApPowerBootupReason
+        android.hardware.automotive.vehicle@2.0::types.VehicleApPowerBootupReason
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -266,7 +266,7 @@
 #
 # Build types.hal (VehicleApPowerSetState)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleApPowerSetState.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleApPowerSetState.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -276,7 +276,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleApPowerSetState
+        android.hardware.automotive.vehicle@2.0::types.VehicleApPowerSetState
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -285,7 +285,7 @@
 #
 # Build types.hal (VehicleApPowerState)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleApPowerState.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleApPowerState.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -295,7 +295,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleApPowerState
+        android.hardware.automotive.vehicle@2.0::types.VehicleApPowerState
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -304,7 +304,7 @@
 #
 # Build types.hal (VehicleApPowerStateConfigFlag)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleApPowerStateConfigFlag.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleApPowerStateConfigFlag.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -314,7 +314,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleApPowerStateConfigFlag
+        android.hardware.automotive.vehicle@2.0::types.VehicleApPowerStateConfigFlag
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -323,7 +323,7 @@
 #
 # Build types.hal (VehicleApPowerStateIndex)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleApPowerStateIndex.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleApPowerStateIndex.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -333,7 +333,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleApPowerStateIndex
+        android.hardware.automotive.vehicle@2.0::types.VehicleApPowerStateIndex
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -342,7 +342,7 @@
 #
 # Build types.hal (VehicleApPowerStateShutdownParam)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleApPowerStateShutdownParam.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleApPowerStateShutdownParam.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -352,7 +352,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleApPowerStateShutdownParam
+        android.hardware.automotive.vehicle@2.0::types.VehicleApPowerStateShutdownParam
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -361,7 +361,7 @@
 #
 # Build types.hal (VehicleArea)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleArea.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleArea.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -371,7 +371,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleArea
+        android.hardware.automotive.vehicle@2.0::types.VehicleArea
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -380,7 +380,7 @@
 #
 # Build types.hal (VehicleAreaConfig)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAreaConfig.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAreaConfig.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -390,7 +390,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAreaConfig
+        android.hardware.automotive.vehicle@2.0::types.VehicleAreaConfig
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -399,7 +399,7 @@
 #
 # Build types.hal (VehicleAreaDoor)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAreaDoor.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAreaDoor.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -409,7 +409,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAreaDoor
+        android.hardware.automotive.vehicle@2.0::types.VehicleAreaDoor
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -418,7 +418,7 @@
 #
 # Build types.hal (VehicleAreaMirror)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAreaMirror.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAreaMirror.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -428,7 +428,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAreaMirror
+        android.hardware.automotive.vehicle@2.0::types.VehicleAreaMirror
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -437,7 +437,7 @@
 #
 # Build types.hal (VehicleAreaSeat)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAreaSeat.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAreaSeat.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -447,7 +447,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAreaSeat
+        android.hardware.automotive.vehicle@2.0::types.VehicleAreaSeat
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -456,7 +456,7 @@
 #
 # Build types.hal (VehicleAreaWindow)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAreaWindow.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAreaWindow.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -466,7 +466,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAreaWindow
+        android.hardware.automotive.vehicle@2.0::types.VehicleAreaWindow
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -475,7 +475,7 @@
 #
 # Build types.hal (VehicleAreaZone)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAreaZone.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAreaZone.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -485,7 +485,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAreaZone
+        android.hardware.automotive.vehicle@2.0::types.VehicleAreaZone
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -494,7 +494,7 @@
 #
 # Build types.hal (VehicleAudioContextFlag)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAudioContextFlag.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAudioContextFlag.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -504,7 +504,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAudioContextFlag
+        android.hardware.automotive.vehicle@2.0::types.VehicleAudioContextFlag
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -513,7 +513,7 @@
 #
 # Build types.hal (VehicleAudioExtFocusFlag)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAudioExtFocusFlag.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAudioExtFocusFlag.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -523,7 +523,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAudioExtFocusFlag
+        android.hardware.automotive.vehicle@2.0::types.VehicleAudioExtFocusFlag
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -532,7 +532,7 @@
 #
 # Build types.hal (VehicleAudioFocusIndex)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAudioFocusIndex.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAudioFocusIndex.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -542,7 +542,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAudioFocusIndex
+        android.hardware.automotive.vehicle@2.0::types.VehicleAudioFocusIndex
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -551,7 +551,7 @@
 #
 # Build types.hal (VehicleAudioFocusRequest)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAudioFocusRequest.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAudioFocusRequest.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -561,7 +561,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAudioFocusRequest
+        android.hardware.automotive.vehicle@2.0::types.VehicleAudioFocusRequest
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -570,7 +570,7 @@
 #
 # Build types.hal (VehicleAudioFocusState)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAudioFocusState.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAudioFocusState.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -580,7 +580,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAudioFocusState
+        android.hardware.automotive.vehicle@2.0::types.VehicleAudioFocusState
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -589,7 +589,7 @@
 #
 # Build types.hal (VehicleAudioHwVariantConfigFlag)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAudioHwVariantConfigFlag.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAudioHwVariantConfigFlag.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -599,7 +599,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAudioHwVariantConfigFlag
+        android.hardware.automotive.vehicle@2.0::types.VehicleAudioHwVariantConfigFlag
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -608,7 +608,7 @@
 #
 # Build types.hal (VehicleAudioRoutingPolicyIndex)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAudioRoutingPolicyIndex.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAudioRoutingPolicyIndex.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -618,7 +618,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAudioRoutingPolicyIndex
+        android.hardware.automotive.vehicle@2.0::types.VehicleAudioRoutingPolicyIndex
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -627,7 +627,7 @@
 #
 # Build types.hal (VehicleAudioStream)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAudioStream.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAudioStream.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -637,7 +637,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAudioStream
+        android.hardware.automotive.vehicle@2.0::types.VehicleAudioStream
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -646,7 +646,7 @@
 #
 # Build types.hal (VehicleAudioStreamFlag)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAudioStreamFlag.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAudioStreamFlag.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -656,7 +656,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAudioStreamFlag
+        android.hardware.automotive.vehicle@2.0::types.VehicleAudioStreamFlag
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -665,7 +665,7 @@
 #
 # Build types.hal (VehicleAudioVolumeCapabilityFlag)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAudioVolumeCapabilityFlag.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAudioVolumeCapabilityFlag.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -675,7 +675,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAudioVolumeCapabilityFlag
+        android.hardware.automotive.vehicle@2.0::types.VehicleAudioVolumeCapabilityFlag
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -684,7 +684,7 @@
 #
 # Build types.hal (VehicleAudioVolumeIndex)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAudioVolumeIndex.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAudioVolumeIndex.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -694,7 +694,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAudioVolumeIndex
+        android.hardware.automotive.vehicle@2.0::types.VehicleAudioVolumeIndex
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -703,7 +703,7 @@
 #
 # Build types.hal (VehicleAudioVolumeLimitIndex)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAudioVolumeLimitIndex.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAudioVolumeLimitIndex.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -713,7 +713,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAudioVolumeLimitIndex
+        android.hardware.automotive.vehicle@2.0::types.VehicleAudioVolumeLimitIndex
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -722,7 +722,7 @@
 #
 # Build types.hal (VehicleAudioVolumeState)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAudioVolumeState.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAudioVolumeState.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -732,7 +732,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAudioVolumeState
+        android.hardware.automotive.vehicle@2.0::types.VehicleAudioVolumeState
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -741,7 +741,7 @@
 #
 # Build types.hal (VehicleDisplay)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleDisplay.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleDisplay.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -751,7 +751,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleDisplay
+        android.hardware.automotive.vehicle@2.0::types.VehicleDisplay
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -760,7 +760,7 @@
 #
 # Build types.hal (VehicleDrivingStatus)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleDrivingStatus.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleDrivingStatus.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -770,7 +770,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleDrivingStatus
+        android.hardware.automotive.vehicle@2.0::types.VehicleDrivingStatus
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -779,7 +779,7 @@
 #
 # Build types.hal (VehicleGear)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleGear.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleGear.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -789,7 +789,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleGear
+        android.hardware.automotive.vehicle@2.0::types.VehicleGear
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -798,7 +798,7 @@
 #
 # Build types.hal (VehicleHvacFanDirection)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleHvacFanDirection.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleHvacFanDirection.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -808,7 +808,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleHvacFanDirection
+        android.hardware.automotive.vehicle@2.0::types.VehicleHvacFanDirection
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -817,7 +817,7 @@
 #
 # Build types.hal (VehicleHwKeyInputAction)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleHwKeyInputAction.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleHwKeyInputAction.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -827,7 +827,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleHwKeyInputAction
+        android.hardware.automotive.vehicle@2.0::types.VehicleHwKeyInputAction
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -836,7 +836,7 @@
 #
 # Build types.hal (VehicleIgnitionState)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleIgnitionState.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleIgnitionState.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -846,7 +846,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleIgnitionState
+        android.hardware.automotive.vehicle@2.0::types.VehicleIgnitionState
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -855,7 +855,7 @@
 #
 # Build types.hal (VehicleInstrumentClusterType)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleInstrumentClusterType.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleInstrumentClusterType.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -865,7 +865,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleInstrumentClusterType
+        android.hardware.automotive.vehicle@2.0::types.VehicleInstrumentClusterType
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -874,7 +874,7 @@
 #
 # Build types.hal (VehiclePropConfig)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehiclePropConfig.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehiclePropConfig.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -884,7 +884,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehiclePropConfig
+        android.hardware.automotive.vehicle@2.0::types.VehiclePropConfig
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -893,7 +893,7 @@
 #
 # Build types.hal (VehiclePropValue)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehiclePropValue.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehiclePropValue.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -903,7 +903,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehiclePropValue
+        android.hardware.automotive.vehicle@2.0::types.VehiclePropValue
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -912,7 +912,7 @@
 #
 # Build types.hal (VehicleProperty)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleProperty.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleProperty.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -922,7 +922,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleProperty
+        android.hardware.automotive.vehicle@2.0::types.VehicleProperty
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -931,7 +931,7 @@
 #
 # Build types.hal (VehiclePropertyAccess)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehiclePropertyAccess.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehiclePropertyAccess.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -941,7 +941,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehiclePropertyAccess
+        android.hardware.automotive.vehicle@2.0::types.VehiclePropertyAccess
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -950,7 +950,7 @@
 #
 # Build types.hal (VehiclePropertyChangeMode)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehiclePropertyChangeMode.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehiclePropertyChangeMode.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -960,7 +960,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehiclePropertyChangeMode
+        android.hardware.automotive.vehicle@2.0::types.VehiclePropertyChangeMode
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -969,7 +969,7 @@
 #
 # Build types.hal (VehiclePropertyGroup)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehiclePropertyGroup.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehiclePropertyGroup.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -979,7 +979,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehiclePropertyGroup
+        android.hardware.automotive.vehicle@2.0::types.VehiclePropertyGroup
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -988,7 +988,7 @@
 #
 # Build types.hal (VehiclePropertyOperation)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehiclePropertyOperation.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehiclePropertyOperation.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -998,7 +998,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehiclePropertyOperation
+        android.hardware.automotive.vehicle@2.0::types.VehiclePropertyOperation
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1007,7 +1007,7 @@
 #
 # Build types.hal (VehiclePropertyType)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehiclePropertyType.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehiclePropertyType.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1017,7 +1017,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehiclePropertyType
+        android.hardware.automotive.vehicle@2.0::types.VehiclePropertyType
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1026,7 +1026,7 @@
 #
 # Build types.hal (VehicleRadioConstants)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleRadioConstants.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleRadioConstants.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1036,7 +1036,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleRadioConstants
+        android.hardware.automotive.vehicle@2.0::types.VehicleRadioConstants
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1045,7 +1045,7 @@
 #
 # Build types.hal (VehicleTurnSignal)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleTurnSignal.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleTurnSignal.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1055,7 +1055,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleTurnSignal
+        android.hardware.automotive.vehicle@2.0::types.VehicleTurnSignal
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1064,7 +1064,7 @@
 #
 # Build types.hal (VehicleUnit)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleUnit.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleUnit.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1074,7 +1074,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleUnit
+        android.hardware.automotive.vehicle@2.0::types.VehicleUnit
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1083,7 +1083,7 @@
 #
 # Build types.hal (VmsMessageIntegerValuesIndex)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VmsMessageIntegerValuesIndex.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VmsMessageIntegerValuesIndex.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1093,7 +1093,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VmsMessageIntegerValuesIndex
+        android.hardware.automotive.vehicle@2.0::types.VmsMessageIntegerValuesIndex
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1102,7 +1102,7 @@
 #
 # Build types.hal (VmsMessageType)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VmsMessageType.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VmsMessageType.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1112,7 +1112,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VmsMessageType
+        android.hardware.automotive.vehicle@2.0::types.VmsMessageType
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1121,7 +1121,7 @@
 #
 # Build types.hal (Wheel)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/Wheel.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/Wheel.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1131,7 +1131,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.Wheel
+        android.hardware.automotive.vehicle@2.0::types.Wheel
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1140,7 +1140,7 @@
 #
 # Build IVehicle.hal
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/IVehicle.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/IVehicle.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IVehicle.hal
@@ -1154,7 +1154,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::IVehicle
+        android.hardware.automotive.vehicle@2.0::IVehicle
 
 $(GEN): $(LOCAL_PATH)/IVehicle.hal
 	$(transform-generated-source)
@@ -1163,7 +1163,7 @@
 #
 # Build IVehicleCallback.hal
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/IVehicleCallback.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/IVehicleCallback.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IVehicleCallback.hal
@@ -1175,7 +1175,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::IVehicleCallback
+        android.hardware.automotive.vehicle@2.0::IVehicleCallback
 
 $(GEN): $(LOCAL_PATH)/IVehicleCallback.hal
 	$(transform-generated-source)
@@ -1186,10 +1186,10 @@
 ################################################################################
 
 include $(CLEAR_VARS)
-LOCAL_MODULE := android.hardware.vehicle@2.0-java-static
+LOCAL_MODULE := android.hardware.automotive.vehicle@2.0-java-static
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -1200,7 +1200,7 @@
 #
 # Build types.hal (CommonIgnitionMonitors)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/CommonIgnitionMonitors.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/CommonIgnitionMonitors.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1210,7 +1210,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.CommonIgnitionMonitors
+        android.hardware.automotive.vehicle@2.0::types.CommonIgnitionMonitors
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1219,7 +1219,7 @@
 #
 # Build types.hal (CompressionIgnitionMonitors)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/CompressionIgnitionMonitors.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/CompressionIgnitionMonitors.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1229,7 +1229,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.CompressionIgnitionMonitors
+        android.hardware.automotive.vehicle@2.0::types.CompressionIgnitionMonitors
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1238,7 +1238,7 @@
 #
 # Build types.hal (FuelSystemStatus)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/FuelSystemStatus.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/FuelSystemStatus.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1248,7 +1248,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.FuelSystemStatus
+        android.hardware.automotive.vehicle@2.0::types.FuelSystemStatus
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1257,7 +1257,7 @@
 #
 # Build types.hal (FuelType)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/FuelType.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/FuelType.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1267,7 +1267,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.FuelType
+        android.hardware.automotive.vehicle@2.0::types.FuelType
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1276,7 +1276,7 @@
 #
 # Build types.hal (IgnitionMonitorKind)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/IgnitionMonitorKind.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/IgnitionMonitorKind.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1286,7 +1286,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.IgnitionMonitorKind
+        android.hardware.automotive.vehicle@2.0::types.IgnitionMonitorKind
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1295,7 +1295,7 @@
 #
 # Build types.hal (Obd2FloatSensorIndex)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/Obd2FloatSensorIndex.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/Obd2FloatSensorIndex.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1305,7 +1305,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.Obd2FloatSensorIndex
+        android.hardware.automotive.vehicle@2.0::types.Obd2FloatSensorIndex
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1314,7 +1314,7 @@
 #
 # Build types.hal (Obd2IntegerSensorIndex)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/Obd2IntegerSensorIndex.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/Obd2IntegerSensorIndex.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1324,7 +1324,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.Obd2IntegerSensorIndex
+        android.hardware.automotive.vehicle@2.0::types.Obd2IntegerSensorIndex
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1333,7 +1333,7 @@
 #
 # Build types.hal (SecondaryAirStatus)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/SecondaryAirStatus.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/SecondaryAirStatus.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1343,7 +1343,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.SecondaryAirStatus
+        android.hardware.automotive.vehicle@2.0::types.SecondaryAirStatus
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1352,7 +1352,7 @@
 #
 # Build types.hal (SparkIgnitionMonitors)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/SparkIgnitionMonitors.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/SparkIgnitionMonitors.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1362,7 +1362,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.SparkIgnitionMonitors
+        android.hardware.automotive.vehicle@2.0::types.SparkIgnitionMonitors
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1371,7 +1371,7 @@
 #
 # Build types.hal (StatusCode)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/StatusCode.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/StatusCode.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1381,7 +1381,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.StatusCode
+        android.hardware.automotive.vehicle@2.0::types.StatusCode
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1390,7 +1390,7 @@
 #
 # Build types.hal (SubscribeFlags)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/SubscribeFlags.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/SubscribeFlags.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1400,7 +1400,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.SubscribeFlags
+        android.hardware.automotive.vehicle@2.0::types.SubscribeFlags
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1409,7 +1409,7 @@
 #
 # Build types.hal (SubscribeOptions)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/SubscribeOptions.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/SubscribeOptions.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1419,7 +1419,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.SubscribeOptions
+        android.hardware.automotive.vehicle@2.0::types.SubscribeOptions
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1428,7 +1428,7 @@
 #
 # Build types.hal (VehicleApPowerBootupReason)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleApPowerBootupReason.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleApPowerBootupReason.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1438,7 +1438,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleApPowerBootupReason
+        android.hardware.automotive.vehicle@2.0::types.VehicleApPowerBootupReason
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1447,7 +1447,7 @@
 #
 # Build types.hal (VehicleApPowerSetState)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleApPowerSetState.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleApPowerSetState.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1457,7 +1457,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleApPowerSetState
+        android.hardware.automotive.vehicle@2.0::types.VehicleApPowerSetState
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1466,7 +1466,7 @@
 #
 # Build types.hal (VehicleApPowerState)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleApPowerState.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleApPowerState.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1476,7 +1476,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleApPowerState
+        android.hardware.automotive.vehicle@2.0::types.VehicleApPowerState
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1485,7 +1485,7 @@
 #
 # Build types.hal (VehicleApPowerStateConfigFlag)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleApPowerStateConfigFlag.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleApPowerStateConfigFlag.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1495,7 +1495,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleApPowerStateConfigFlag
+        android.hardware.automotive.vehicle@2.0::types.VehicleApPowerStateConfigFlag
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1504,7 +1504,7 @@
 #
 # Build types.hal (VehicleApPowerStateIndex)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleApPowerStateIndex.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleApPowerStateIndex.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1514,7 +1514,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleApPowerStateIndex
+        android.hardware.automotive.vehicle@2.0::types.VehicleApPowerStateIndex
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1523,7 +1523,7 @@
 #
 # Build types.hal (VehicleApPowerStateShutdownParam)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleApPowerStateShutdownParam.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleApPowerStateShutdownParam.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1533,7 +1533,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleApPowerStateShutdownParam
+        android.hardware.automotive.vehicle@2.0::types.VehicleApPowerStateShutdownParam
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1542,7 +1542,7 @@
 #
 # Build types.hal (VehicleArea)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleArea.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleArea.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1552,7 +1552,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleArea
+        android.hardware.automotive.vehicle@2.0::types.VehicleArea
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1561,7 +1561,7 @@
 #
 # Build types.hal (VehicleAreaConfig)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAreaConfig.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAreaConfig.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1571,7 +1571,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAreaConfig
+        android.hardware.automotive.vehicle@2.0::types.VehicleAreaConfig
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1580,7 +1580,7 @@
 #
 # Build types.hal (VehicleAreaDoor)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAreaDoor.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAreaDoor.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1590,7 +1590,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAreaDoor
+        android.hardware.automotive.vehicle@2.0::types.VehicleAreaDoor
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1599,7 +1599,7 @@
 #
 # Build types.hal (VehicleAreaMirror)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAreaMirror.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAreaMirror.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1609,7 +1609,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAreaMirror
+        android.hardware.automotive.vehicle@2.0::types.VehicleAreaMirror
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1618,7 +1618,7 @@
 #
 # Build types.hal (VehicleAreaSeat)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAreaSeat.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAreaSeat.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1628,7 +1628,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAreaSeat
+        android.hardware.automotive.vehicle@2.0::types.VehicleAreaSeat
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1637,7 +1637,7 @@
 #
 # Build types.hal (VehicleAreaWindow)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAreaWindow.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAreaWindow.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1647,7 +1647,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAreaWindow
+        android.hardware.automotive.vehicle@2.0::types.VehicleAreaWindow
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1656,7 +1656,7 @@
 #
 # Build types.hal (VehicleAreaZone)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAreaZone.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAreaZone.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1666,7 +1666,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAreaZone
+        android.hardware.automotive.vehicle@2.0::types.VehicleAreaZone
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1675,7 +1675,7 @@
 #
 # Build types.hal (VehicleAudioContextFlag)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAudioContextFlag.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAudioContextFlag.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1685,7 +1685,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAudioContextFlag
+        android.hardware.automotive.vehicle@2.0::types.VehicleAudioContextFlag
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1694,7 +1694,7 @@
 #
 # Build types.hal (VehicleAudioExtFocusFlag)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAudioExtFocusFlag.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAudioExtFocusFlag.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1704,7 +1704,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAudioExtFocusFlag
+        android.hardware.automotive.vehicle@2.0::types.VehicleAudioExtFocusFlag
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1713,7 +1713,7 @@
 #
 # Build types.hal (VehicleAudioFocusIndex)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAudioFocusIndex.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAudioFocusIndex.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1723,7 +1723,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAudioFocusIndex
+        android.hardware.automotive.vehicle@2.0::types.VehicleAudioFocusIndex
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1732,7 +1732,7 @@
 #
 # Build types.hal (VehicleAudioFocusRequest)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAudioFocusRequest.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAudioFocusRequest.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1742,7 +1742,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAudioFocusRequest
+        android.hardware.automotive.vehicle@2.0::types.VehicleAudioFocusRequest
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1751,7 +1751,7 @@
 #
 # Build types.hal (VehicleAudioFocusState)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAudioFocusState.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAudioFocusState.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1761,7 +1761,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAudioFocusState
+        android.hardware.automotive.vehicle@2.0::types.VehicleAudioFocusState
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1770,7 +1770,7 @@
 #
 # Build types.hal (VehicleAudioHwVariantConfigFlag)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAudioHwVariantConfigFlag.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAudioHwVariantConfigFlag.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1780,7 +1780,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAudioHwVariantConfigFlag
+        android.hardware.automotive.vehicle@2.0::types.VehicleAudioHwVariantConfigFlag
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1789,7 +1789,7 @@
 #
 # Build types.hal (VehicleAudioRoutingPolicyIndex)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAudioRoutingPolicyIndex.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAudioRoutingPolicyIndex.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1799,7 +1799,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAudioRoutingPolicyIndex
+        android.hardware.automotive.vehicle@2.0::types.VehicleAudioRoutingPolicyIndex
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1808,7 +1808,7 @@
 #
 # Build types.hal (VehicleAudioStream)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAudioStream.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAudioStream.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1818,7 +1818,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAudioStream
+        android.hardware.automotive.vehicle@2.0::types.VehicleAudioStream
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1827,7 +1827,7 @@
 #
 # Build types.hal (VehicleAudioStreamFlag)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAudioStreamFlag.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAudioStreamFlag.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1837,7 +1837,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAudioStreamFlag
+        android.hardware.automotive.vehicle@2.0::types.VehicleAudioStreamFlag
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1846,7 +1846,7 @@
 #
 # Build types.hal (VehicleAudioVolumeCapabilityFlag)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAudioVolumeCapabilityFlag.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAudioVolumeCapabilityFlag.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1856,7 +1856,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAudioVolumeCapabilityFlag
+        android.hardware.automotive.vehicle@2.0::types.VehicleAudioVolumeCapabilityFlag
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1865,7 +1865,7 @@
 #
 # Build types.hal (VehicleAudioVolumeIndex)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAudioVolumeIndex.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAudioVolumeIndex.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1875,7 +1875,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAudioVolumeIndex
+        android.hardware.automotive.vehicle@2.0::types.VehicleAudioVolumeIndex
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1884,7 +1884,7 @@
 #
 # Build types.hal (VehicleAudioVolumeLimitIndex)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAudioVolumeLimitIndex.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAudioVolumeLimitIndex.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1894,7 +1894,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAudioVolumeLimitIndex
+        android.hardware.automotive.vehicle@2.0::types.VehicleAudioVolumeLimitIndex
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1903,7 +1903,7 @@
 #
 # Build types.hal (VehicleAudioVolumeState)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleAudioVolumeState.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleAudioVolumeState.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1913,7 +1913,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleAudioVolumeState
+        android.hardware.automotive.vehicle@2.0::types.VehicleAudioVolumeState
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1922,7 +1922,7 @@
 #
 # Build types.hal (VehicleDisplay)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleDisplay.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleDisplay.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1932,7 +1932,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleDisplay
+        android.hardware.automotive.vehicle@2.0::types.VehicleDisplay
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1941,7 +1941,7 @@
 #
 # Build types.hal (VehicleDrivingStatus)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleDrivingStatus.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleDrivingStatus.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1951,7 +1951,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleDrivingStatus
+        android.hardware.automotive.vehicle@2.0::types.VehicleDrivingStatus
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1960,7 +1960,7 @@
 #
 # Build types.hal (VehicleGear)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleGear.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleGear.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1970,7 +1970,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleGear
+        android.hardware.automotive.vehicle@2.0::types.VehicleGear
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1979,7 +1979,7 @@
 #
 # Build types.hal (VehicleHvacFanDirection)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleHvacFanDirection.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleHvacFanDirection.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -1989,7 +1989,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleHvacFanDirection
+        android.hardware.automotive.vehicle@2.0::types.VehicleHvacFanDirection
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -1998,7 +1998,7 @@
 #
 # Build types.hal (VehicleHwKeyInputAction)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleHwKeyInputAction.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleHwKeyInputAction.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -2008,7 +2008,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleHwKeyInputAction
+        android.hardware.automotive.vehicle@2.0::types.VehicleHwKeyInputAction
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -2017,7 +2017,7 @@
 #
 # Build types.hal (VehicleIgnitionState)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleIgnitionState.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleIgnitionState.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -2027,7 +2027,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleIgnitionState
+        android.hardware.automotive.vehicle@2.0::types.VehicleIgnitionState
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -2036,7 +2036,7 @@
 #
 # Build types.hal (VehicleInstrumentClusterType)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleInstrumentClusterType.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleInstrumentClusterType.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -2046,7 +2046,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleInstrumentClusterType
+        android.hardware.automotive.vehicle@2.0::types.VehicleInstrumentClusterType
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -2055,7 +2055,7 @@
 #
 # Build types.hal (VehiclePropConfig)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehiclePropConfig.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehiclePropConfig.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -2065,7 +2065,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehiclePropConfig
+        android.hardware.automotive.vehicle@2.0::types.VehiclePropConfig
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -2074,7 +2074,7 @@
 #
 # Build types.hal (VehiclePropValue)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehiclePropValue.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehiclePropValue.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -2084,7 +2084,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehiclePropValue
+        android.hardware.automotive.vehicle@2.0::types.VehiclePropValue
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -2093,7 +2093,7 @@
 #
 # Build types.hal (VehicleProperty)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleProperty.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleProperty.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -2103,7 +2103,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleProperty
+        android.hardware.automotive.vehicle@2.0::types.VehicleProperty
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -2112,7 +2112,7 @@
 #
 # Build types.hal (VehiclePropertyAccess)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehiclePropertyAccess.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehiclePropertyAccess.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -2122,7 +2122,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehiclePropertyAccess
+        android.hardware.automotive.vehicle@2.0::types.VehiclePropertyAccess
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -2131,7 +2131,7 @@
 #
 # Build types.hal (VehiclePropertyChangeMode)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehiclePropertyChangeMode.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehiclePropertyChangeMode.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -2141,7 +2141,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehiclePropertyChangeMode
+        android.hardware.automotive.vehicle@2.0::types.VehiclePropertyChangeMode
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -2150,7 +2150,7 @@
 #
 # Build types.hal (VehiclePropertyGroup)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehiclePropertyGroup.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehiclePropertyGroup.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -2160,7 +2160,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehiclePropertyGroup
+        android.hardware.automotive.vehicle@2.0::types.VehiclePropertyGroup
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -2169,7 +2169,7 @@
 #
 # Build types.hal (VehiclePropertyOperation)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehiclePropertyOperation.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehiclePropertyOperation.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -2179,7 +2179,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehiclePropertyOperation
+        android.hardware.automotive.vehicle@2.0::types.VehiclePropertyOperation
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -2188,7 +2188,7 @@
 #
 # Build types.hal (VehiclePropertyType)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehiclePropertyType.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehiclePropertyType.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -2198,7 +2198,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehiclePropertyType
+        android.hardware.automotive.vehicle@2.0::types.VehiclePropertyType
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -2207,7 +2207,7 @@
 #
 # Build types.hal (VehicleRadioConstants)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleRadioConstants.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleRadioConstants.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -2217,7 +2217,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleRadioConstants
+        android.hardware.automotive.vehicle@2.0::types.VehicleRadioConstants
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -2226,7 +2226,7 @@
 #
 # Build types.hal (VehicleTurnSignal)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleTurnSignal.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleTurnSignal.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -2236,7 +2236,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleTurnSignal
+        android.hardware.automotive.vehicle@2.0::types.VehicleTurnSignal
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -2245,7 +2245,7 @@
 #
 # Build types.hal (VehicleUnit)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VehicleUnit.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VehicleUnit.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -2255,7 +2255,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VehicleUnit
+        android.hardware.automotive.vehicle@2.0::types.VehicleUnit
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -2264,7 +2264,7 @@
 #
 # Build types.hal (VmsMessageIntegerValuesIndex)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VmsMessageIntegerValuesIndex.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VmsMessageIntegerValuesIndex.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -2274,7 +2274,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VmsMessageIntegerValuesIndex
+        android.hardware.automotive.vehicle@2.0::types.VmsMessageIntegerValuesIndex
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -2283,7 +2283,7 @@
 #
 # Build types.hal (VmsMessageType)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/VmsMessageType.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/VmsMessageType.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -2293,7 +2293,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.VmsMessageType
+        android.hardware.automotive.vehicle@2.0::types.VmsMessageType
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -2302,7 +2302,7 @@
 #
 # Build types.hal (Wheel)
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/Wheel.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/Wheel.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -2312,7 +2312,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::types.Wheel
+        android.hardware.automotive.vehicle@2.0::types.Wheel
 
 $(GEN): $(LOCAL_PATH)/types.hal
 	$(transform-generated-source)
@@ -2321,7 +2321,7 @@
 #
 # Build IVehicle.hal
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/IVehicle.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/IVehicle.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IVehicle.hal
@@ -2335,7 +2335,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::IVehicle
+        android.hardware.automotive.vehicle@2.0::IVehicle
 
 $(GEN): $(LOCAL_PATH)/IVehicle.hal
 	$(transform-generated-source)
@@ -2344,7 +2344,7 @@
 #
 # Build IVehicleCallback.hal
 #
-GEN := $(intermediates)/android/hardware/vehicle/V2_0/IVehicleCallback.java
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/IVehicleCallback.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IVehicleCallback.hal
@@ -2356,7 +2356,7 @@
         -Ljava \
         -randroid.hardware:hardware/interfaces \
         -randroid.hidl:system/libhidl/transport \
-        android.hardware.vehicle@2.0::IVehicleCallback
+        android.hardware.automotive.vehicle@2.0::IVehicleCallback
 
 $(GEN): $(LOCAL_PATH)/IVehicleCallback.hal
 	$(transform-generated-source)
diff --git a/vehicle/2.0/IVehicle.hal b/automotive/vehicle/2.0/IVehicle.hal
similarity index 98%
rename from vehicle/2.0/IVehicle.hal
rename to automotive/vehicle/2.0/IVehicle.hal
index dc13089..5de416f 100644
--- a/vehicle/2.0/IVehicle.hal
+++ b/automotive/vehicle/2.0/IVehicle.hal
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.hardware.vehicle@2.0;
+package android.hardware.automotive.vehicle@2.0;
 
 import IVehicleCallback;
 
diff --git a/vehicle/2.0/IVehicleCallback.hal b/automotive/vehicle/2.0/IVehicleCallback.hal
similarity index 97%
rename from vehicle/2.0/IVehicleCallback.hal
rename to automotive/vehicle/2.0/IVehicleCallback.hal
index eb626ff38..167e5e1 100644
--- a/vehicle/2.0/IVehicleCallback.hal
+++ b/automotive/vehicle/2.0/IVehicleCallback.hal
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.hardware.vehicle@2.0;
+package android.hardware.automotive.vehicle@2.0;
 
 interface IVehicleCallback {
 
diff --git a/vehicle/2.0/default/Android.mk b/automotive/vehicle/2.0/default/Android.mk
similarity index 78%
rename from vehicle/2.0/default/Android.mk
rename to automotive/vehicle/2.0/default/Android.mk
index 9c75006..e822044 100644
--- a/vehicle/2.0/default/Android.mk
+++ b/automotive/vehicle/2.0/default/Android.mk
@@ -14,7 +14,7 @@
 
 LOCAL_PATH := $(call my-dir)
 
-module_prefix = android.hardware.vehicle@2.0
+module_prefix = android.hardware.automotive.vehicle@2.0
 
 ###############################################################################
 # Vehicle reference implementation lib
@@ -41,6 +41,28 @@
 include $(BUILD_STATIC_LIBRARY)
 
 ###############################################################################
+# Vehicle HAL Protobuf library
+###############################################################################
+include $(CLEAR_VARS)
+LOCAL_SRC_FILES := $(call all-proto-files-under, impl/proto)
+
+LOCAL_PROTOC_OPTIMIZE_TYPE := nano
+
+LOCAL_MODULE := $(module_prefix)-libproto-native
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_STRIP_MODULE := keep_symbols
+
+generated_sources_dir := $(call local-generated-sources-dir)
+LOCAL_EXPORT_C_INCLUDE_DIRS := \
+    $(generated_sources_dir)/proto/$(LOCAL_PATH)/impl/proto
+
+include $(BUILD_STATIC_LIBRARY)
+
+
+###############################################################################
 # Vehicle default VehicleHAL implementation
 ###############################################################################
 include $(CLEAR_VARS)
@@ -55,9 +77,13 @@
     libhidltransport \
     libhwbinder \
     liblog \
+    libprotobuf-cpp-lite \
     libutils \
     $(module_prefix) \
 
+LOCAL_STATIC_LIBRARIES := \
+    $(module_prefix)-libproto-native
+
 include $(BUILD_STATIC_LIBRARY)
 
 
@@ -114,7 +140,11 @@
     libhidltransport \
     libhwbinder \
     liblog \
+    libprotobuf-cpp-lite \
     libutils \
-    android.hardware.vehicle@2.0
+    $(module_prefix) \
+
+LOCAL_STATIC_LIBRARIES := \
+    $(module_prefix)-libproto-native
 
 include $(BUILD_EXECUTABLE)
diff --git a/vehicle/2.0/default/VehicleHal.h b/automotive/vehicle/2.0/default/VehicleHal.h
similarity index 91%
rename from vehicle/2.0/default/VehicleHal.h
rename to automotive/vehicle/2.0/default/VehicleHal.h
index c882def..76df5b8 100644
--- a/vehicle/2.0/default/VehicleHal.h
+++ b/automotive/vehicle/2.0/default/VehicleHal.h
@@ -14,15 +14,16 @@
  * limitations under the License.
  */
 
-#ifndef android_hardware_vehicle_V2_0_VehicleHal_H_
-#define android_hardware_vehicle_V2_0_VehicleHal_H_
+#ifndef android_hardware_automotive_vehicle_V2_0_VehicleHal_H
+#define android_hardware_automotive_vehicle_V2_0_VehicleHal_H
 
-#include <android/hardware/vehicle/2.0/IVehicle.h>
+#include <android/hardware/automotive/vehicle/2.0/IVehicle.h>
 #include "vehicle_hal_manager/VehicleObjectPool.h"
 
 
 namespace android {
 namespace hardware {
+namespace automotive {
 namespace vehicle {
 namespace V2_0 {
 
@@ -108,7 +109,8 @@
 
 }  // namespace V2_0
 }  // namespace vehicle
+}  // namespace automotive
 }  // namespace hardware
 }  // namespace android
 
-#endif //android_hardware_vehicle_V2_0_VehicleHal_H_
+#endif //android_hardware_automotive_vehicle_V2_0_VehicleHal_H_
diff --git a/vehicle/2.0/default/VehicleService.cpp b/automotive/vehicle/2.0/default/VehicleService.cpp
similarity index 91%
rename from vehicle/2.0/default/VehicleService.cpp
rename to automotive/vehicle/2.0/default/VehicleService.cpp
index 493df74..345dbcc 100644
--- a/vehicle/2.0/default/VehicleService.cpp
+++ b/automotive/vehicle/2.0/default/VehicleService.cpp
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#define LOG_TAG "android.hardware.vehicle@2.0-service"
+#define LOG_TAG "automotive.vehicle@2.0-service"
 #include <android/log.h>
 #include <hidl/HidlTransportSupport.h>
 
@@ -26,7 +26,7 @@
 
 using namespace android;
 using namespace android::hardware;
-using namespace android::hardware::vehicle::V2_0;
+using namespace android::hardware::automotive::vehicle::V2_0;
 
 int main(int /* argc */, char* /* argv */ []) {
     auto hal = std::make_unique<impl::DefaultVehicleHal>();
diff --git a/automotive/vehicle/2.0/default/android.hardware.automotive.vehicle@2.0-service.rc b/automotive/vehicle/2.0/default/android.hardware.automotive.vehicle@2.0-service.rc
new file mode 100644
index 0000000..1ee4d47
--- /dev/null
+++ b/automotive/vehicle/2.0/default/android.hardware.automotive.vehicle@2.0-service.rc
@@ -0,0 +1,4 @@
+service vehicle-hal-2.0 /system/bin/hw/android.hardware.automotive.vehicle@2.0-service
+    class hal
+    user vehicle_network
+    group system inet
diff --git a/vehicle/2.0/default/impl/DefaultConfig.h b/automotive/vehicle/2.0/default/impl/DefaultConfig.h
similarity index 94%
rename from vehicle/2.0/default/impl/DefaultConfig.h
rename to automotive/vehicle/2.0/default/impl/DefaultConfig.h
index c74ddc0..270bf8c 100644
--- a/vehicle/2.0/default/impl/DefaultConfig.h
+++ b/automotive/vehicle/2.0/default/impl/DefaultConfig.h
@@ -14,14 +14,15 @@
  * limitations under the License.
  */
 
-#ifndef android_hardware_vehicle_V2_0_impl_DefaultConfig_H_
-#define android_hardware_vehicle_V2_0_impl_DefaultConfig_H_
+#ifndef android_hardware_automotive_vehicle_V2_0_impl_DefaultConfig_H_
+#define android_hardware_automotive_vehicle_V2_0_impl_DefaultConfig_H_
 
-#include <android/hardware/vehicle/2.0/IVehicle.h>
+#include <android/hardware/automotive/vehicle/2.0/IVehicle.h>
 #include <vehicle_hal_manager/VehicleUtils.h>
 
 namespace android {
 namespace hardware {
+namespace automotive {
 namespace vehicle {
 namespace V2_0 {
 
@@ -180,7 +181,8 @@
 
 }  // namespace V2_0
 }  // namespace vehicle
+}  // namespace automotive
 }  // namespace hardware
 }  // namespace android
 
-#endif // android_hardware_vehicle_V2_0_impl_DefaultConfig_H_
+#endif // android_hardware_automotive_vehicle_V2_0_impl_DefaultConfig_H_
diff --git a/automotive/vehicle/2.0/default/impl/DefaultVehicleHal.cpp b/automotive/vehicle/2.0/default/impl/DefaultVehicleHal.cpp
new file mode 100644
index 0000000..88717a9
--- /dev/null
+++ b/automotive/vehicle/2.0/default/impl/DefaultVehicleHal.cpp
@@ -0,0 +1,746 @@
+/*
+ * 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.
+ */
+
+#define LOG_TAG "DefaultVehicleHal"
+
+#include <algorithm>
+#include <android/log.h>
+#include <netinet/in.h>
+#include <sys/socket.h>
+
+#include "DefaultVehicleHal.h"
+#include "VehicleHalProto.pb.h"
+
+#define DEBUG_SOCKET    (33452)
+
+namespace android {
+namespace hardware {
+namespace automotive {
+namespace vehicle {
+namespace V2_0 {
+
+namespace impl {
+
+void DefaultVehicleHal::doGetConfig(emulator::EmulatorMessage& rxMsg,
+                                    emulator::EmulatorMessage& respMsg) {
+    std::vector<VehiclePropConfig> configs = listProperties();
+    emulator::VehiclePropGet getProp = rxMsg.prop(0);
+
+    respMsg.set_msg_type(emulator::GET_CONFIG_RESP);
+    respMsg.set_status(emulator::ERROR_INVALID_PROPERTY);
+
+    for (auto& config : configs) {
+        // Find the config we are looking for
+        if (config.prop == getProp.prop()) {
+            emulator::VehiclePropConfig* protoCfg = respMsg.add_config();
+            populateProtoVehicleConfig(protoCfg, config);
+            respMsg.set_status(emulator::RESULT_OK);
+            break;
+        }
+    }
+}
+
+void DefaultVehicleHal::doGetConfigAll(emulator::EmulatorMessage& /* rxMsg */,
+                                       emulator::EmulatorMessage& respMsg) {
+    std::vector<VehiclePropConfig> configs = listProperties();
+
+    respMsg.set_msg_type(emulator::GET_CONFIG_ALL_RESP);
+    respMsg.set_status(emulator::RESULT_OK);
+
+    for (auto& config : configs) {
+        emulator::VehiclePropConfig* protoCfg = respMsg.add_config();
+        populateProtoVehicleConfig(protoCfg, config);
+    }
+}
+
+void DefaultVehicleHal::doGetProperty(emulator::EmulatorMessage& rxMsg,
+                                      emulator::EmulatorMessage& respMsg) {
+    int32_t areaId = 0;
+    emulator::VehiclePropGet getProp = rxMsg.prop(0);
+    int32_t propId = getProp.prop();
+    emulator::Status status = emulator::ERROR_INVALID_PROPERTY;
+    VehiclePropValue* val;
+
+    respMsg.set_msg_type(emulator::GET_PROPERTY_RESP);
+
+    if (getProp.has_area_id()) {
+        areaId = getProp.area_id();
+    }
+
+    {
+        std::lock_guard<std::mutex> lock(mPropsMutex);
+
+        val = getVehiclePropValueLocked(propId, areaId);
+        if (val != nullptr) {
+            emulator::VehiclePropValue* protoVal = respMsg.add_value();
+            populateProtoVehiclePropValue(protoVal, val);
+            status = emulator::RESULT_OK;
+        }
+    }
+
+    respMsg.set_status(status);
+}
+
+void DefaultVehicleHal::doGetPropertyAll(emulator::EmulatorMessage& /* rxMsg */,
+                                         emulator::EmulatorMessage& respMsg) {
+    respMsg.set_msg_type(emulator::GET_PROPERTY_ALL_RESP);
+    respMsg.set_status(emulator::RESULT_OK);
+
+    {
+        std::lock_guard<std::mutex> lock(mPropsMutex);
+
+        for (auto& propVal : mProps) {
+            emulator::VehiclePropValue* protoVal = respMsg.add_value();
+            populateProtoVehiclePropValue(protoVal, propVal.get());
+        }
+    }
+}
+
+void DefaultVehicleHal::doSetProperty(emulator::EmulatorMessage& rxMsg,
+                                      emulator::EmulatorMessage& respMsg) {
+    emulator::VehiclePropValue protoVal = rxMsg.value(0);
+    VehiclePropValue val;
+
+    respMsg.set_msg_type(emulator::SET_PROPERTY_RESP);
+
+    val.prop = protoVal.prop();
+    val.areaId = protoVal.area_id();
+
+    // Copy value data if it is set.  This automatically handles complex data types if needed.
+    if (protoVal.has_string_value()) {
+        val.value.stringValue = protoVal.string_value().c_str();
+    }
+
+    if (protoVal.has_bytes_value()) {
+        std::vector<uint8_t> tmp(protoVal.bytes_value().begin(), protoVal.bytes_value().end());
+        val.value.bytes = tmp;
+    }
+
+    if (protoVal.int32_values_size() > 0) {
+        std::vector<int32_t> int32Values = std::vector<int32_t>(protoVal.int32_values_size());
+        for (int i=0; i<protoVal.int32_values_size(); i++) {
+            int32Values[i] = protoVal.int32_values(i);
+        }
+        val.value.int32Values = int32Values;
+    }
+
+    if (protoVal.int64_values_size() > 0) {
+        std::vector<int64_t> int64Values = std::vector<int64_t>(protoVal.int64_values_size());
+        for (int i=0; i<protoVal.int64_values_size(); i++) {
+            int64Values[i] = protoVal.int64_values(i);
+        }
+        val.value.int64Values = int64Values;
+    }
+
+    if (protoVal.float_values_size() > 0) {
+        std::vector<float> floatValues = std::vector<float>(protoVal.float_values_size());
+        for (int i=0; i<protoVal.float_values_size(); i++) {
+            floatValues[i] = protoVal.float_values(i);
+        }
+        val.value.floatValues = floatValues;
+    }
+
+    if (updateProperty(val) == StatusCode::OK) {
+        // Send property up to VehicleHalManager via callback
+        auto& pool = *getValuePool();
+        VehiclePropValuePtr v = pool.obtain(val);
+
+        doHalEvent(std::move(v));
+        respMsg.set_status(emulator::RESULT_OK);
+    } else {
+        respMsg.set_status(emulator::ERROR_INVALID_PROPERTY);
+    }
+}
+
+// This function should only be called while mPropsMutex is locked.
+VehiclePropValue* DefaultVehicleHal::getVehiclePropValueLocked(int32_t propId, int32_t areaId) {
+    if (getPropArea(propId) == VehicleArea::GLOBAL) {
+        // In VehicleHal, global properties have areaId = -1.  We use 0.
+        areaId = 0;
+    }
+
+    for (auto& prop : mProps) {
+        if ((prop->prop == propId) && (prop->areaId == areaId)) {
+            return prop.get();
+        }
+    }
+    ALOGW("%s: Property not found:  propId = 0x%x, areaId = 0x%x", __FUNCTION__, propId, areaId);
+    return nullptr;
+}
+
+void DefaultVehicleHal::initObd2LiveFrame(VehiclePropConfig& obd2LiveFramePropConfig) {
+    mObd2SensorStore.reset(new Obd2SensorStore(
+        obd2LiveFramePropConfig.configArray[0],
+        obd2LiveFramePropConfig.configArray[1]));
+    // precalculate OBD2 sensor values
+    mObd2SensorStore->setIntegerSensor(
+        Obd2IntegerSensorIndex::FUEL_SYSTEM_STATUS,
+        toInt(FuelSystemStatus::CLOSED_LOOP));
+    mObd2SensorStore->setIntegerSensor(
+        Obd2IntegerSensorIndex::MALFUNCTION_INDICATOR_LIGHT_ON, 0);
+    mObd2SensorStore->setIntegerSensor(
+        Obd2IntegerSensorIndex::IGNITION_MONITORS_SUPPORTED,
+        toInt(IgnitionMonitorKind::SPARK));
+    mObd2SensorStore->setIntegerSensor(Obd2IntegerSensorIndex::IGNITION_SPECIFIC_MONITORS,
+        CommonIgnitionMonitors::COMPONENTS_AVAILABLE |
+        CommonIgnitionMonitors::MISFIRE_AVAILABLE |
+        SparkIgnitionMonitors::AC_REFRIGERANT_AVAILABLE |
+        SparkIgnitionMonitors::EVAPORATIVE_SYSTEM_AVAILABLE);
+    mObd2SensorStore->setIntegerSensor(
+        Obd2IntegerSensorIndex::INTAKE_AIR_TEMPERATURE, 35);
+    mObd2SensorStore->setIntegerSensor(
+        Obd2IntegerSensorIndex::COMMANDED_SECONDARY_AIR_STATUS,
+        toInt(SecondaryAirStatus::FROM_OUTSIDE_OR_OFF));
+    mObd2SensorStore->setIntegerSensor(
+        Obd2IntegerSensorIndex::NUM_OXYGEN_SENSORS_PRESENT, 1);
+    mObd2SensorStore->setIntegerSensor(
+        Obd2IntegerSensorIndex::RUNTIME_SINCE_ENGINE_START, 500);
+    mObd2SensorStore->setIntegerSensor(
+        Obd2IntegerSensorIndex::DISTANCE_TRAVELED_WITH_MALFUNCTION_INDICATOR_LIGHT_ON, 0);
+    mObd2SensorStore->setIntegerSensor(
+        Obd2IntegerSensorIndex::WARMUPS_SINCE_CODES_CLEARED, 51);
+    mObd2SensorStore->setIntegerSensor(
+        Obd2IntegerSensorIndex::DISTANCE_TRAVELED_SINCE_CODES_CLEARED, 365);
+    mObd2SensorStore->setIntegerSensor(
+        Obd2IntegerSensorIndex::ABSOLUTE_BAROMETRIC_PRESSURE, 30);
+    mObd2SensorStore->setIntegerSensor(
+        Obd2IntegerSensorIndex::CONTROL_MODULE_VOLTAGE, 12);
+    mObd2SensorStore->setIntegerSensor(
+        Obd2IntegerSensorIndex::AMBIENT_AIR_TEMPERATURE, 18);
+    mObd2SensorStore->setIntegerSensor(
+        Obd2IntegerSensorIndex::MAX_FUEL_AIR_EQUIVALENCE_RATIO, 1);
+    mObd2SensorStore->setIntegerSensor(
+        Obd2IntegerSensorIndex::FUEL_TYPE, toInt(FuelType::GASOLINE));
+    mObd2SensorStore->setFloatSensor(
+        Obd2FloatSensorIndex::CALCULATED_ENGINE_LOAD, 0.153);
+    mObd2SensorStore->setFloatSensor(
+        Obd2FloatSensorIndex::SHORT_TERM_FUEL_TRIM_BANK1, -0.16);
+    mObd2SensorStore->setFloatSensor(
+        Obd2FloatSensorIndex::LONG_TERM_FUEL_TRIM_BANK1, -0.16);
+    mObd2SensorStore->setFloatSensor(
+        Obd2FloatSensorIndex::SHORT_TERM_FUEL_TRIM_BANK2, -0.16);
+    mObd2SensorStore->setFloatSensor(
+        Obd2FloatSensorIndex::LONG_TERM_FUEL_TRIM_BANK2, -0.16);
+    mObd2SensorStore->setFloatSensor(
+        Obd2FloatSensorIndex::INTAKE_MANIFOLD_ABSOLUTE_PRESSURE, 7.5);
+    mObd2SensorStore->setFloatSensor(
+        Obd2FloatSensorIndex::ENGINE_RPM, 1250.);
+    mObd2SensorStore->setFloatSensor(
+        Obd2FloatSensorIndex::VEHICLE_SPEED, 40.);
+    mObd2SensorStore->setFloatSensor(
+        Obd2FloatSensorIndex::TIMING_ADVANCE, 2.5);
+    mObd2SensorStore->setFloatSensor(
+        Obd2FloatSensorIndex::THROTTLE_POSITION, 19.75);
+    mObd2SensorStore->setFloatSensor(
+        Obd2FloatSensorIndex::OXYGEN_SENSOR1_VOLTAGE, 0.265);
+    mObd2SensorStore->setFloatSensor(
+        Obd2FloatSensorIndex::FUEL_TANK_LEVEL_INPUT, 0.824);
+    mObd2SensorStore->setFloatSensor(
+        Obd2FloatSensorIndex::EVAPORATION_SYSTEM_VAPOR_PRESSURE, -0.373);
+    mObd2SensorStore->setFloatSensor(
+        Obd2FloatSensorIndex::CATALYST_TEMPERATURE_BANK1_SENSOR1, 190.);
+    mObd2SensorStore->setFloatSensor(
+        Obd2FloatSensorIndex::RELATIVE_THROTTLE_POSITION, 3.);
+    mObd2SensorStore->setFloatSensor(
+        Obd2FloatSensorIndex::ABSOLUTE_THROTTLE_POSITION_B, 0.306);
+    mObd2SensorStore->setFloatSensor(
+        Obd2FloatSensorIndex::ACCELERATOR_PEDAL_POSITION_D, 0.188);
+    mObd2SensorStore->setFloatSensor(
+        Obd2FloatSensorIndex::ACCELERATOR_PEDAL_POSITION_E, 0.094);
+    mObd2SensorStore->setFloatSensor(
+        Obd2FloatSensorIndex::COMMANDED_THROTTLE_ACTUATOR, 0.024);
+}
+
+void DefaultVehicleHal::parseRxProtoBuf(std::vector<uint8_t>& msg) {
+    emulator::EmulatorMessage rxMsg;
+    emulator::EmulatorMessage respMsg;
+    std::string str(reinterpret_cast<const char*>(msg.data()), msg.size());
+
+    rxMsg.ParseFromString(str);
+
+    switch (rxMsg.msg_type()) {
+    case emulator::GET_CONFIG_CMD:
+        doGetConfig(rxMsg, respMsg);
+        break;
+    case emulator::GET_CONFIG_ALL_CMD:
+        doGetConfigAll(rxMsg, respMsg);
+        break;
+    case emulator::GET_PROPERTY_CMD:
+        doGetProperty(rxMsg, respMsg);
+        break;
+    case emulator::GET_PROPERTY_ALL_CMD:
+        doGetPropertyAll(rxMsg, respMsg);
+        break;
+    case emulator::SET_PROPERTY_CMD:
+        doSetProperty(rxMsg, respMsg);
+        break;
+    default:
+        ALOGW("%s: Unknown message received, type = %d", __FUNCTION__, rxMsg.msg_type());
+        respMsg.set_status(emulator::ERROR_UNIMPLEMENTED_CMD);
+        break;
+    }
+
+    // Send the reply
+    txMsg(respMsg);
+}
+
+// Copies internal VehiclePropConfig data structure to protobuf VehiclePropConfig
+void DefaultVehicleHal::populateProtoVehicleConfig(emulator::VehiclePropConfig* protoCfg,
+                                                   const VehiclePropConfig& cfg) {
+    protoCfg->set_prop(cfg.prop);
+    protoCfg->set_access(toInt(cfg.access));
+    protoCfg->set_change_mode(toInt(cfg.changeMode));
+    protoCfg->set_value_type(toInt(getPropType(cfg.prop)));
+
+    if (!isGlobalProp(cfg.prop)) {
+        protoCfg->set_supported_areas(cfg.supportedAreas);
+    }
+
+    for (auto& configElement : cfg.configArray) {
+        protoCfg->add_config_array(configElement);
+    }
+
+    if (cfg.configString.size() > 0) {
+        protoCfg->set_config_string(cfg.configString.c_str(), cfg.configString.size());
+    }
+
+    // Populate the min/max values based on property type
+    switch (getPropType(cfg.prop)) {
+    case VehiclePropertyType::STRING:
+    case VehiclePropertyType::BOOLEAN:
+    case VehiclePropertyType::INT32_VEC:
+    case VehiclePropertyType::FLOAT_VEC:
+    case VehiclePropertyType::BYTES:
+    case VehiclePropertyType::COMPLEX:
+        // Do nothing.  These types don't have min/max values
+        break;
+    case VehiclePropertyType::INT64:
+        if (cfg.areaConfigs.size() > 0) {
+            emulator::VehicleAreaConfig* aCfg = protoCfg->add_area_configs();
+            aCfg->set_min_int64_value(cfg.areaConfigs[0].minInt64Value);
+            aCfg->set_max_int64_value(cfg.areaConfigs[0].maxInt64Value);
+        }
+        break;
+    case VehiclePropertyType::FLOAT:
+        if (cfg.areaConfigs.size() > 0) {
+            emulator::VehicleAreaConfig* aCfg = protoCfg->add_area_configs();
+            aCfg->set_min_float_value(cfg.areaConfigs[0].minFloatValue);
+            aCfg->set_max_float_value(cfg.areaConfigs[0].maxFloatValue);
+        }
+        break;
+    case VehiclePropertyType::INT32:
+        if (cfg.areaConfigs.size() > 0) {
+            emulator::VehicleAreaConfig* aCfg = protoCfg->add_area_configs();
+            aCfg->set_min_int32_value(cfg.areaConfigs[0].minInt32Value);
+            aCfg->set_max_int32_value(cfg.areaConfigs[0].maxInt32Value);
+        }
+        break;
+    default:
+        ALOGW("%s: Unknown property type:  0x%x", __FUNCTION__, toInt(getPropType(cfg.prop)));
+        break;
+    }
+
+    protoCfg->set_min_sample_rate(cfg.minSampleRate);
+    protoCfg->set_max_sample_rate(cfg.maxSampleRate);
+}
+
+// Copies internal VehiclePropValue data structure to protobuf VehiclePropValue
+void DefaultVehicleHal::populateProtoVehiclePropValue(emulator::VehiclePropValue* protoVal,
+                                                      const VehiclePropValue* val) {
+    protoVal->set_prop(val->prop);
+    protoVal->set_value_type(toInt(getPropType(val->prop)));
+    protoVal->set_timestamp(val->timestamp);
+    protoVal->set_area_id(val->areaId);
+
+    // Copy value data if it is set.
+    //  - for bytes and strings, this is indicated by size > 0
+    //  - for int32, int64, and float, copy the values if vectors have data
+    if (val->value.stringValue.size() > 0) {
+        protoVal->set_string_value(val->value.stringValue.c_str(), val->value.stringValue.size());
+    }
+
+    if (val->value.bytes.size() > 0) {
+        protoVal->set_bytes_value(val->value.bytes.data(), val->value.bytes.size());
+    }
+
+    for (auto& int32Value : val->value.int32Values) {
+        protoVal->add_int32_values(int32Value);
+    }
+
+    for (auto& int64Value : val->value.int64Values) {
+        protoVal->add_int64_values(int64Value);
+    }
+
+    for (auto& floatValue : val->value.floatValues) {
+        protoVal->add_float_values(floatValue);
+    }
+}
+
+void DefaultVehicleHal::rxMsg(void) {
+    int  numBytes = 0;
+    int32_t msgSize;
+    do {
+        // This is a variable length message.
+        // Read the number of bytes to rx over the socket
+        numBytes = read(mCurSocket, &msgSize, sizeof(msgSize));
+
+        if (numBytes != sizeof(msgSize)) {
+            // This happens when connection is closed
+            ALOGD("%s: numBytes=%d, expected=4", __FUNCTION__, numBytes);
+            break;
+        }
+
+        std::vector<uint8_t> msg = std::vector<uint8_t>(msgSize);
+
+        numBytes = read(mCurSocket, msg.data(), msgSize);
+
+        if ((numBytes == msgSize) && (msgSize > 0)) {
+            // Received a message.
+            parseRxProtoBuf(msg);
+        } else {
+            // This happens when connection is closed
+            ALOGD("%s: numBytes=%d, msgSize=%d", __FUNCTION__, numBytes, msgSize);
+            break;
+        }
+    } while (mExit == 0);
+}
+
+void DefaultVehicleHal::rxThread(void) {
+    // Initialize the socket
+    {
+        int retVal;
+        struct sockaddr_in servAddr;
+
+        mSocket = socket(AF_INET, SOCK_STREAM, 0);
+        if (mSocket < 0) {
+            ALOGE("%s: socket() failed, mSocket=%d, errno=%d", __FUNCTION__, mSocket, errno);
+            mSocket = -1;
+            return;
+        }
+
+        bzero(&servAddr, sizeof(servAddr));
+        servAddr.sin_family = AF_INET;
+        servAddr.sin_addr.s_addr = INADDR_ANY;
+        servAddr.sin_port = htons(DEBUG_SOCKET);
+
+        retVal = bind(mSocket, reinterpret_cast<struct sockaddr*>(&servAddr), sizeof(servAddr));
+        if(retVal < 0) {
+            ALOGE("%s: Error on binding: retVal=%d, errno=%d", __FUNCTION__, retVal, errno);
+            close(mSocket);
+            mSocket = -1;
+            return;
+        }
+
+        listen(mSocket, 1);
+
+        // Set the socket to be non-blocking so we can poll it continouously
+        fcntl(mSocket, F_SETFL, O_NONBLOCK);
+    }
+
+    while (mExit == 0) {
+        struct sockaddr_in cliAddr;
+        socklen_t cliLen = sizeof(cliAddr);
+        int cSocket = accept(mSocket, reinterpret_cast<struct sockaddr*>(&cliAddr), &cliLen);
+
+        if (cSocket >= 0) {
+            {
+                std::lock_guard<std::mutex> lock(mTxMutex);
+                mCurSocket = cSocket;
+            }
+            ALOGD("%s: Incoming connection received on socket %d", __FUNCTION__, cSocket);
+            rxMsg();
+            ALOGD("%s: Connection terminated on socket %d", __FUNCTION__, cSocket);
+            {
+                std::lock_guard<std::mutex> lock(mTxMutex);
+                mCurSocket = -1;
+            }
+        }
+
+        // TODO:  Use a blocking socket?
+        // Check every 100ms for a new socket connection
+        std::this_thread::sleep_for(std::chrono::milliseconds(100));
+    }
+
+    // Shutdown the socket
+    close(mSocket);
+    mSocket = -1;
+}
+
+// This function sets the default value of a property if we are interested in setting it.
+// TODO:  Co-locate the default values with the configuration structure, to make it easier to
+//          add new properties and their defaults.
+void DefaultVehicleHal::setDefaultValue(VehiclePropValue* prop) {
+    switch (prop->prop) {
+    case toInt(VehicleProperty::INFO_MAKE):
+        prop->value.stringValue = "Default Car";
+        break;
+    case toInt(VehicleProperty::HVAC_POWER_ON):
+        prop->value.int32Values[0] = 1;
+        break;
+    case toInt(VehicleProperty::HVAC_DEFROSTER):
+        prop->value.int32Values[0] = 0;
+        break;
+    case toInt(VehicleProperty::HVAC_RECIRC_ON):
+        prop->value.int32Values[0] = 1;
+        break;
+    case toInt(VehicleProperty::HVAC_AC_ON):
+        prop->value.int32Values[0] = 1;
+        break;
+    case toInt(VehicleProperty::HVAC_AUTO_ON):
+        prop->value.int32Values[0] = 1;
+        break;
+    case toInt(VehicleProperty::HVAC_FAN_SPEED):
+        prop->value.int32Values[0] = 3;
+        break;
+    case toInt(VehicleProperty::HVAC_FAN_DIRECTION):
+        prop->value.int32Values[0] = toInt(VehicleHvacFanDirection::FACE);
+        break;
+    case toInt(VehicleProperty::HVAC_TEMPERATURE_SET):
+        prop->value.floatValues[0] = 16;
+        break;
+    case toInt(VehicleProperty::NIGHT_MODE):
+        prop->value.int32Values[0] = 0;
+        break;
+    case toInt(VehicleProperty::DRIVING_STATUS):
+        prop->value.int32Values[0] = toInt(VehicleDrivingStatus::UNRESTRICTED);
+        break;
+    case toInt(VehicleProperty::GEAR_SELECTION):
+        prop->value.int32Values[0] = toInt(VehicleGear::GEAR_PARK);
+        break;
+    case toInt(VehicleProperty::INFO_FUEL_CAPACITY):
+        prop->value.floatValues[0] = 0.75f;
+        break;
+    case toInt(VehicleProperty::DISPLAY_BRIGHTNESS):
+        prop->value.int32Values[0] = 7;
+        break;
+    case toInt(VehicleProperty::IGNITION_STATE):
+        prop->value.int32Values[0] = toInt(VehicleIgnitionState::ON);
+        break;
+    case toInt(VehicleProperty::OBD2_LIVE_FRAME):
+        // OBD2 is handled separately
+        break;
+    case toInt(VehicleProperty::OBD2_FREEZE_FRAME):
+        // OBD2 is handled separately
+        break;
+    default:
+        ALOGW("%s: propId=0x%x not found", __FUNCTION__, prop->prop);
+        break;
+    }
+}
+
+// Transmit a reply back to the emulator
+void DefaultVehicleHal::txMsg(emulator::EmulatorMessage& txMsg) {
+    std::string msgString;
+
+    if (txMsg.SerializeToString(&msgString)) {
+        int32_t msgLen = msgString.length();
+        int retVal = 0;
+
+        // TODO:  Prepend the message length to the string without a copy
+        msgString.insert(0, reinterpret_cast<char*>(&msgLen), 4);
+
+        // Send the message
+        {
+            std::lock_guard<std::mutex> lock(mTxMutex);
+            if (mCurSocket != -1) {
+                retVal = write(mCurSocket, msgString.data(), msgString.size());
+            }
+        }
+
+        if (retVal < 0) {
+            ALOGE("%s: Failed to tx message: retval=%d, errno=%d", __FUNCTION__, retVal, errno);
+        }
+    } else {
+        ALOGE("%s: SerializeToString failed!", __FUNCTION__);
+    }
+}
+
+// Updates the property value held in the HAL
+StatusCode DefaultVehicleHal::updateProperty(const VehiclePropValue& propValue) {
+    auto propId = propValue.prop;
+    auto areaId = propValue.areaId;
+    StatusCode status = StatusCode::INVALID_ARG;
+
+    {
+        std::lock_guard<std::mutex> lock(mPropsMutex);
+
+        VehiclePropValue* internalPropValue = getVehiclePropValueLocked(propId, areaId);
+        if (internalPropValue != nullptr) {
+            internalPropValue->value = propValue.value;
+            internalPropValue->timestamp = elapsedRealtimeNano();
+            status = StatusCode::OK;
+        }
+    }
+    return status;
+}
+
+VehicleHal::VehiclePropValuePtr DefaultVehicleHal::get(
+        const VehiclePropValue& requestedPropValue, StatusCode* outStatus) {
+    auto areaId = requestedPropValue.areaId;
+    auto& pool = *getValuePool();
+    auto propId = requestedPropValue.prop;
+    StatusCode status;
+    VehiclePropValuePtr v = nullptr;
+
+    switch (propId) {
+    case toInt(VehicleProperty::OBD2_LIVE_FRAME):
+        v = pool.obtainComplex();
+        status = fillObd2LiveFrame(&v);
+        break;
+    case toInt(VehicleProperty::OBD2_FREEZE_FRAME):
+        v = pool.obtainComplex();
+        status = fillObd2FreezeFrame(&v);
+        break;
+    default:
+        {
+            std::lock_guard<std::mutex> lock(mPropsMutex);
+
+            VehiclePropValue *internalPropValue = getVehiclePropValueLocked(propId, areaId);
+            if (internalPropValue != nullptr) {
+                v = pool.obtain(*internalPropValue);
+            }
+        }
+
+        if (v != nullptr) {
+            status = StatusCode::OK;
+        } else {
+            status = StatusCode::INVALID_ARG;
+        }
+        break;
+    }
+
+    *outStatus = status;
+    return v;
+}
+
+StatusCode DefaultVehicleHal::set(const VehiclePropValue& propValue) {
+    StatusCode status = updateProperty(propValue);
+
+    if (status == StatusCode::OK) {
+        // Send property update to emulator
+        emulator::EmulatorMessage msg;
+        emulator::VehiclePropValue *val = msg.add_value();
+        populateProtoVehiclePropValue(val, &propValue);
+        msg.set_status(emulator::RESULT_OK);
+        msg.set_msg_type(emulator::SET_PROPERTY_ASYNC);
+        txMsg(msg);
+    }
+
+    return status;
+}
+
+// Parse supported properties list and generate vector of property values to hold current values.
+void DefaultVehicleHal::onCreate() {
+    // Initialize member variables
+    mCurSocket = -1;
+    mExit = 0;
+    mSocket = -1;
+
+    // Get the list of configurations supported by this HAL
+    std::vector<VehiclePropConfig> configs = listProperties();
+
+    for (auto& cfg : configs) {
+        VehiclePropertyType propType = getPropType(cfg.prop);
+        int32_t supportedAreas = cfg.supportedAreas;
+        int32_t vecSize;
+
+        // Set the vector size based on property type
+        switch (propType) {
+        case VehiclePropertyType::BOOLEAN:
+        case VehiclePropertyType::INT32:
+        case VehiclePropertyType::INT64:
+        case VehiclePropertyType::FLOAT:
+            vecSize = 1;
+            break;
+        case VehiclePropertyType::INT32_VEC:
+        case VehiclePropertyType::FLOAT_VEC:
+        case VehiclePropertyType::BYTES:
+            // TODO:  Add proper support for these types
+            vecSize = 1;
+            break;
+        case VehiclePropertyType::STRING:
+            // Require individual handling
+            vecSize = 0;
+            break;
+        case VehiclePropertyType::COMPLEX:
+            switch (cfg.prop) {
+            case toInt(VehicleProperty::OBD2_LIVE_FRAME):
+                initObd2LiveFrame(cfg);
+                break;
+            default:
+                // Need to handle each complex property separately
+                break;
+            }
+            continue;
+            break;
+        case VehiclePropertyType::MASK:
+        default:
+            ALOGW("%s: propType=0x%x not found", __FUNCTION__, propType);
+            vecSize = 0;
+            break;
+        }
+
+        //  A global property will have supportedAreas = 0
+        if (getPropArea(cfg.prop) == VehicleArea::GLOBAL) {
+            supportedAreas = 0;
+        }
+
+        // This loop is a do-while so it executes at least once to handle global properties
+        do {
+            int32_t curArea = supportedAreas;
+
+            // Clear the right-most bit of supportedAreas
+            supportedAreas &= supportedAreas - 1;
+
+            // Set curArea to the previously cleared bit
+            curArea ^= supportedAreas;
+
+            // Create a separate instance for each individual zone
+            std::unique_ptr<VehiclePropValue> prop = createVehiclePropValue(propType, vecSize);
+            prop->areaId = curArea;
+            prop->prop = cfg.prop;
+            setDefaultValue(prop.get());
+            mProps.push_back(std::move(prop));
+        } while (supportedAreas != 0);
+    }
+
+    // Start rx thread
+    mThread = std::thread(&DefaultVehicleHal::rxThread, this);
+}
+
+StatusCode DefaultVehicleHal::fillObd2LiveFrame(VehiclePropValuePtr* v) {
+    (*v)->value.int32Values = mObd2SensorStore->getIntegerSensors();
+    (*v)->value.floatValues = mObd2SensorStore->getFloatSensors();
+    (*v)->value.bytes = mObd2SensorStore->getSensorsBitmask();
+    return StatusCode::OK;
+}
+
+StatusCode DefaultVehicleHal::fillObd2FreezeFrame(VehiclePropValuePtr* v) {
+    (*v)->value.int32Values = mObd2SensorStore->getIntegerSensors();
+    (*v)->value.floatValues = mObd2SensorStore->getFloatSensors();
+    (*v)->value.bytes = mObd2SensorStore->getSensorsBitmask();
+    (*v)->value.stringValue = "P0010";
+    return StatusCode::OK;
+}
+
+
+}  // impl
+
+}  // namespace V2_0
+}  // namespace vehicle
+}  // namespace automotive
+}  // namespace hardware
+}  // namespace android
diff --git a/automotive/vehicle/2.0/default/impl/DefaultVehicleHal.h b/automotive/vehicle/2.0/default/impl/DefaultVehicleHal.h
new file mode 100644
index 0000000..edfc224
--- /dev/null
+++ b/automotive/vehicle/2.0/default/impl/DefaultVehicleHal.h
@@ -0,0 +1,122 @@
+/*
+ * 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.
+ */
+
+#ifndef android_hardware_automotive_vehicle_V2_0_impl_DefaultVehicleHal_H_
+#define android_hardware_automotive_vehicle_V2_0_impl_DefaultVehicleHal_H_
+
+#include <memory>
+
+#include <VehicleHal.h>
+#include <impl/DefaultConfig.h>
+#include <sys/socket.h>
+#include <thread>
+#include <utils/SystemClock.h>
+#include <vehicle_hal_manager/Obd2SensorStore.h>
+#include "VehicleHalProto.pb.h"
+
+
+namespace android {
+namespace hardware {
+namespace automotive {
+namespace vehicle {
+namespace V2_0 {
+
+namespace impl {
+
+class DefaultVehicleHal : public VehicleHal {
+public:
+    DefaultVehicleHal() : mThread() {}
+    ~DefaultVehicleHal() override {
+        // Notify thread to finish and wait for it to terminate
+        mExit = 1;
+
+        // Close emulator socket if it is open
+        {
+            std::lock_guard<std::mutex> lock(mTxMutex);
+            if (mCurSocket != -1) {
+                close(mCurSocket);
+                mCurSocket = -1;
+            }
+        }
+
+        mThread.join();
+    }
+
+    std::vector<VehiclePropConfig> listProperties() override {
+        return std::vector<VehiclePropConfig>(std::begin(kVehicleProperties),
+                                              std::end(kVehicleProperties));
+    }
+
+    VehiclePropValuePtr get(const VehiclePropValue& requestedPropValue,
+                            StatusCode* outStatus) override;
+
+    void onCreate() override;
+
+    StatusCode set(const VehiclePropValue& propValue) override;
+
+    StatusCode subscribe(int32_t property, int32_t areas, float sampleRate) {
+        ALOGD("%s: not implemented: prop=0x%x, areas=0x%x, rate=%f", __FUNCTION__, property,
+              areas, sampleRate);
+        return StatusCode::OK;
+    }
+
+    StatusCode unsubscribe(int32_t property) {
+        ALOGD("%s: not implemented: prop=0x%x", __FUNCTION__, property);
+        return StatusCode::OK;
+    }
+
+private:
+    void doGetConfig(emulator::EmulatorMessage& rxMsg, emulator::EmulatorMessage& respMsg);
+    void doGetConfigAll(emulator::EmulatorMessage& rxMsg, emulator::EmulatorMessage& respMsg);
+    void doGetProperty(emulator::EmulatorMessage& rxMsg, emulator::EmulatorMessage& respMsg);
+    void doGetPropertyAll(emulator::EmulatorMessage& rxMsg, emulator::EmulatorMessage& respMsg);
+    void doSetProperty(emulator::EmulatorMessage& rxMsg, emulator::EmulatorMessage& respMsg);
+    VehiclePropValue* getVehiclePropValueLocked(int32_t propId, int32_t areaId);
+    void initObd2LiveFrame(VehiclePropConfig& obd2LiveFramePropConfig);
+    void parseRxProtoBuf(std::vector<uint8_t>& msg);
+    void populateProtoVehicleConfig(emulator::VehiclePropConfig* protoCfg,
+                                    const VehiclePropConfig& cfg);
+    void populateProtoVehiclePropValue(emulator::VehiclePropValue* protoVal,
+                                       const VehiclePropValue* val);
+    void setDefaultValue(VehiclePropValue* prop);
+    void rxMsg(void);
+    void rxThread(void);
+    void txMsg(emulator::EmulatorMessage& txMsg);
+    StatusCode updateProperty(const VehiclePropValue& propValue);
+    StatusCode fillObd2LiveFrame(VehiclePropValuePtr* v);
+    StatusCode fillObd2FreezeFrame(VehiclePropValuePtr* v);
+private:
+    // TODO:  Use a hashtable to support indexing props
+    std::vector<std::unique_ptr<VehiclePropValue>> mProps;
+    std::atomic<int> mCurSocket;
+    std::atomic<int> mExit;
+    std::unique_ptr<Obd2SensorStore> mObd2SensorStore{nullptr};
+    std::mutex mPropsMutex;
+    int mSocket;
+    std::mutex mTxMutex;
+    std::thread mThread;
+};
+
+}  // impl
+
+}  // namespace V2_0
+}  // namespace vehicle
+}  // namespace automotive
+}  // namespace hardware
+}  // namespace android
+
+
+#endif  // android_hardware_automotive_vehicle_V2_0_impl_DefaultVehicleHal_H_
diff --git a/automotive/vehicle/2.0/default/impl/proto/VehicleHalProto.proto b/automotive/vehicle/2.0/default/impl/proto/VehicleHalProto.proto
new file mode 100644
index 0000000..86433f5
--- /dev/null
+++ b/automotive/vehicle/2.0/default/impl/proto/VehicleHalProto.proto
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2015 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.
+ */
+
+syntax = "proto2";
+option optimize_for = LITE_RUNTIME;
+
+package emulator;
+
+// CMD messages are from workstation --> VHAL
+// RESP messages are from VHAL --> workstation
+enum MsgType {
+    GET_CONFIG_CMD                      = 0;
+    GET_CONFIG_RESP                     = 1;
+    GET_CONFIG_ALL_CMD                  = 2;
+    GET_CONFIG_ALL_RESP                 = 3;
+    GET_PROPERTY_CMD                    = 4;
+    GET_PROPERTY_RESP                   = 5;
+    GET_PROPERTY_ALL_CMD                = 6;
+    GET_PROPERTY_ALL_RESP               = 7;
+    SET_PROPERTY_CMD                    = 8;
+    SET_PROPERTY_RESP                   = 9;
+    SET_PROPERTY_ASYNC                  = 10;
+}
+enum Status {
+    RESULT_OK                           = 0;
+    ERROR_UNKNOWN                       = 1;
+    ERROR_UNIMPLEMENTED_CMD             = 2;
+    ERROR_INVALID_PROPERTY              = 3;
+    ERROR_INVALID_AREA_ID               = 4;
+    ERROR_PROPERTY_UNINITIALIZED        = 5;
+    ERROR_WRITE_ONLY_PROPERTY           = 6;
+    ERROR_MEMORY_ALLOC_FAILED           = 7;
+    ERROR_INVALID_OPERATION             = 8;
+}
+
+message VehicleAreaConfig {
+    required int32  area_id             = 1;
+    optional sint32 min_int32_value     = 2;
+    optional sint32 max_int32_value     = 3;
+    optional sint64 min_int64_value     = 4;
+    optional sint64 max_int64_value     = 5;
+    optional float  min_float_value     = 6;
+    optional float  max_float_value     = 7;
+}
+
+message VehiclePropConfig {
+    required int32             prop                = 1;
+    optional int32             access              = 2;
+    optional int32             change_mode         = 3;
+    optional int32             value_type          = 4;
+    optional int32             supported_areas     = 5;
+    repeated VehicleAreaConfig area_configs        = 6;
+    optional int32             config_flags        = 7;
+    repeated int32             config_array        = 8;
+    optional string            config_string       = 9;
+    optional float             min_sample_rate     = 10;
+    optional float             max_sample_rate     = 11;
+};
+
+message VehiclePropValue {
+    // common data
+    required int32  prop                = 1;
+    optional int32  value_type          = 2;
+    optional int64  timestamp           = 3;    // required for valid data from HAL, skipped for set
+
+    // values
+    optional int32  area_id             = 4;
+    repeated sint32 int32_values        = 5;    // this also covers boolean value.
+    repeated sint64 int64_values        = 6;
+    repeated float  float_values        = 7;
+    optional string string_value        = 8;
+    optional bytes  bytes_value         = 9;
+};
+
+// This structure is used to notify what values to get from the Vehicle HAL
+message VehiclePropGet {
+    required int32 prop                 = 1;
+    optional int32 area_id              = 2;
+};
+
+message EmulatorMessage {
+    required MsgType           msg_type = 1;
+    optional Status            status   = 2;    // Only for RESP messages
+    repeated VehiclePropGet    prop     = 3;    // Provided for getConfig, getProperty commands
+    repeated VehiclePropConfig config   = 4;
+    repeated VehiclePropValue  value    = 5;
+};
diff --git a/vehicle/2.0/default/tests/AccessControlConfigParser_test.cpp b/automotive/vehicle/2.0/default/tests/AccessControlConfigParser_test.cpp
similarity index 98%
rename from vehicle/2.0/default/tests/AccessControlConfigParser_test.cpp
rename to automotive/vehicle/2.0/default/tests/AccessControlConfigParser_test.cpp
index 5b09135..7c9a4d9 100644
--- a/vehicle/2.0/default/tests/AccessControlConfigParser_test.cpp
+++ b/automotive/vehicle/2.0/default/tests/AccessControlConfigParser_test.cpp
@@ -24,6 +24,7 @@
 
 namespace android {
 namespace hardware {
+namespace automotive {
 namespace vehicle {
 namespace V2_0 {
 
@@ -146,5 +147,6 @@
 
 }  // namespace V2_0
 }  // namespace vehicle
+}  // namespace automotive
 }  // namespace hardware
 }  // namespace android
diff --git a/vehicle/2.0/default/tests/Obd2SensorStore_test.cpp b/automotive/vehicle/2.0/default/tests/Obd2SensorStore_test.cpp
similarity index 99%
rename from vehicle/2.0/default/tests/Obd2SensorStore_test.cpp
rename to automotive/vehicle/2.0/default/tests/Obd2SensorStore_test.cpp
index 6866454..3ebebbd 100644
--- a/vehicle/2.0/default/tests/Obd2SensorStore_test.cpp
+++ b/automotive/vehicle/2.0/default/tests/Obd2SensorStore_test.cpp
@@ -21,6 +21,7 @@
 
 namespace android {
 namespace hardware {
+namespace automotive {
 namespace vehicle {
 namespace V2_0 {
 
@@ -279,5 +280,6 @@
 
 }  // namespace V2_0
 }  // namespace vehicle
+}  // namespace automotive
 }  // namespace hardware
 }  // namespace android
diff --git a/vehicle/2.0/default/tests/SubscriptionManager_test.cpp b/automotive/vehicle/2.0/default/tests/SubscriptionManager_test.cpp
similarity index 98%
rename from vehicle/2.0/default/tests/SubscriptionManager_test.cpp
rename to automotive/vehicle/2.0/default/tests/SubscriptionManager_test.cpp
index 1b12bfd..c6c6add 100644
--- a/vehicle/2.0/default/tests/SubscriptionManager_test.cpp
+++ b/automotive/vehicle/2.0/default/tests/SubscriptionManager_test.cpp
@@ -25,6 +25,7 @@
 
 namespace android {
 namespace hardware {
+namespace automotive {
 namespace vehicle {
 namespace V2_0 {
 
@@ -192,5 +193,6 @@
 
 }  // namespace V2_0
 }  // namespace vehicle
+}  // namespace automotive
 }  // namespace hardware
 }  // namespace android
diff --git a/vehicle/2.0/default/tests/VehicleHalManager_test.cpp b/automotive/vehicle/2.0/default/tests/VehicleHalManager_test.cpp
similarity index 99%
rename from vehicle/2.0/default/tests/VehicleHalManager_test.cpp
rename to automotive/vehicle/2.0/default/tests/VehicleHalManager_test.cpp
index c20ab7f..1ca5824 100644
--- a/vehicle/2.0/default/tests/VehicleHalManager_test.cpp
+++ b/automotive/vehicle/2.0/default/tests/VehicleHalManager_test.cpp
@@ -27,6 +27,7 @@
 
 namespace android {
 namespace hardware {
+namespace automotive {
 namespace vehicle {
 namespace V2_0 {
 
@@ -471,5 +472,6 @@
 
 }  // namespace V2_0
 }  // namespace vehicle
+}  // namespace automotive
 }  // namespace hardware
 }  // namespace android
diff --git a/vehicle/2.0/default/tests/VehicleHalTestUtils.h b/automotive/vehicle/2.0/default/tests/VehicleHalTestUtils.h
similarity index 95%
rename from vehicle/2.0/default/tests/VehicleHalTestUtils.h
rename to automotive/vehicle/2.0/default/tests/VehicleHalTestUtils.h
index fab420a..a512fcf 100644
--- a/vehicle/2.0/default/tests/VehicleHalTestUtils.h
+++ b/automotive/vehicle/2.0/default/tests/VehicleHalTestUtils.h
@@ -14,16 +14,17 @@
  * limitations under the License.
  */
 
-#ifndef android_hardware_vehicle_V2_0_VehicleDebugUtils_H_
-#define android_hardware_vehicle_V2_0_VehicleDebugUtils_H_
+#ifndef android_hardware_automotive_vehicle_V2_0_VehicleDebugUtils_H_
+#define android_hardware_automotive_vehicle_V2_0_VehicleDebugUtils_H_
 
-#include <android/hardware/vehicle/2.0/types.h>
+#include <android/hardware/automotive/vehicle/2.0/types.h>
 #include <vehicle_hal_manager/VehicleUtils.h>
 #include <ios>
 #include <sstream>
 
 namespace android {
 namespace hardware {
+namespace automotive {
 namespace vehicle {
 namespace V2_0 {
 
@@ -120,7 +121,7 @@
     using MuxGuard = std::lock_guard<std::mutex>;
     using HidlVecOfValues = hidl_vec<VehiclePropValue>;
 public:
-    // Methods from ::android::hardware::vehicle::V2_0::IVehicleCallback follow.
+    // Methods from ::android::hardware::automotive::vehicle::V2_0::IVehicleCallback follow.
     Return<void> onPropertyEvent(
             const hidl_vec<VehiclePropValue>& values) override {
         {
@@ -265,8 +266,9 @@
 
 }  // namespace V2_0
 }  // namespace vehicle
+}  // namespace automotive
 }  // namespace hardware
 }  // namespace android
 
 
-#endif //VEHICLEHALDEBUGUTILS_H
+#endif //android_hardware_automotive_vehicle_V2_0_VehicleDebugUtils_H_
diff --git a/vehicle/2.0/default/tests/VehicleObjectPool_test.cpp b/automotive/vehicle/2.0/default/tests/VehicleObjectPool_test.cpp
similarity index 98%
rename from vehicle/2.0/default/tests/VehicleObjectPool_test.cpp
rename to automotive/vehicle/2.0/default/tests/VehicleObjectPool_test.cpp
index 135f9fa..0d57284 100644
--- a/vehicle/2.0/default/tests/VehicleObjectPool_test.cpp
+++ b/automotive/vehicle/2.0/default/tests/VehicleObjectPool_test.cpp
@@ -24,6 +24,7 @@
 
 namespace android {
 namespace hardware {
+namespace automotive {
 namespace vehicle {
 namespace V2_0 {
 
@@ -125,5 +126,6 @@
 
 }  // namespace V2_0
 }  // namespace vehicle
+}  // namespace automotive
 }  // namespace hardware
 }  // namespace android
diff --git a/vehicle/2.0/default/tests/VehiclePropConfigIndex_test.cpp b/automotive/vehicle/2.0/default/tests/VehiclePropConfigIndex_test.cpp
similarity index 97%
rename from vehicle/2.0/default/tests/VehiclePropConfigIndex_test.cpp
rename to automotive/vehicle/2.0/default/tests/VehiclePropConfigIndex_test.cpp
index 4e1daf8..fad4ab3 100644
--- a/vehicle/2.0/default/tests/VehiclePropConfigIndex_test.cpp
+++ b/automotive/vehicle/2.0/default/tests/VehiclePropConfigIndex_test.cpp
@@ -22,6 +22,7 @@
 
 namespace android {
 namespace hardware {
+namespace automotive {
 namespace vehicle {
 namespace V2_0 {
 
@@ -71,5 +72,6 @@
 
 }  // namespace V2_0
 }  // namespace vehicle
+}  // namespace automotive
 }  // namespace hardware
-}  // namespace android
\ No newline at end of file
+}  // namespace android
diff --git a/vehicle/2.0/default/vehicle_hal_manager/AccessControlConfigParser.cpp b/automotive/vehicle/2.0/default/vehicle_hal_manager/AccessControlConfigParser.cpp
similarity index 98%
rename from vehicle/2.0/default/vehicle_hal_manager/AccessControlConfigParser.cpp
rename to automotive/vehicle/2.0/default/vehicle_hal_manager/AccessControlConfigParser.cpp
index 9cc994d..6a3f8e5 100644
--- a/vehicle/2.0/default/vehicle_hal_manager/AccessControlConfigParser.cpp
+++ b/automotive/vehicle/2.0/default/vehicle_hal_manager/AccessControlConfigParser.cpp
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#define LOG_TAG "android.hardware.vehicle@2.0-impl"
+#define LOG_TAG "automotive.vehicle@2.0-impl"
 
 #include "AccessControlConfigParser.h"
 #include "VehicleUtils.h"
@@ -27,6 +27,7 @@
 
 namespace android {
 namespace hardware {
+namespace automotive {
 namespace vehicle {
 namespace V2_0 {
 
@@ -222,5 +223,6 @@
 
 }  // namespace V2_0
 }  // namespace vehicle
+}  // namespace automotive
 }  // namespace hardware
 }  // namespace android
diff --git a/vehicle/2.0/default/vehicle_hal_manager/AccessControlConfigParser.h b/automotive/vehicle/2.0/default/vehicle_hal_manager/AccessControlConfigParser.h
similarity index 89%
rename from vehicle/2.0/default/vehicle_hal_manager/AccessControlConfigParser.h
rename to automotive/vehicle/2.0/default/vehicle_hal_manager/AccessControlConfigParser.h
index 0c3753f..8ef6f5a 100644
--- a/vehicle/2.0/default/vehicle_hal_manager/AccessControlConfigParser.h
+++ b/automotive/vehicle/2.0/default/vehicle_hal_manager/AccessControlConfigParser.h
@@ -14,18 +14,19 @@
  * limitations under the License.
  */
 
-#ifndef android_hardware_vehicle_V2_0_AccessControlConfigParser_H_
-#define android_hardware_vehicle_V2_0_AccessControlConfigParser_H_
+#ifndef android_hardware_automotive_vehicle_V2_0_AccessControlConfigParser_H_
+#define android_hardware_automotive_vehicle_V2_0_AccessControlConfigParser_H_
 
 #include <string>
 #include <vector>
 #include <unordered_map>
 #include <list>
 
-#include <android/hardware/vehicle/2.0/types.h>
+#include <android/hardware/automotive/vehicle/2.0/types.h>
 
 namespace android {
 namespace hardware {
+namespace automotive {
 namespace vehicle {
 namespace V2_0 {
 
@@ -105,7 +106,8 @@
 
 }  // namespace V2_0
 }  // namespace vehicle
+}  // namespace automotive
 }  // namespace hardware
 }  // namespace android
 
-#endif // android_hardware_vehicle_V2_0_AccessControlConfigParser_H_
+#endif // android_hardware_automotive_vehicle_V2_0_AccessControlConfigParser_H_
diff --git a/vehicle/2.0/default/vehicle_hal_manager/ConcurrentQueue.h b/automotive/vehicle/2.0/default/vehicle_hal_manager/ConcurrentQueue.h
similarity index 94%
rename from vehicle/2.0/default/vehicle_hal_manager/ConcurrentQueue.h
rename to automotive/vehicle/2.0/default/vehicle_hal_manager/ConcurrentQueue.h
index 8f575dc..b63429f 100644
--- a/vehicle/2.0/default/vehicle_hal_manager/ConcurrentQueue.h
+++ b/automotive/vehicle/2.0/default/vehicle_hal_manager/ConcurrentQueue.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef android_hardware_vehicle_V2_0_ConcurrentQueue_H_
-#define android_hardware_vehicle_V2_0_ConcurrentQueue_H_
+#ifndef android_hardware_automotive_vehicle_V2_0_ConcurrentQueue_H_
+#define android_hardware_automotive_vehicle_V2_0_ConcurrentQueue_H_
 
 #include <queue>
 #include <atomic>
@@ -153,4 +153,4 @@
 
 }  // namespace android
 
-#endif //android_hardware_vehicle_V2_0_ConcurrentQueue_H_
+#endif //android_hardware_automotive_vehicle_V2_0_ConcurrentQueue_H_
diff --git a/vehicle/2.0/default/vehicle_hal_manager/Obd2SensorStore.cpp b/automotive/vehicle/2.0/default/vehicle_hal_manager/Obd2SensorStore.cpp
similarity index 98%
rename from vehicle/2.0/default/vehicle_hal_manager/Obd2SensorStore.cpp
rename to automotive/vehicle/2.0/default/vehicle_hal_manager/Obd2SensorStore.cpp
index 7be2662..3a252af 100644
--- a/vehicle/2.0/default/vehicle_hal_manager/Obd2SensorStore.cpp
+++ b/automotive/vehicle/2.0/default/vehicle_hal_manager/Obd2SensorStore.cpp
@@ -20,6 +20,7 @@
 
 namespace android {
 namespace hardware {
+namespace automotive {
 namespace vehicle {
 namespace V2_0 {
 
@@ -100,5 +101,6 @@
 
 }  // namespace V2_0
 }  // namespace vehicle
+}  // namespace automotive
 }  // namespace hardware
 }  // namespace android
diff --git a/vehicle/2.0/default/vehicle_hal_manager/Obd2SensorStore.h b/automotive/vehicle/2.0/default/vehicle_hal_manager/Obd2SensorStore.h
similarity index 90%
rename from vehicle/2.0/default/vehicle_hal_manager/Obd2SensorStore.h
rename to automotive/vehicle/2.0/default/vehicle_hal_manager/Obd2SensorStore.h
index b18f5d4..cbe9893 100644
--- a/vehicle/2.0/default/vehicle_hal_manager/Obd2SensorStore.h
+++ b/automotive/vehicle/2.0/default/vehicle_hal_manager/Obd2SensorStore.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef android_hardware_vehicle_V2_0_Obd2SensorStore_H_
-#define android_hardware_vehicle_V2_0_Obd2SensorStore_H_
+#ifndef android_hardware_automotive_vehicle_V2_0_Obd2SensorStore_H_
+#define android_hardware_automotive_vehicle_V2_0_Obd2SensorStore_H_
 
 #include <vector>
 
@@ -23,6 +23,7 @@
 
 namespace android {
 namespace hardware {
+namespace automotive {
 namespace vehicle {
 namespace V2_0 {
 
@@ -74,7 +75,8 @@
 
 }  // namespace V2_0
 }  // namespace vehicle
+}  // namespace automotive
 }  // namespace hardware
 }  // namespace android
 
-#endif  // android_hardware_vehicle_V2_0_Obd2SensorStore_H_
+#endif  // android_hardware_automotive_vehicle_V2_0_Obd2SensorStore_H_
diff --git a/vehicle/2.0/default/vehicle_hal_manager/SubscriptionManager.cpp b/automotive/vehicle/2.0/default/vehicle_hal_manager/SubscriptionManager.cpp
similarity index 98%
rename from vehicle/2.0/default/vehicle_hal_manager/SubscriptionManager.cpp
rename to automotive/vehicle/2.0/default/vehicle_hal_manager/SubscriptionManager.cpp
index 72b0a83..f6f2758 100644
--- a/vehicle/2.0/default/vehicle_hal_manager/SubscriptionManager.cpp
+++ b/automotive/vehicle/2.0/default/vehicle_hal_manager/SubscriptionManager.cpp
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#define LOG_TAG "android.hardware.vehicle@2.0-impl"
+#define LOG_TAG "automotive.vehicle@2.0-impl"
 
 #include "SubscriptionManager.h"
 
@@ -26,6 +26,7 @@
 
 namespace android {
 namespace hardware {
+namespace automotive {
 namespace vehicle {
 namespace V2_0 {
 
@@ -254,5 +255,6 @@
 
 }  // namespace V2_0
 }  // namespace vehicle
+}  // namespace automotive
 }  // namespace hardware
 }  // namespace android
diff --git a/vehicle/2.0/default/vehicle_hal_manager/SubscriptionManager.h b/automotive/vehicle/2.0/default/vehicle_hal_manager/SubscriptionManager.h
similarity index 92%
rename from vehicle/2.0/default/vehicle_hal_manager/SubscriptionManager.h
rename to automotive/vehicle/2.0/default/vehicle_hal_manager/SubscriptionManager.h
index 7a74295..6a12b77 100644
--- a/vehicle/2.0/default/vehicle_hal_manager/SubscriptionManager.h
+++ b/automotive/vehicle/2.0/default/vehicle_hal_manager/SubscriptionManager.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef android_hardware_vehicle_V2_0_SubscriptionManager_H_
-#define android_hardware_vehicle_V2_0_SubscriptionManager_H_
+#ifndef android_hardware_automotive_vehicle_V2_0_SubscriptionManager_H_
+#define android_hardware_automotive_vehicle_V2_0_SubscriptionManager_H_
 
 #include <memory>
 #include <map>
@@ -25,13 +25,14 @@
 #include <android/log.h>
 #include <hwbinder/IPCThreadState.h>
 
-#include <android/hardware/vehicle/2.0/IVehicle.h>
+#include <android/hardware/automotive/vehicle/2.0/IVehicle.h>
 
 #include "ConcurrentQueue.h"
 #include "VehicleObjectPool.h"
 
 namespace android {
 namespace hardware {
+namespace automotive {
 namespace vehicle {
 namespace V2_0 {
 
@@ -140,8 +141,9 @@
 
 }  // namespace V2_0
 }  // namespace vehicle
+}  // namespace automotive
 }  // namespace hardware
 }  // namespace android
 
 
-#endif // android_hardware_vehicle_V2_0_SubscriptionManager_H_
+#endif // android_hardware_automotive_vehicle_V2_0_SubscriptionManager_H_
diff --git a/vehicle/2.0/default/vehicle_hal_manager/VehicleHalManager.cpp b/automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleHalManager.cpp
similarity index 98%
rename from vehicle/2.0/default/vehicle_hal_manager/VehicleHalManager.cpp
rename to automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleHalManager.cpp
index 8b243a3..3a5e504 100644
--- a/vehicle/2.0/default/vehicle_hal_manager/VehicleHalManager.cpp
+++ b/automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleHalManager.cpp
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#define LOG_TAG "android.hardware.vehicle@2.0-impl"
+#define LOG_TAG "automotive.vehicle@2.0-impl"
 
 #include "VehicleHalManager.h"
 
@@ -27,6 +27,7 @@
 
 namespace android {
 namespace hardware {
+namespace automotive {
 namespace vehicle {
 namespace V2_0 {
 
@@ -380,5 +381,6 @@
 
 }  // namespace V2_0
 }  // namespace vehicle
+}  // namespace automotive
 }  // namespace hardware
 }  // namespace android
diff --git a/vehicle/2.0/default/vehicle_hal_manager/VehicleHalManager.h b/automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleHalManager.h
similarity index 93%
rename from vehicle/2.0/default/vehicle_hal_manager/VehicleHalManager.h
rename to automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleHalManager.h
index 49723da..4bff4d1 100644
--- a/vehicle/2.0/default/vehicle_hal_manager/VehicleHalManager.h
+++ b/automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleHalManager.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef android_hardware_vehicle_V2_0_VehicleHalManager_H_
-#define android_hardware_vehicle_V2_0_VehicleHalManager_H_
+#ifndef android_hardware_automotive_vehicle_V2_0_VehicleHalManager_H_
+#define android_hardware_automotive_vehicle_V2_0_VehicleHalManager_H_
 
 #include <inttypes.h>
 #include <stdint.h>
@@ -26,7 +26,7 @@
 #include <memory>
 #include <set>
 
-#include <android/hardware/vehicle/2.0/IVehicle.h>
+#include <android/hardware/automotive/vehicle/2.0/IVehicle.h>
 #include <hwbinder/IPCThreadState.h>
 
 #include "AccessControlConfigParser.h"
@@ -38,6 +38,7 @@
 
 namespace android {
 namespace hardware {
+namespace automotive {
 namespace vehicle {
 namespace V2_0 {
 
@@ -130,8 +131,9 @@
 
 }  // namespace V2_0
 }  // namespace vehicle
+}  // namespace automotive
 }  // namespace hardware
 }  // namespace android
 
 
-#endif // android_hardware_vehicle_V2_0_VehicleHalManager_H_
+#endif // android_hardware_automotive_vehicle_V2_0_VehicleHalManager_H_
diff --git a/vehicle/2.0/default/vehicle_hal_manager/VehicleObjectPool.cpp b/automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleObjectPool.cpp
similarity index 97%
rename from vehicle/2.0/default/vehicle_hal_manager/VehicleObjectPool.cpp
rename to automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleObjectPool.cpp
index 5fa77b1..a79c55c 100644
--- a/vehicle/2.0/default/vehicle_hal_manager/VehicleObjectPool.cpp
+++ b/automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleObjectPool.cpp
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#define LOG_TAG "android.hardware.vehicle@2.0-impl"
+#define LOG_TAG "automotive.vehicle@2.0-impl"
 
 #include "VehicleObjectPool.h"
 
@@ -24,6 +24,7 @@
 
 namespace android {
 namespace hardware {
+namespace automotive {
 namespace vehicle {
 namespace V2_0 {
 
@@ -157,5 +158,6 @@
 
 }  // namespace V2_0
 }  // namespace vehicle
+}  // namespace automotive
 }  // namespace hardware
 }  // namespace android
diff --git a/vehicle/2.0/default/vehicle_hal_manager/VehicleObjectPool.h b/automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleObjectPool.h
similarity index 95%
rename from vehicle/2.0/default/vehicle_hal_manager/VehicleObjectPool.h
rename to automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleObjectPool.h
index d9231c3..05c649b 100644
--- a/vehicle/2.0/default/vehicle_hal_manager/VehicleObjectPool.h
+++ b/automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleObjectPool.h
@@ -15,17 +15,18 @@
  */
 
 
-#ifndef android_hardware_vehicle_V2_0_VehicleObjectPool_H_
-#define android_hardware_vehicle_V2_0_VehicleObjectPool_H_
+#ifndef android_hardware_automotive_vehicle_V2_0_VehicleObjectPool_H_
+#define android_hardware_automotive_vehicle_V2_0_VehicleObjectPool_H_
 
 #include <deque>
 #include <map>
 #include <mutex>
 
-#include <android/hardware/vehicle/2.0/types.h>
+#include <android/hardware/automotive/vehicle/2.0/types.h>
 
 namespace android {
 namespace hardware {
+namespace automotive {
 namespace vehicle {
 namespace V2_0 {
 
@@ -238,7 +239,8 @@
 
 }  // namespace V2_0
 }  // namespace vehicle
+}  // namespace automotive
 }  // namespace hardware
 }  // namespace android
 
-#endif // android_hardware_vehicle_V2_0_VehicleObjectPool_H_
+#endif // android_hardware_automotive_vehicle_V2_0_VehicleObjectPool_H_
diff --git a/vehicle/2.0/default/vehicle_hal_manager/VehiclePropConfigIndex.h b/automotive/vehicle/2.0/default/vehicle_hal_manager/VehiclePropConfigIndex.h
similarity index 86%
rename from vehicle/2.0/default/vehicle_hal_manager/VehiclePropConfigIndex.h
rename to automotive/vehicle/2.0/default/vehicle_hal_manager/VehiclePropConfigIndex.h
index a08ac42..0528f68 100644
--- a/vehicle/2.0/default/vehicle_hal_manager/VehiclePropConfigIndex.h
+++ b/automotive/vehicle/2.0/default/vehicle_hal_manager/VehiclePropConfigIndex.h
@@ -14,15 +14,16 @@
  * limitations under the License.
  */
 
-#ifndef android_hardware_vehicle_V2_0_VehiclePropConfigIndex_H_
-#define android_hardware_vehicle_V2_0_VehiclePropConfigIndex_H_
+#ifndef android_hardware_automotive_vehicle_V2_0_VehiclePropConfigIndex_H_
+#define android_hardware_automotive_vehicle_V2_0_VehiclePropConfigIndex_H_
 
 #include <utils/KeyedVector.h>
 
-#include <android/hardware/vehicle/2.0/IVehicle.h>
+#include <android/hardware/automotive/vehicle/2.0/IVehicle.h>
 
 namespace android {
 namespace hardware {
+namespace automotive {
 namespace vehicle {
 namespace V2_0 {
 
@@ -72,7 +73,8 @@
 
 }  // namespace V2_0
 }  // namespace vehicle
+}  // namespace automotive
 }  // namespace hardware
 }  // namespace android
 
-#endif // android_hardware_vehicle_V2_0_VehiclePropConfigIndex_H_
+#endif // android_hardware_automotive_vehicle_V2_0_VehiclePropConfigIndex_H_
diff --git a/vehicle/2.0/default/vehicle_hal_manager/VehicleUtils.cpp b/automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleUtils.cpp
similarity index 97%
rename from vehicle/2.0/default/vehicle_hal_manager/VehicleUtils.cpp
rename to automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleUtils.cpp
index 5a00631..311cdef 100644
--- a/vehicle/2.0/default/vehicle_hal_manager/VehicleUtils.cpp
+++ b/automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleUtils.cpp
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#define LOG_TAG "android.hardware.vehicle@2.0-impl"
+#define LOG_TAG "automotive.vehicle@2.0-impl"
 
 #include "VehicleUtils.h"
 
@@ -22,6 +22,7 @@
 
 namespace android {
 namespace hardware {
+namespace automotive {
 namespace vehicle {
 namespace V2_0 {
 
@@ -124,5 +125,6 @@
 
 }  // namespace V2_0
 }  // namespace vehicle
+}  // namespace automotive
 }  // namespace hardware
 }  // namespace android
diff --git a/vehicle/2.0/default/vehicle_hal_manager/VehicleUtils.h b/automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleUtils.h
similarity index 88%
rename from vehicle/2.0/default/vehicle_hal_manager/VehicleUtils.h
rename to automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleUtils.h
index c24d860..ce0b163 100644
--- a/vehicle/2.0/default/vehicle_hal_manager/VehicleUtils.h
+++ b/automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleUtils.h
@@ -14,17 +14,18 @@
  * limitations under the License.
  */
 
-#ifndef android_hardware_vehicle_V2_0_VehicleUtils_H_
-#define android_hardware_vehicle_V2_0_VehicleUtils_H_
+#ifndef android_hardware_automotive_vehicle_V2_0_VehicleUtils_H_
+#define android_hardware_automotive_vehicle_V2_0_VehicleUtils_H_
 
 #include <memory>
 
 #include <hidl/HidlSupport.h>
 
-#include <android/hardware/vehicle/2.0/types.h>
+#include <android/hardware/automotive/vehicle/2.0/types.h>
 
 namespace android {
 namespace hardware {
+namespace automotive {
 namespace vehicle {
 namespace V2_0 {
 
@@ -78,7 +79,8 @@
 
 }  // namespace V2_0
 }  // namespace vehicle
+}  // namespace automotive
 }  // namespace hardware
 }  // namespace android
 
-#endif // android_hardware_vehicle_V2_0_VehicleUtils_H_
+#endif // android_hardware_automotive_vehicle_V2_0_VehicleUtils_H_
diff --git a/vehicle/2.0/types.hal b/automotive/vehicle/2.0/types.hal
similarity index 99%
rename from vehicle/2.0/types.hal
rename to automotive/vehicle/2.0/types.hal
index 6609e5b..05e10be 100644
--- a/vehicle/2.0/types.hal
+++ b/automotive/vehicle/2.0/types.hal
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.hardware.vehicle@2.0;
+package android.hardware.automotive.vehicle@2.0;
 
 /*
  * Enumerates supported data types for VehicleProperty.
diff --git a/automotive/vehicle/2.0/vts/Vehicle.vts b/automotive/vehicle/2.0/vts/Vehicle.vts
new file mode 100644
index 0000000..535d4b8
--- /dev/null
+++ b/automotive/vehicle/2.0/vts/Vehicle.vts
@@ -0,0 +1,116 @@
+component_class: HAL_HIDL
+component_type_version: 2.0
+component_name: "IVehicle"
+
+package: "android.hardware.automotive.vehicle"
+
+import: "android.hardware.automotive.vehicle@2.0::IVehicleCallback"
+import: "android.hardware.automotive.vehicle@2.0::types"
+
+interface: {
+    api: {
+        name: "getAllPropConfigs"
+        return_type_hidl: {
+            type: TYPE_VECTOR
+            vector_value: {
+                type: TYPE_STRUCT
+                predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehiclePropConfig"
+            }
+        }
+    }
+
+    api: {
+        name: "getPropConfigs"
+        return_type_hidl: {
+            type: TYPE_ENUM
+            predefined_type: "::android::hardware::automotive::vehicle::V2_0::StatusCode"
+        }
+        return_type_hidl: {
+            type: TYPE_VECTOR
+            vector_value: {
+                type: TYPE_STRUCT
+                predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehiclePropConfig"
+            }
+        }
+        arg: {
+            type: TYPE_VECTOR
+            vector_value: {
+                type: TYPE_ENUM
+                predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehicleProperty"
+            }
+        }
+    }
+
+    api: {
+        name: "get"
+        return_type_hidl: {
+            type: TYPE_ENUM
+            predefined_type: "::android::hardware::automotive::vehicle::V2_0::StatusCode"
+        }
+        return_type_hidl: {
+            type: TYPE_STRUCT
+            predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehiclePropValue"
+        }
+        arg: {
+            type: TYPE_STRUCT
+            predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehiclePropValue"
+        }
+    }
+
+    api: {
+        name: "set"
+        return_type_hidl: {
+            type: TYPE_ENUM
+            predefined_type: "::android::hardware::automotive::vehicle::V2_0::StatusCode"
+        }
+        arg: {
+            type: TYPE_STRUCT
+            predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehiclePropValue"
+        }
+    }
+
+    api: {
+        name: "subscribe"
+        return_type_hidl: {
+            type: TYPE_ENUM
+            predefined_type: "::android::hardware::automotive::vehicle::V2_0::StatusCode"
+        }
+        arg: {
+            type: TYPE_HIDL_CALLBACK
+            predefined_type: "IVehicleCallback"
+            is_callback: true
+        }
+        arg: {
+            type: TYPE_VECTOR
+            vector_value: {
+                type: TYPE_STRUCT
+                predefined_type: "::android::hardware::automotive::vehicle::V2_0::SubscribeOptions"
+            }
+        }
+    }
+
+    api: {
+        name: "unsubscribe"
+        return_type_hidl: {
+            type: TYPE_ENUM
+            predefined_type: "::android::hardware::automotive::vehicle::V2_0::StatusCode"
+        }
+        arg: {
+            type: TYPE_HIDL_CALLBACK
+            predefined_type: "IVehicleCallback"
+            is_callback: true
+        }
+        arg: {
+            type: TYPE_ENUM
+            predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehicleProperty"
+        }
+    }
+
+    api: {
+        name: "debugDump"
+        return_type_hidl: {
+            type: TYPE_STRING
+        }
+    }
+
+}
diff --git a/automotive/vehicle/2.0/vts/VehicleCallback.vts b/automotive/vehicle/2.0/vts/VehicleCallback.vts
new file mode 100644
index 0000000..3589fde
--- /dev/null
+++ b/automotive/vehicle/2.0/vts/VehicleCallback.vts
@@ -0,0 +1,45 @@
+component_class: HAL_HIDL
+component_type_version: 2.0
+component_name: "IVehicleCallback"
+
+package: "android.hardware.automotive.vehicle"
+
+import: "android.hardware.automotive.vehicle@2.0::types"
+
+interface: {
+    api: {
+        name: "onPropertyEvent"
+        arg: {
+            type: TYPE_VECTOR
+            vector_value: {
+                type: TYPE_STRUCT
+                predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehiclePropValue"
+            }
+        }
+    }
+
+    api: {
+        name: "onPropertySet"
+        arg: {
+            type: TYPE_STRUCT
+            predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehiclePropValue"
+        }
+    }
+
+    api: {
+        name: "onPropertySetError"
+        arg: {
+            type: TYPE_ENUM
+            predefined_type: "::android::hardware::automotive::vehicle::V2_0::StatusCode"
+        }
+        arg: {
+            type: TYPE_ENUM
+            predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehicleProperty"
+        }
+        arg: {
+            type: TYPE_SCALAR
+            scalar_type: "int32_t"
+        }
+    }
+
+}
diff --git a/vehicle/2.0/vts/types.vts b/automotive/vehicle/2.0/vts/types.vts
similarity index 91%
rename from vehicle/2.0/vts/types.vts
rename to automotive/vehicle/2.0/vts/types.vts
index 067a7d6..b8a9f83 100644
--- a/vehicle/2.0/vts/types.vts
+++ b/automotive/vehicle/2.0/vts/types.vts
@@ -2,11 +2,11 @@
 component_type_version: 2.0
 component_name: "types"
 
-package: "android.hardware.vehicle"
+package: "android.hardware.automotive.vehicle"
 
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehiclePropertyType"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -55,7 +55,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleArea"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleArea"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -92,7 +92,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehiclePropertyGroup"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehiclePropertyGroup"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -113,7 +113,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleProperty"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleProperty"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -510,7 +510,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleHvacFanDirection"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -539,7 +539,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleRadioConstants"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleRadioConstants"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -552,7 +552,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleAudioFocusRequest"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleAudioFocusRequest"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -581,7 +581,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleAudioFocusState"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleAudioFocusState"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -614,7 +614,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleAudioStreamFlag"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleAudioStreamFlag"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -635,7 +635,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleAudioStream"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleAudioStream"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -652,7 +652,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleAudioExtFocusFlag"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleAudioExtFocusFlag"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -681,7 +681,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleAudioFocusIndex"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleAudioFocusIndex"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -706,7 +706,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleAudioContextFlag"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleAudioContextFlag"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -767,7 +767,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleAudioVolumeCapabilityFlag"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleAudioVolumeCapabilityFlag"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -784,7 +784,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleAudioVolumeState"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleAudioVolumeState"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -801,7 +801,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleAudioVolumeIndex"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleAudioVolumeIndex"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -822,7 +822,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleAudioVolumeLimitIndex"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleAudioVolumeLimitIndex"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -839,7 +839,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleAudioRoutingPolicyIndex"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleAudioRoutingPolicyIndex"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -856,7 +856,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleAudioHwVariantConfigFlag"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleAudioHwVariantConfigFlag"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -869,7 +869,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleApPowerStateConfigFlag"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateConfigFlag"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -886,7 +886,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleApPowerState"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleApPowerState"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -915,7 +915,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleApPowerStateShutdownParam"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -936,7 +936,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleApPowerSetState"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleApPowerSetState"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -973,7 +973,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleApPowerStateIndex"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateIndex"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -990,7 +990,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleApPowerBootupReason"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleApPowerBootupReason"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -1011,7 +1011,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleHwKeyInputAction"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleHwKeyInputAction"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -1028,7 +1028,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleDisplay"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleDisplay"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -1045,7 +1045,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleInstrumentClusterType"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleInstrumentClusterType"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -1066,7 +1066,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleUnit"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleUnit"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -1135,7 +1135,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehiclePropertyChangeMode"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -1164,7 +1164,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehiclePropertyAccess"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -1189,7 +1189,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleDrivingStatus"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleDrivingStatus"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -1222,7 +1222,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleGear"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleGear"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -1287,7 +1287,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleAreaZone"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleAreaZone"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -1364,7 +1364,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleAreaSeat"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -1409,7 +1409,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleAreaWindow"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -1454,7 +1454,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleAreaDoor"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -1495,7 +1495,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleAreaMirror"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleAreaMirror"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -1516,7 +1516,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleTurnSignal"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleTurnSignal"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -1541,7 +1541,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleAreaConfig"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleAreaConfig"
     type: TYPE_STRUCT
     struct_value: {
         name: "areaId"
@@ -1581,22 +1581,22 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehiclePropConfig"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehiclePropConfig"
     type: TYPE_STRUCT
     struct_value: {
         name: "prop"
         type: TYPE_ENUM
-        predefined_type: "::android::hardware::vehicle::V2_0::VehicleProperty"
+        predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehicleProperty"
     }
     struct_value: {
         name: "access"
         type: TYPE_ENUM
-        predefined_type: "::android::hardware::vehicle::V2_0::VehiclePropertyAccess"
+        predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess"
     }
     struct_value: {
         name: "changeMode"
         type: TYPE_ENUM
-        predefined_type: "::android::hardware::vehicle::V2_0::VehiclePropertyChangeMode"
+        predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode"
     }
     struct_value: {
         name: "supportedAreas"
@@ -1608,7 +1608,7 @@
         type: TYPE_VECTOR
         vector_value: {
             type: TYPE_STRUCT
-            predefined_type: "::android::hardware::vehicle::V2_0::VehicleAreaConfig"
+            predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehicleAreaConfig"
         }
     }
     struct_value: {
@@ -1641,10 +1641,10 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehiclePropValue"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehiclePropValue"
     type: TYPE_STRUCT
     sub_struct: {
-        name: "::android::hardware::vehicle::V2_0::VehiclePropValue::RawValue"
+        name: "::android::hardware::automotive::vehicle::V2_0::VehiclePropValue::RawValue"
         type: TYPE_STRUCT
         struct_value: {
             name: "int32Values"
@@ -1686,7 +1686,7 @@
     struct_value: {
         name: "prop"
         type: TYPE_ENUM
-        predefined_type: "::android::hardware::vehicle::V2_0::VehicleProperty"
+        predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehicleProperty"
     }
     struct_value: {
         name: "timestamp"
@@ -1701,12 +1701,12 @@
     struct_value: {
         name: "value"
         type: TYPE_STRUCT
-        predefined_type: "::android::hardware::vehicle::V2_0::VehiclePropValue::RawValue"
+        predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehiclePropValue::RawValue"
     }
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehicleIgnitionState"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -1739,7 +1739,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::VehiclePropertyOperation"
+    name: "::android::hardware::automotive::vehicle::V2_0::VehiclePropertyOperation"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -1764,7 +1764,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::SubscribeFlags"
+    name: "::android::hardware::automotive::vehicle::V2_0::SubscribeFlags"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -1789,12 +1789,12 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::SubscribeOptions"
+    name: "::android::hardware::automotive::vehicle::V2_0::SubscribeOptions"
     type: TYPE_STRUCT
     struct_value: {
         name: "propId"
         type: TYPE_ENUM
-        predefined_type: "::android::hardware::vehicle::V2_0::VehicleProperty"
+        predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehicleProperty"
     }
     struct_value: {
         name: "vehicleAreas"
@@ -1809,12 +1809,12 @@
     struct_value: {
         name: "flags"
         type: TYPE_ENUM
-        predefined_type: "::android::hardware::vehicle::V2_0::SubscribeFlags"
+        predefined_type: "::android::hardware::automotive::vehicle::V2_0::SubscribeFlags"
     }
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::StatusCode"
+    name: "::android::hardware::automotive::vehicle::V2_0::StatusCode"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -1847,7 +1847,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::FuelSystemStatus"
+    name: "::android::hardware::automotive::vehicle::V2_0::FuelSystemStatus"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -1876,7 +1876,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::IgnitionMonitorKind"
+    name: "::android::hardware::automotive::vehicle::V2_0::IgnitionMonitorKind"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -1893,7 +1893,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::CommonIgnitionMonitors"
+    name: "::android::hardware::automotive::vehicle::V2_0::CommonIgnitionMonitors"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -1926,7 +1926,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::SparkIgnitionMonitors"
+    name: "::android::hardware::automotive::vehicle::V2_0::SparkIgnitionMonitors"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -2023,7 +2023,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::CompressionIgnitionMonitors"
+    name: "::android::hardware::automotive::vehicle::V2_0::CompressionIgnitionMonitors"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -2104,7 +2104,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::SecondaryAirStatus"
+    name: "::android::hardware::automotive::vehicle::V2_0::SecondaryAirStatus"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -2129,7 +2129,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::FuelType"
+    name: "::android::hardware::automotive::vehicle::V2_0::FuelType"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -2234,7 +2234,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::Obd2IntegerSensorIndex"
+    name: "::android::hardware::automotive::vehicle::V2_0::Obd2IntegerSensorIndex"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
@@ -2371,7 +2371,7 @@
 }
 
 attribute: {
-    name: "::android::hardware::vehicle::V2_0::Obd2FloatSensorIndex"
+    name: "::android::hardware::automotive::vehicle::V2_0::Obd2FloatSensorIndex"
     type: TYPE_ENUM
     enum_value: {
         scalar_type: "int32_t"
diff --git a/vehicle/Android.bp b/automotive/vehicle/Android.bp
similarity index 100%
rename from vehicle/Android.bp
rename to automotive/vehicle/Android.bp
diff --git a/benchmarks/msgq/1.0/Android.bp b/benchmarks/msgq/1.0/Android.bp
index 8c853d8..7f8ea99 100644
--- a/benchmarks/msgq/1.0/Android.bp
+++ b/benchmarks/msgq/1.0/Android.bp
@@ -1,11 +1,18 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.benchmarks.msgq@1.0_hal",
+    srcs: [
+        "IBenchmarkMsgQ.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.benchmarks.msgq@1.0_genc++",
     tools: ["hidl-gen"],
     cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.benchmarks.msgq@1.0",
     srcs: [
-        "IBenchmarkMsgQ.hal",
+        ":android.hardware.benchmarks.msgq@1.0_hal",
     ],
     out: [
         "android/hardware/benchmarks/msgq/1.0/BenchmarkMsgQAll.cpp",
@@ -17,7 +24,7 @@
     tools: ["hidl-gen"],
     cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.benchmarks.msgq@1.0",
     srcs: [
-        "IBenchmarkMsgQ.hal",
+        ":android.hardware.benchmarks.msgq@1.0_hal",
     ],
     out: [
         "android/hardware/benchmarks/msgq/1.0/IBenchmarkMsgQ.h",
@@ -50,98 +57,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.benchmarks.msgq.vts.driver@1.0_genc++",
-    tools: ["hidl-gen", "vtsc"],
-    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.benchmarks.msgq@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/benchmarks/msgq/1.0/ $(genDir)/android/hardware/benchmarks/msgq/1.0/",
-    srcs: [
-        "IBenchmarkMsgQ.hal",
-    ],
-    out: [
-        "android/hardware/benchmarks/msgq/1.0/BenchmarkMsgQ.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.benchmarks.msgq.vts.driver@1.0_genc++_headers",
-    tools: ["hidl-gen", "vtsc"],
-    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.benchmarks.msgq@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/benchmarks/msgq/1.0/ $(genDir)/android/hardware/benchmarks/msgq/1.0/",
-    srcs: [
-        "IBenchmarkMsgQ.hal",
-    ],
-    out: [
-        "android/hardware/benchmarks/msgq/1.0/BenchmarkMsgQ.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.benchmarks.msgq.vts.driver@1.0",
-    generated_sources: ["android.hardware.benchmarks.msgq.vts.driver@1.0_genc++"],
-    generated_headers: ["android.hardware.benchmarks.msgq.vts.driver@1.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.benchmarks.msgq.vts.driver@1.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.benchmarks.msgq@1.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hidl.base@1.0",
-    ],
-}
-
-genrule {
-    name: "android.hardware.benchmarks.msgq@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.benchmarks.msgq@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/benchmarks/msgq/1.0/ $(genDir)/android/hardware/benchmarks/msgq/1.0/",
-    srcs: [
-        "IBenchmarkMsgQ.hal",
-    ],
-    out: [
-        "android/hardware/benchmarks/msgq/1.0/BenchmarkMsgQ.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.benchmarks.msgq@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.benchmarks.msgq@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/benchmarks/msgq/1.0/ $(genDir)/android/hardware/benchmarks/msgq/1.0/",
-    srcs: [
-        "IBenchmarkMsgQ.hal",
-    ],
-    out: [
-        "android/hardware/benchmarks/msgq/1.0/BenchmarkMsgQ.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.benchmarks.msgq@1.0-vts.profiler",
-    generated_sources: ["android.hardware.benchmarks.msgq@1.0-vts.profiler_genc++"],
-    generated_headers: ["android.hardware.benchmarks.msgq@1.0-vts.profiler_genc++_headers"],
-    export_generated_headers: ["android.hardware.benchmarks.msgq@1.0-vts.profiler_genc++_headers"],
-    shared_libs: [
-        "libbase",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.benchmarks.msgq@1.0",
-    ],
-}
diff --git a/biometrics/fingerprint/2.1/Android.bp b/biometrics/fingerprint/2.1/Android.bp
index ea148aa..f285f16 100644
--- a/biometrics/fingerprint/2.1/Android.bp
+++ b/biometrics/fingerprint/2.1/Android.bp
@@ -1,5 +1,14 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.biometrics.fingerprint@2.1_hal",
+    srcs: [
+        "types.hal",
+        "IBiometricsFingerprint.hal",
+        "IBiometricsFingerprintClientCallback.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.biometrics.fingerprint@2.1_genc++",
     tools: ["hidl-gen"],
@@ -62,114 +71,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.biometrics.fingerprint.vts.driver@2.1_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: [
-        "types.hal",
-        "IBiometricsFingerprint.hal",
-        "IBiometricsFingerprintClientCallback.hal",
-    ],
-    out: [
-        "android/hardware/biometrics/fingerprint/2.1/types.vts.cpp",
-        "android/hardware/biometrics/fingerprint/2.1/BiometricsFingerprint.vts.cpp",
-        "android/hardware/biometrics/fingerprint/2.1/BiometricsFingerprintClientCallback.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.biometrics.fingerprint.vts.driver@2.1_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: [
-        "types.hal",
-        "IBiometricsFingerprint.hal",
-        "IBiometricsFingerprintClientCallback.hal",
-    ],
-    out: [
-        "android/hardware/biometrics/fingerprint/2.1/types.vts.h",
-        "android/hardware/biometrics/fingerprint/2.1/BiometricsFingerprint.vts.h",
-        "android/hardware/biometrics/fingerprint/2.1/BiometricsFingerprintClientCallback.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.biometrics.fingerprint.vts.driver@2.1",
-    generated_sources: ["android.hardware.biometrics.fingerprint.vts.driver@2.1_genc++"],
-    generated_headers: ["android.hardware.biometrics.fingerprint.vts.driver@2.1_genc++_headers"],
-    export_generated_headers: ["android.hardware.biometrics.fingerprint.vts.driver@2.1_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.biometrics.fingerprint@2.1",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hidl.base@1.0",
-    ],
-}
-
-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: [
-        "types.hal",
-        "IBiometricsFingerprint.hal",
-        "IBiometricsFingerprintClientCallback.hal",
-    ],
-    out: [
-        "android/hardware/biometrics/fingerprint/2.1/types.vts.cpp",
-        "android/hardware/biometrics/fingerprint/2.1/BiometricsFingerprint.vts.cpp",
-        "android/hardware/biometrics/fingerprint/2.1/BiometricsFingerprintClientCallback.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: [
-        "types.hal",
-        "IBiometricsFingerprint.hal",
-        "IBiometricsFingerprintClientCallback.hal",
-    ],
-    out: [
-        "android/hardware/biometrics/fingerprint/2.1/types.vts.h",
-        "android/hardware/biometrics/fingerprint/2.1/BiometricsFingerprint.vts.h",
-        "android/hardware/biometrics/fingerprint/2.1/BiometricsFingerprintClientCallback.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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.biometrics.fingerprint@2.1",
-    ],
-}
diff --git a/biometrics/fingerprint/2.1/Android.mk b/biometrics/fingerprint/2.1/Android.mk
index 22da268..567b38a 100644
--- a/biometrics/fingerprint/2.1/Android.mk
+++ b/biometrics/fingerprint/2.1/Android.mk
@@ -8,7 +8,7 @@
 LOCAL_MODULE := android.hardware.biometrics.fingerprint@2.1-java
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -239,7 +239,7 @@
 LOCAL_MODULE := android.hardware.biometrics.fingerprint@2.1-java-static
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
diff --git a/bluetooth/1.0/Android.bp b/bluetooth/1.0/Android.bp
index f3e5a62..2373ceb 100644
--- a/bluetooth/1.0/Android.bp
+++ b/bluetooth/1.0/Android.bp
@@ -1,13 +1,20 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.bluetooth@1.0_hal",
+    srcs: [
+        "types.hal",
+        "IBluetoothHci.hal",
+        "IBluetoothHciCallbacks.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.bluetooth@1.0_genc++",
     tools: ["hidl-gen"],
     cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.bluetooth@1.0",
     srcs: [
-        "types.hal",
-        "IBluetoothHci.hal",
-        "IBluetoothHciCallbacks.hal",
+        ":android.hardware.bluetooth@1.0_hal",
     ],
     out: [
         "android/hardware/bluetooth/1.0/types.cpp",
@@ -21,9 +28,7 @@
     tools: ["hidl-gen"],
     cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.bluetooth@1.0",
     srcs: [
-        "types.hal",
-        "IBluetoothHci.hal",
-        "IBluetoothHciCallbacks.hal",
+        ":android.hardware.bluetooth@1.0_hal",
     ],
     out: [
         "android/hardware/bluetooth/1.0/types.h",
@@ -62,114 +67,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.bluetooth.vts.driver@1.0_genc++",
-    tools: ["hidl-gen", "vtsc"],
-    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.bluetooth@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/bluetooth/1.0/ $(genDir)/android/hardware/bluetooth/1.0/",
-    srcs: [
-        "types.hal",
-        "IBluetoothHci.hal",
-        "IBluetoothHciCallbacks.hal",
-    ],
-    out: [
-        "android/hardware/bluetooth/1.0/types.vts.cpp",
-        "android/hardware/bluetooth/1.0/BluetoothHci.vts.cpp",
-        "android/hardware/bluetooth/1.0/BluetoothHciCallbacks.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.bluetooth.vts.driver@1.0_genc++_headers",
-    tools: ["hidl-gen", "vtsc"],
-    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.bluetooth@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/bluetooth/1.0/ $(genDir)/android/hardware/bluetooth/1.0/",
-    srcs: [
-        "types.hal",
-        "IBluetoothHci.hal",
-        "IBluetoothHciCallbacks.hal",
-    ],
-    out: [
-        "android/hardware/bluetooth/1.0/types.vts.h",
-        "android/hardware/bluetooth/1.0/BluetoothHci.vts.h",
-        "android/hardware/bluetooth/1.0/BluetoothHciCallbacks.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.bluetooth.vts.driver@1.0",
-    generated_sources: ["android.hardware.bluetooth.vts.driver@1.0_genc++"],
-    generated_headers: ["android.hardware.bluetooth.vts.driver@1.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.bluetooth.vts.driver@1.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.bluetooth@1.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hidl.base@1.0",
-    ],
-}
-
-genrule {
-    name: "android.hardware.bluetooth@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.bluetooth@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/bluetooth/1.0/ $(genDir)/android/hardware/bluetooth/1.0/",
-    srcs: [
-        "types.hal",
-        "IBluetoothHci.hal",
-        "IBluetoothHciCallbacks.hal",
-    ],
-    out: [
-        "android/hardware/bluetooth/1.0/types.vts.cpp",
-        "android/hardware/bluetooth/1.0/BluetoothHci.vts.cpp",
-        "android/hardware/bluetooth/1.0/BluetoothHciCallbacks.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.bluetooth@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.bluetooth@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/bluetooth/1.0/ $(genDir)/android/hardware/bluetooth/1.0/",
-    srcs: [
-        "types.hal",
-        "IBluetoothHci.hal",
-        "IBluetoothHciCallbacks.hal",
-    ],
-    out: [
-        "android/hardware/bluetooth/1.0/types.vts.h",
-        "android/hardware/bluetooth/1.0/BluetoothHci.vts.h",
-        "android/hardware/bluetooth/1.0/BluetoothHciCallbacks.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.bluetooth@1.0-vts.profiler",
-    generated_sources: ["android.hardware.bluetooth@1.0-vts.profiler_genc++"],
-    generated_headers: ["android.hardware.bluetooth@1.0-vts.profiler_genc++_headers"],
-    export_generated_headers: ["android.hardware.bluetooth@1.0-vts.profiler_genc++_headers"],
-    shared_libs: [
-        "libbase",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.bluetooth@1.0",
-    ],
-}
diff --git a/bluetooth/1.0/Android.mk b/bluetooth/1.0/Android.mk
index 7924cee..d824d5d 100644
--- a/bluetooth/1.0/Android.mk
+++ b/bluetooth/1.0/Android.mk
@@ -8,7 +8,7 @@
 LOCAL_MODULE := android.hardware.bluetooth@1.0-java
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -87,7 +87,7 @@
 LOCAL_MODULE := android.hardware.bluetooth@1.0-java-static
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
diff --git a/bluetooth/1.0/default/vendor_interface.cc b/bluetooth/1.0/default/vendor_interface.cc
index f228982..7f14e68 100644
--- a/bluetooth/1.0/default/vendor_interface.cc
+++ b/bluetooth/1.0/default/vendor_interface.cc
@@ -277,7 +277,7 @@
                                          [this](int fd) { OnDataReady(fd); });
 
   // Initially, the power management is off.
-  lpm_wake_deasserted = false;
+  lpm_wake_deasserted = true;
 
   // Start configuring the firmware
   firmware_startup_timer_ = new FirmwareStartupTimer();
@@ -290,6 +290,9 @@
   fd_watcher_.StopWatchingFileDescriptor();
 
   if (lib_interface_ != nullptr) {
+    bt_vendor_lpm_mode_t mode = BT_VND_LPM_DISABLE;
+    lib_interface_->op(BT_VND_OP_LPM_SET_MODE, &mode);
+
     lib_interface_->op(BT_VND_OP_USERIAL_CLOSE, nullptr);
     uart_fd_ = INVALID_FD;
     int power_state = BT_VND_PWR_OFF;
@@ -352,9 +355,6 @@
   ALOGD("%s Calling StartLowPowerWatchdog()", __func__);
   fd_watcher_.ConfigureTimeout(std::chrono::milliseconds(lpm_timeout_ms),
                                [this]() { OnTimeout(); });
-
-  bt_vendor_lpm_wake_state_t wakeState = BT_VND_LPM_WAKE_ASSERT;
-  lib_interface_->op(BT_VND_OP_LPM_WAKE_SET_STATE, &wakeState);
 }
 
 void VendorInterface::OnTimeout() {
diff --git a/boot/1.0/Android.bp b/boot/1.0/Android.bp
index 2ac5498..7265cc2 100644
--- a/boot/1.0/Android.bp
+++ b/boot/1.0/Android.bp
@@ -1,12 +1,19 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.boot@1.0_hal",
+    srcs: [
+        "types.hal",
+        "IBootControl.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.boot@1.0_genc++",
     tools: ["hidl-gen"],
     cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.boot@1.0",
     srcs: [
-        "types.hal",
-        "IBootControl.hal",
+        ":android.hardware.boot@1.0_hal",
     ],
     out: [
         "android/hardware/boot/1.0/types.cpp",
@@ -19,8 +26,7 @@
     tools: ["hidl-gen"],
     cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.boot@1.0",
     srcs: [
-        "types.hal",
-        "IBootControl.hal",
+        ":android.hardware.boot@1.0_hal",
     ],
     out: [
         "android/hardware/boot/1.0/types.h",
@@ -54,106 +60,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.boot.vts.driver@1.0_genc++",
-    tools: ["hidl-gen", "vtsc"],
-    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.boot@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/boot/1.0/ $(genDir)/android/hardware/boot/1.0/",
-    srcs: [
-        "types.hal",
-        "IBootControl.hal",
-    ],
-    out: [
-        "android/hardware/boot/1.0/types.vts.cpp",
-        "android/hardware/boot/1.0/BootControl.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.boot.vts.driver@1.0_genc++_headers",
-    tools: ["hidl-gen", "vtsc"],
-    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.boot@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/boot/1.0/ $(genDir)/android/hardware/boot/1.0/",
-    srcs: [
-        "types.hal",
-        "IBootControl.hal",
-    ],
-    out: [
-        "android/hardware/boot/1.0/types.vts.h",
-        "android/hardware/boot/1.0/BootControl.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.boot.vts.driver@1.0",
-    generated_sources: ["android.hardware.boot.vts.driver@1.0_genc++"],
-    generated_headers: ["android.hardware.boot.vts.driver@1.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.boot.vts.driver@1.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.boot@1.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hidl.base@1.0",
-    ],
-}
-
-genrule {
-    name: "android.hardware.boot@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.boot@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/boot/1.0/ $(genDir)/android/hardware/boot/1.0/",
-    srcs: [
-        "types.hal",
-        "IBootControl.hal",
-    ],
-    out: [
-        "android/hardware/boot/1.0/types.vts.cpp",
-        "android/hardware/boot/1.0/BootControl.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.boot@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.boot@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/boot/1.0/ $(genDir)/android/hardware/boot/1.0/",
-    srcs: [
-        "types.hal",
-        "IBootControl.hal",
-    ],
-    out: [
-        "android/hardware/boot/1.0/types.vts.h",
-        "android/hardware/boot/1.0/BootControl.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.boot@1.0-vts.profiler",
-    generated_sources: ["android.hardware.boot@1.0-vts.profiler_genc++"],
-    generated_headers: ["android.hardware.boot@1.0-vts.profiler_genc++_headers"],
-    export_generated_headers: ["android.hardware.boot@1.0-vts.profiler_genc++_headers"],
-    shared_libs: [
-        "libbase",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.boot@1.0",
-    ],
-}
diff --git a/boot/1.0/Android.mk b/boot/1.0/Android.mk
index 6fa5e4b..b188acb 100644
--- a/boot/1.0/Android.mk
+++ b/boot/1.0/Android.mk
@@ -8,7 +8,7 @@
 LOCAL_MODULE := android.hardware.boot@1.0-java
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -83,7 +83,7 @@
 LOCAL_MODULE := android.hardware.boot@1.0-java-static
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
diff --git a/broadcastradio/1.0/Android.bp b/broadcastradio/1.0/Android.bp
index 51cfbe9..a58fbe1 100644
--- a/broadcastradio/1.0/Android.bp
+++ b/broadcastradio/1.0/Android.bp
@@ -1,5 +1,16 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.broadcastradio@1.0_hal",
+    srcs: [
+        "types.hal",
+        "IBroadcastRadio.hal",
+        "IBroadcastRadioFactory.hal",
+        "ITuner.hal",
+        "ITunerCallback.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.broadcastradio@1.0_genc++",
     tools: ["hidl-gen"],
@@ -78,130 +89,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.broadcastradio.vts.driver@1.0_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: [
-        "types.hal",
-        "IBroadcastRadio.hal",
-        "IBroadcastRadioFactory.hal",
-        "ITuner.hal",
-        "ITunerCallback.hal",
-    ],
-    out: [
-        "android/hardware/broadcastradio/1.0/types.vts.cpp",
-        "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",
-    ],
-}
-
-genrule {
-    name: "android.hardware.broadcastradio.vts.driver@1.0_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: [
-        "types.hal",
-        "IBroadcastRadio.hal",
-        "IBroadcastRadioFactory.hal",
-        "ITuner.hal",
-        "ITunerCallback.hal",
-    ],
-    out: [
-        "android/hardware/broadcastradio/1.0/types.vts.h",
-        "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",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.broadcastradio.vts.driver@1.0",
-    generated_sources: ["android.hardware.broadcastradio.vts.driver@1.0_genc++"],
-    generated_headers: ["android.hardware.broadcastradio.vts.driver@1.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.broadcastradio.vts.driver@1.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.broadcastradio@1.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hidl.base@1.0",
-    ],
-}
-
-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: [
-        "types.hal",
-        "IBroadcastRadio.hal",
-        "IBroadcastRadioFactory.hal",
-        "ITuner.hal",
-        "ITunerCallback.hal",
-    ],
-    out: [
-        "android/hardware/broadcastradio/1.0/types.vts.cpp",
-        "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",
-    ],
-}
-
-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: [
-        "types.hal",
-        "IBroadcastRadio.hal",
-        "IBroadcastRadioFactory.hal",
-        "ITuner.hal",
-        "ITunerCallback.hal",
-    ],
-    out: [
-        "android/hardware/broadcastradio/1.0/types.vts.h",
-        "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",
-    ],
-}
-
-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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.broadcastradio@1.0",
-    ],
-}
diff --git a/camera/common/1.0/Android.bp b/camera/common/1.0/Android.bp
index 7ab4ea9..9717963 100644
--- a/camera/common/1.0/Android.bp
+++ b/camera/common/1.0/Android.bp
@@ -1,5 +1,12 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.camera.common@1.0_hal",
+    srcs: [
+        "types.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.camera.common@1.0_genc++",
     tools: ["hidl-gen"],
@@ -44,95 +51,3 @@
         "libutils",
     ],
 }
-
-genrule {
-    name: "android.hardware.camera.common.vts.driver@1.0_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: [
-        "types.hal",
-    ],
-    out: [
-        "android/hardware/camera/common/1.0/types.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.camera.common.vts.driver@1.0_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: [
-        "types.hal",
-    ],
-    out: [
-        "android/hardware/camera/common/1.0/types.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.camera.common.vts.driver@1.0",
-    generated_sources: ["android.hardware.camera.common.vts.driver@1.0_genc++"],
-    generated_headers: ["android.hardware.camera.common.vts.driver@1.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.camera.common.vts.driver@1.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hardware.camera.common@1.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-    ],
-}
-
-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: [
-        "types.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: [
-        "types.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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hardware.camera.common@1.0",
-    ],
-}
diff --git a/camera/common/1.0/Android.mk b/camera/common/1.0/Android.mk
index 2e68dc0..9e05172 100644
--- a/camera/common/1.0/Android.mk
+++ b/camera/common/1.0/Android.mk
@@ -8,7 +8,7 @@
 LOCAL_MODULE := android.hardware.camera.common@1.0-java
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -191,7 +191,7 @@
 LOCAL_MODULE := android.hardware.camera.common@1.0-java-static
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
diff --git a/camera/device/1.0/Android.bp b/camera/device/1.0/Android.bp
index 16b3de4..b285ee0 100644
--- a/camera/device/1.0/Android.bp
+++ b/camera/device/1.0/Android.bp
@@ -1,5 +1,15 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.camera.device@1.0_hal",
+    srcs: [
+        "types.hal",
+        "ICameraDevice.hal",
+        "ICameraDeviceCallback.hal",
+        "ICameraDevicePreviewCallback.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.camera.device@1.0_genc++",
     tools: ["hidl-gen"],
@@ -76,131 +86,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.camera.device.vts.driver@1.0_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: [
-        "types.hal",
-        "ICameraDevice.hal",
-        "ICameraDeviceCallback.hal",
-        "ICameraDevicePreviewCallback.hal",
-    ],
-    out: [
-        "android/hardware/camera/device/1.0/types.vts.cpp",
-        "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",
-    ],
-}
-
-genrule {
-    name: "android.hardware.camera.device.vts.driver@1.0_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: [
-        "types.hal",
-        "ICameraDevice.hal",
-        "ICameraDeviceCallback.hal",
-        "ICameraDevicePreviewCallback.hal",
-    ],
-    out: [
-        "android/hardware/camera/device/1.0/types.vts.h",
-        "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",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.camera.device.vts.driver@1.0",
-    generated_sources: ["android.hardware.camera.device.vts.driver@1.0_genc++"],
-    generated_headers: ["android.hardware.camera.device.vts.driver@1.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.camera.device.vts.driver@1.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hardware.camera.common@1.0",
-        "android.hardware.graphics.allocator@2.0",
-        "android.hardware.graphics.common@1.0",
-        "android.hidl.base@1.0",
-        "android.hardware.camera.device@1.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hardware.camera.common@1.0",
-        "android.hardware.graphics.allocator@2.0",
-        "android.hardware.graphics.common@1.0",
-        "android.hidl.base@1.0",
-    ],
-}
-
-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: [
-        "types.hal",
-        "ICameraDevice.hal",
-        "ICameraDeviceCallback.hal",
-        "ICameraDevicePreviewCallback.hal",
-    ],
-    out: [
-        "android/hardware/camera/device/1.0/types.vts.cpp",
-        "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",
-    ],
-}
-
-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: [
-        "types.hal",
-        "ICameraDevice.hal",
-        "ICameraDeviceCallback.hal",
-        "ICameraDevicePreviewCallback.hal",
-    ],
-    out: [
-        "android/hardware/camera/device/1.0/types.vts.h",
-        "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",
-    ],
-}
-
-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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hardware.camera.common@1.0",
-        "android.hardware.graphics.allocator@2.0",
-        "android.hardware.graphics.common@1.0",
-        "android.hidl.base@1.0",
-        "android.hardware.camera.device@1.0",
-    ],
-}
diff --git a/camera/device/3.2/Android.bp b/camera/device/3.2/Android.bp
index 7c740ae..1bc11ed 100644
--- a/camera/device/3.2/Android.bp
+++ b/camera/device/3.2/Android.bp
@@ -1,5 +1,15 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.camera.device@3.2_hal",
+    srcs: [
+        "types.hal",
+        "ICameraDevice.hal",
+        "ICameraDeviceCallback.hal",
+        "ICameraDeviceSession.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.camera.device@3.2_genc++",
     tools: ["hidl-gen"],
@@ -76,131 +86,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.camera.device.vts.driver@3.2_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: [
-        "types.hal",
-        "ICameraDevice.hal",
-        "ICameraDeviceCallback.hal",
-        "ICameraDeviceSession.hal",
-    ],
-    out: [
-        "android/hardware/camera/device/3.2/types.vts.cpp",
-        "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",
-    ],
-}
-
-genrule {
-    name: "android.hardware.camera.device.vts.driver@3.2_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: [
-        "types.hal",
-        "ICameraDevice.hal",
-        "ICameraDeviceCallback.hal",
-        "ICameraDeviceSession.hal",
-    ],
-    out: [
-        "android/hardware/camera/device/3.2/types.vts.h",
-        "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",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.camera.device.vts.driver@3.2",
-    generated_sources: ["android.hardware.camera.device.vts.driver@3.2_genc++"],
-    generated_headers: ["android.hardware.camera.device.vts.driver@3.2_genc++_headers"],
-    export_generated_headers: ["android.hardware.camera.device.vts.driver@3.2_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hardware.camera.common@1.0",
-        "android.hardware.graphics.allocator@2.0",
-        "android.hardware.graphics.common@1.0",
-        "android.hidl.base@1.0",
-        "android.hardware.camera.device@3.2",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hardware.camera.common@1.0",
-        "android.hardware.graphics.allocator@2.0",
-        "android.hardware.graphics.common@1.0",
-        "android.hidl.base@1.0",
-    ],
-}
-
-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: [
-        "types.hal",
-        "ICameraDevice.hal",
-        "ICameraDeviceCallback.hal",
-        "ICameraDeviceSession.hal",
-    ],
-    out: [
-        "android/hardware/camera/device/3.2/types.vts.cpp",
-        "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",
-    ],
-}
-
-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: [
-        "types.hal",
-        "ICameraDevice.hal",
-        "ICameraDeviceCallback.hal",
-        "ICameraDeviceSession.hal",
-    ],
-    out: [
-        "android/hardware/camera/device/3.2/types.vts.h",
-        "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",
-    ],
-}
-
-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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hardware.camera.common@1.0",
-        "android.hardware.graphics.allocator@2.0",
-        "android.hardware.graphics.common@1.0",
-        "android.hidl.base@1.0",
-        "android.hardware.camera.device@3.2",
-    ],
-}
diff --git a/camera/metadata/3.2/Android.bp b/camera/metadata/3.2/Android.bp
index 448c655..fa319e9 100644
--- a/camera/metadata/3.2/Android.bp
+++ b/camera/metadata/3.2/Android.bp
@@ -1,5 +1,12 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.camera.metadata@3.2_hal",
+    srcs: [
+        "types.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.camera.metadata@3.2_genc++",
     tools: ["hidl-gen"],
@@ -44,95 +51,3 @@
         "libutils",
     ],
 }
-
-genrule {
-    name: "android.hardware.camera.metadata.vts.driver@3.2_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: [
-        "types.hal",
-    ],
-    out: [
-        "android/hardware/camera/metadata/3.2/types.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.camera.metadata.vts.driver@3.2_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: [
-        "types.hal",
-    ],
-    out: [
-        "android/hardware/camera/metadata/3.2/types.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.camera.metadata.vts.driver@3.2",
-    generated_sources: ["android.hardware.camera.metadata.vts.driver@3.2_genc++"],
-    generated_headers: ["android.hardware.camera.metadata.vts.driver@3.2_genc++_headers"],
-    export_generated_headers: ["android.hardware.camera.metadata.vts.driver@3.2_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hardware.camera.metadata@3.2",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-    ],
-}
-
-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: [
-        "types.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: [
-        "types.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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hardware.camera.metadata@3.2",
-    ],
-}
diff --git a/camera/metadata/3.2/Android.mk b/camera/metadata/3.2/Android.mk
index 6604ccd..86cee91 100644
--- a/camera/metadata/3.2/Android.mk
+++ b/camera/metadata/3.2/Android.mk
@@ -8,7 +8,7 @@
 LOCAL_MODULE := android.hardware.camera.metadata@3.2-java
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -1236,7 +1236,7 @@
 LOCAL_MODULE := android.hardware.camera.metadata@3.2-java-static
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
diff --git a/camera/provider/2.4/Android.bp b/camera/provider/2.4/Android.bp
index 3705086..1874cd5 100644
--- a/camera/provider/2.4/Android.bp
+++ b/camera/provider/2.4/Android.bp
@@ -1,5 +1,13 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.camera.provider@2.4_hal",
+    srcs: [
+        "ICameraProvider.hal",
+        "ICameraProviderCallback.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.camera.provider@2.4_genc++",
     tools: ["hidl-gen"],
@@ -64,115 +72,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.camera.provider.vts.driver@2.4_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: [
-        "ICameraProvider.hal",
-        "ICameraProviderCallback.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.vts.driver@2.4_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: [
-        "ICameraProvider.hal",
-        "ICameraProviderCallback.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.vts.driver@2.4",
-    generated_sources: ["android.hardware.camera.provider.vts.driver@2.4_genc++"],
-    generated_headers: ["android.hardware.camera.provider.vts.driver@2.4_genc++_headers"],
-    export_generated_headers: ["android.hardware.camera.provider.vts.driver@2.4_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hardware.camera.common@1.0",
-        "android.hardware.camera.device@1.0",
-        "android.hardware.camera.device@3.2",
-        "android.hidl.base@1.0",
-        "android.hardware.camera.provider@2.4",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hardware.camera.common@1.0",
-        "android.hardware.camera.device@1.0",
-        "android.hardware.camera.device@3.2",
-        "android.hidl.base@1.0",
-    ],
-}
-
-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: [
-        "ICameraProvider.hal",
-        "ICameraProviderCallback.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: [
-        "ICameraProvider.hal",
-        "ICameraProviderCallback.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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hardware.camera.common@1.0",
-        "android.hardware.camera.device@1.0",
-        "android.hardware.camera.device@3.2",
-        "android.hidl.base@1.0",
-        "android.hardware.camera.provider@2.4",
-    ],
-}
diff --git a/configstore/1.0/Android.bp b/configstore/1.0/Android.bp
index d0e3122..5b3242e 100644
--- a/configstore/1.0/Android.bp
+++ b/configstore/1.0/Android.bp
@@ -1,5 +1,13 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.configstore@1.0_hal",
+    srcs: [
+        "types.hal",
+        "ISurfaceFlingerConfigs.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.configstore@1.0_genc++",
     tools: ["hidl-gen"],
@@ -54,106 +62,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.configstore.vts.driver@1.0_genc++",
-    tools: ["hidl-gen", "vtsc"],
-    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.configstore@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/configstore/1.0/ $(genDir)/android/hardware/configstore/1.0/",
-    srcs: [
-        "types.hal",
-        "ISurfaceFlingerConfigs.hal",
-    ],
-    out: [
-        "android/hardware/configstore/1.0/types.vts.cpp",
-        "android/hardware/configstore/1.0/SurfaceFlingerConfigs.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.configstore.vts.driver@1.0_genc++_headers",
-    tools: ["hidl-gen", "vtsc"],
-    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.configstore@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/configstore/1.0/ $(genDir)/android/hardware/configstore/1.0/",
-    srcs: [
-        "types.hal",
-        "ISurfaceFlingerConfigs.hal",
-    ],
-    out: [
-        "android/hardware/configstore/1.0/types.vts.h",
-        "android/hardware/configstore/1.0/SurfaceFlingerConfigs.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.configstore.vts.driver@1.0",
-    generated_sources: ["android.hardware.configstore.vts.driver@1.0_genc++"],
-    generated_headers: ["android.hardware.configstore.vts.driver@1.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.configstore.vts.driver@1.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.configstore@1.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hidl.base@1.0",
-    ],
-}
-
-genrule {
-    name: "android.hardware.configstore@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.configstore@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/configstore/1.0/ $(genDir)/android/hardware/configstore/1.0/",
-    srcs: [
-        "types.hal",
-        "ISurfaceFlingerConfigs.hal",
-    ],
-    out: [
-        "android/hardware/configstore/1.0/types.vts.cpp",
-        "android/hardware/configstore/1.0/SurfaceFlingerConfigs.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.configstore@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.configstore@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/configstore/1.0/ $(genDir)/android/hardware/configstore/1.0/",
-    srcs: [
-        "types.hal",
-        "ISurfaceFlingerConfigs.hal",
-    ],
-    out: [
-        "android/hardware/configstore/1.0/types.vts.h",
-        "android/hardware/configstore/1.0/SurfaceFlingerConfigs.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.configstore@1.0-vts.profiler",
-    generated_sources: ["android.hardware.configstore@1.0-vts.profiler_genc++"],
-    generated_headers: ["android.hardware.configstore@1.0-vts.profiler_genc++_headers"],
-    export_generated_headers: ["android.hardware.configstore@1.0-vts.profiler_genc++_headers"],
-    shared_libs: [
-        "libbase",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.configstore@1.0",
-    ],
-}
diff --git a/configstore/1.0/Android.mk b/configstore/1.0/Android.mk
index fd2718e..010d509 100644
--- a/configstore/1.0/Android.mk
+++ b/configstore/1.0/Android.mk
@@ -8,7 +8,7 @@
 LOCAL_MODULE := android.hardware.configstore@1.0-java
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -159,7 +159,7 @@
 LOCAL_MODULE := android.hardware.configstore@1.0-java-static
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
diff --git a/contexthub/1.0/Android.bp b/contexthub/1.0/Android.bp
index e25c70d..556894d 100644
--- a/contexthub/1.0/Android.bp
+++ b/contexthub/1.0/Android.bp
@@ -1,5 +1,14 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.contexthub@1.0_hal",
+    srcs: [
+        "types.hal",
+        "IContexthub.hal",
+        "IContexthubCallback.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.contexthub@1.0_genc++",
     tools: ["hidl-gen"],
@@ -62,114 +71,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.contexthub.vts.driver@1.0_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: [
-        "types.hal",
-        "IContexthub.hal",
-        "IContexthubCallback.hal",
-    ],
-    out: [
-        "android/hardware/contexthub/1.0/types.vts.cpp",
-        "android/hardware/contexthub/1.0/Contexthub.vts.cpp",
-        "android/hardware/contexthub/1.0/ContexthubCallback.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.contexthub.vts.driver@1.0_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: [
-        "types.hal",
-        "IContexthub.hal",
-        "IContexthubCallback.hal",
-    ],
-    out: [
-        "android/hardware/contexthub/1.0/types.vts.h",
-        "android/hardware/contexthub/1.0/Contexthub.vts.h",
-        "android/hardware/contexthub/1.0/ContexthubCallback.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.contexthub.vts.driver@1.0",
-    generated_sources: ["android.hardware.contexthub.vts.driver@1.0_genc++"],
-    generated_headers: ["android.hardware.contexthub.vts.driver@1.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.contexthub.vts.driver@1.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.contexthub@1.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hidl.base@1.0",
-    ],
-}
-
-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: [
-        "types.hal",
-        "IContexthub.hal",
-        "IContexthubCallback.hal",
-    ],
-    out: [
-        "android/hardware/contexthub/1.0/types.vts.cpp",
-        "android/hardware/contexthub/1.0/Contexthub.vts.cpp",
-        "android/hardware/contexthub/1.0/ContexthubCallback.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: [
-        "types.hal",
-        "IContexthub.hal",
-        "IContexthubCallback.hal",
-    ],
-    out: [
-        "android/hardware/contexthub/1.0/types.vts.h",
-        "android/hardware/contexthub/1.0/Contexthub.vts.h",
-        "android/hardware/contexthub/1.0/ContexthubCallback.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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.contexthub@1.0",
-    ],
-}
diff --git a/contexthub/1.0/Android.mk b/contexthub/1.0/Android.mk
index c73c5c4..a053986 100644
--- a/contexthub/1.0/Android.mk
+++ b/contexthub/1.0/Android.mk
@@ -8,7 +8,7 @@
 LOCAL_MODULE := android.hardware.contexthub@1.0-java
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -334,7 +334,7 @@
 LOCAL_MODULE := android.hardware.contexthub@1.0-java-static
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
diff --git a/drm/1.0/Android.bp b/drm/1.0/Android.bp
index 19060d8..d96ba14 100644
--- a/drm/1.0/Android.bp
+++ b/drm/1.0/Android.bp
@@ -1,5 +1,17 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.drm@1.0_hal",
+    srcs: [
+        "types.hal",
+        "ICryptoFactory.hal",
+        "ICryptoPlugin.hal",
+        "IDrmFactory.hal",
+        "IDrmPlugin.hal",
+        "IDrmPluginListener.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.drm@1.0_genc++",
     tools: ["hidl-gen"],
@@ -86,138 +98,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.drm.vts.driver@1.0_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: [
-        "types.hal",
-        "ICryptoFactory.hal",
-        "ICryptoPlugin.hal",
-        "IDrmFactory.hal",
-        "IDrmPlugin.hal",
-        "IDrmPluginListener.hal",
-    ],
-    out: [
-        "android/hardware/drm/1.0/types.vts.cpp",
-        "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",
-    ],
-}
-
-genrule {
-    name: "android.hardware.drm.vts.driver@1.0_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: [
-        "types.hal",
-        "ICryptoFactory.hal",
-        "ICryptoPlugin.hal",
-        "IDrmFactory.hal",
-        "IDrmPlugin.hal",
-        "IDrmPluginListener.hal",
-    ],
-    out: [
-        "android/hardware/drm/1.0/types.vts.h",
-        "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",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.drm.vts.driver@1.0",
-    generated_sources: ["android.hardware.drm.vts.driver@1.0_genc++"],
-    generated_headers: ["android.hardware.drm.vts.driver@1.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.drm.vts.driver@1.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.drm@1.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hidl.base@1.0",
-    ],
-}
-
-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: [
-        "types.hal",
-        "ICryptoFactory.hal",
-        "ICryptoPlugin.hal",
-        "IDrmFactory.hal",
-        "IDrmPlugin.hal",
-        "IDrmPluginListener.hal",
-    ],
-    out: [
-        "android/hardware/drm/1.0/types.vts.cpp",
-        "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",
-    ],
-}
-
-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: [
-        "types.hal",
-        "ICryptoFactory.hal",
-        "ICryptoPlugin.hal",
-        "IDrmFactory.hal",
-        "IDrmPlugin.hal",
-        "IDrmPluginListener.hal",
-    ],
-    out: [
-        "android/hardware/drm/1.0/types.vts.h",
-        "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",
-    ],
-}
-
-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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.drm@1.0",
-    ],
-}
diff --git a/dumpstate/1.0/Android.bp b/dumpstate/1.0/Android.bp
index 24fa1f8..127b22a 100644
--- a/dumpstate/1.0/Android.bp
+++ b/dumpstate/1.0/Android.bp
@@ -1,5 +1,12 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.dumpstate@1.0_hal",
+    srcs: [
+        "IDumpstateDevice.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.dumpstate@1.0_genc++",
     tools: ["hidl-gen"],
@@ -50,98 +57,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.dumpstate.vts.driver@1.0_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: [
-        "IDumpstateDevice.hal",
-    ],
-    out: [
-        "android/hardware/dumpstate/1.0/DumpstateDevice.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.dumpstate.vts.driver@1.0_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: [
-        "IDumpstateDevice.hal",
-    ],
-    out: [
-        "android/hardware/dumpstate/1.0/DumpstateDevice.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.dumpstate.vts.driver@1.0",
-    generated_sources: ["android.hardware.dumpstate.vts.driver@1.0_genc++"],
-    generated_headers: ["android.hardware.dumpstate.vts.driver@1.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.dumpstate.vts.driver@1.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.dumpstate@1.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hidl.base@1.0",
-    ],
-}
-
-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: [
-        "IDumpstateDevice.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: [
-        "IDumpstateDevice.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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.dumpstate@1.0",
-    ],
-}
diff --git a/evs/1.0/Android.bp b/evs/1.0/Android.bp
index a92caf8..7c23996 100644
--- a/evs/1.0/Android.bp
+++ b/evs/1.0/Android.bp
@@ -1,5 +1,16 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.evs@1.0_hal",
+    srcs: [
+        "types.hal",
+        "IEvsCamera.hal",
+        "IEvsCameraStream.hal",
+        "IEvsDisplay.hal",
+        "IEvsEnumerator.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.evs@1.0_genc++",
     tools: ["hidl-gen"],
@@ -78,130 +89,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.evs.vts.driver@1.0_genc++",
-    tools: ["hidl-gen", "vtsc"],
-    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.evs@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/evs/1.0/ $(genDir)/android/hardware/evs/1.0/",
-    srcs: [
-        "types.hal",
-        "IEvsCamera.hal",
-        "IEvsCameraStream.hal",
-        "IEvsDisplay.hal",
-        "IEvsEnumerator.hal",
-    ],
-    out: [
-        "android/hardware/evs/1.0/types.vts.cpp",
-        "android/hardware/evs/1.0/EvsCamera.vts.cpp",
-        "android/hardware/evs/1.0/EvsCameraStream.vts.cpp",
-        "android/hardware/evs/1.0/EvsDisplay.vts.cpp",
-        "android/hardware/evs/1.0/EvsEnumerator.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.evs.vts.driver@1.0_genc++_headers",
-    tools: ["hidl-gen", "vtsc"],
-    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.evs@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/evs/1.0/ $(genDir)/android/hardware/evs/1.0/",
-    srcs: [
-        "types.hal",
-        "IEvsCamera.hal",
-        "IEvsCameraStream.hal",
-        "IEvsDisplay.hal",
-        "IEvsEnumerator.hal",
-    ],
-    out: [
-        "android/hardware/evs/1.0/types.vts.h",
-        "android/hardware/evs/1.0/EvsCamera.vts.h",
-        "android/hardware/evs/1.0/EvsCameraStream.vts.h",
-        "android/hardware/evs/1.0/EvsDisplay.vts.h",
-        "android/hardware/evs/1.0/EvsEnumerator.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.evs.vts.driver@1.0",
-    generated_sources: ["android.hardware.evs.vts.driver@1.0_genc++"],
-    generated_headers: ["android.hardware.evs.vts.driver@1.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.evs.vts.driver@1.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.evs@1.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hidl.base@1.0",
-    ],
-}
-
-genrule {
-    name: "android.hardware.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.evs@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/evs/1.0/ $(genDir)/android/hardware/evs/1.0/",
-    srcs: [
-        "types.hal",
-        "IEvsCamera.hal",
-        "IEvsCameraStream.hal",
-        "IEvsDisplay.hal",
-        "IEvsEnumerator.hal",
-    ],
-    out: [
-        "android/hardware/evs/1.0/types.vts.cpp",
-        "android/hardware/evs/1.0/EvsCamera.vts.cpp",
-        "android/hardware/evs/1.0/EvsCameraStream.vts.cpp",
-        "android/hardware/evs/1.0/EvsDisplay.vts.cpp",
-        "android/hardware/evs/1.0/EvsEnumerator.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.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.evs@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/evs/1.0/ $(genDir)/android/hardware/evs/1.0/",
-    srcs: [
-        "types.hal",
-        "IEvsCamera.hal",
-        "IEvsCameraStream.hal",
-        "IEvsDisplay.hal",
-        "IEvsEnumerator.hal",
-    ],
-    out: [
-        "android/hardware/evs/1.0/types.vts.h",
-        "android/hardware/evs/1.0/EvsCamera.vts.h",
-        "android/hardware/evs/1.0/EvsCameraStream.vts.h",
-        "android/hardware/evs/1.0/EvsDisplay.vts.h",
-        "android/hardware/evs/1.0/EvsEnumerator.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.evs@1.0-vts.profiler",
-    generated_sources: ["android.hardware.evs@1.0-vts.profiler_genc++"],
-    generated_headers: ["android.hardware.evs@1.0-vts.profiler_genc++_headers"],
-    export_generated_headers: ["android.hardware.evs@1.0-vts.profiler_genc++_headers"],
-    shared_libs: [
-        "libbase",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.evs@1.0",
-    ],
-}
diff --git a/evs/1.0/default/EvsCamera.cpp b/evs/1.0/default/EvsCamera.cpp
index c62f7b6..a539b23 100644
--- a/evs/1.0/default/EvsCamera.cpp
+++ b/evs/1.0/default/EvsCamera.cpp
@@ -286,7 +286,7 @@
         buffer_handle_t memHandle = nullptr;
         status_t result = alloc.allocate(mWidth, mHeight,
                                          mFormat, 1,
-                                         mUsage,
+                                         mUsage, mUsage,
                                          &memHandle, &mStride, 0, "EvsCamera");
         if (result != NO_ERROR) {
             ALOGE("Error %d allocating %d x %d graphics buffer", result, mWidth, mHeight);
diff --git a/evs/1.0/default/EvsDisplay.cpp b/evs/1.0/default/EvsDisplay.cpp
index dff4c49..7208395 100644
--- a/evs/1.0/default/EvsDisplay.cpp
+++ b/evs/1.0/default/EvsDisplay.cpp
@@ -149,7 +149,8 @@
         GraphicBufferAllocator& alloc(GraphicBufferAllocator::get());
         status_t result = alloc.allocate(mBuffer.width, mBuffer.height,
                                          mBuffer.format, 1, mBuffer.usage,
-                                         &handle, &mBuffer.stride,
+                                         mBuffer.usage, &handle,
+                                         &mBuffer.stride,
                                          0, "EvsDisplay");
         if (result != NO_ERROR) {
             ALOGE("Error %d allocating %d x %d graphics buffer",
diff --git a/example/extension/light/2.0/Android.bp b/example/extension/light/2.0/Android.bp
index 2289040..a658356 100644
--- a/example/extension/light/2.0/Android.bp
+++ b/example/extension/light/2.0/Android.bp
@@ -1,5 +1,13 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.example.extension.light@2.0_hal",
+    srcs: [
+        "types.hal",
+        "IExtLight.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.example.extension.light@2.0_genc++",
     tools: ["hidl-gen"],
@@ -54,106 +62,3 @@
         "android.hardware.light@2.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.example.extension.light.vts.driver@2.0_genc++",
-    tools: ["hidl-gen", "vtsc"],
-    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.example.extension.light@2.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/example/extension/light/2.0/ $(genDir)/android/hardware/example/extension/light/2.0/",
-    srcs: [
-        "types.hal",
-        "IExtLight.hal",
-    ],
-    out: [
-        "android/hardware/example/extension/light/2.0/types.vts.cpp",
-        "android/hardware/example/extension/light/2.0/ExtLight.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.example.extension.light.vts.driver@2.0_genc++_headers",
-    tools: ["hidl-gen", "vtsc"],
-    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.example.extension.light@2.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/example/extension/light/2.0/ $(genDir)/android/hardware/example/extension/light/2.0/",
-    srcs: [
-        "types.hal",
-        "IExtLight.hal",
-    ],
-    out: [
-        "android/hardware/example/extension/light/2.0/types.vts.h",
-        "android/hardware/example/extension/light/2.0/ExtLight.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.example.extension.light.vts.driver@2.0",
-    generated_sources: ["android.hardware.example.extension.light.vts.driver@2.0_genc++"],
-    generated_headers: ["android.hardware.example.extension.light.vts.driver@2.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.example.extension.light.vts.driver@2.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hardware.light@2.0",
-        "android.hardware.example.extension.light@2.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hardware.light@2.0",
-    ],
-}
-
-genrule {
-    name: "android.hardware.example.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.example.extension.light@2.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/example/extension/light/2.0/ $(genDir)/android/hardware/example/extension/light/2.0/",
-    srcs: [
-        "types.hal",
-        "IExtLight.hal",
-    ],
-    out: [
-        "android/hardware/example/extension/light/2.0/types.vts.cpp",
-        "android/hardware/example/extension/light/2.0/ExtLight.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.example.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.example.extension.light@2.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/example/extension/light/2.0/ $(genDir)/android/hardware/example/extension/light/2.0/",
-    srcs: [
-        "types.hal",
-        "IExtLight.hal",
-    ],
-    out: [
-        "android/hardware/example/extension/light/2.0/types.vts.h",
-        "android/hardware/example/extension/light/2.0/ExtLight.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.example.extension.light@2.0-vts.profiler",
-    generated_sources: ["android.hardware.example.extension.light@2.0-vts.profiler_genc++"],
-    generated_headers: ["android.hardware.example.extension.light@2.0-vts.profiler_genc++_headers"],
-    export_generated_headers: ["android.hardware.example.extension.light@2.0-vts.profiler_genc++_headers"],
-    shared_libs: [
-        "libbase",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hardware.light@2.0",
-        "android.hardware.example.extension.light@2.0",
-    ],
-}
diff --git a/example/extension/light/2.0/Android.mk b/example/extension/light/2.0/Android.mk
index deb7a2a..0b79747 100644
--- a/example/extension/light/2.0/Android.mk
+++ b/example/extension/light/2.0/Android.mk
@@ -8,7 +8,7 @@
 LOCAL_MODULE := android.hardware.example.extension.light@2.0-java
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -103,7 +103,7 @@
 LOCAL_MODULE := android.hardware.example.extension.light@2.0-java-static
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
diff --git a/gatekeeper/1.0/Android.bp b/gatekeeper/1.0/Android.bp
index 9e2203b..89e2f39 100644
--- a/gatekeeper/1.0/Android.bp
+++ b/gatekeeper/1.0/Android.bp
@@ -1,5 +1,13 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.gatekeeper@1.0_hal",
+    srcs: [
+        "types.hal",
+        "IGatekeeper.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.gatekeeper@1.0_genc++",
     tools: ["hidl-gen"],
@@ -54,106 +62,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.gatekeeper.vts.driver@1.0_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: [
-        "types.hal",
-        "IGatekeeper.hal",
-    ],
-    out: [
-        "android/hardware/gatekeeper/1.0/types.vts.cpp",
-        "android/hardware/gatekeeper/1.0/Gatekeeper.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.gatekeeper.vts.driver@1.0_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: [
-        "types.hal",
-        "IGatekeeper.hal",
-    ],
-    out: [
-        "android/hardware/gatekeeper/1.0/types.vts.h",
-        "android/hardware/gatekeeper/1.0/Gatekeeper.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.gatekeeper.vts.driver@1.0",
-    generated_sources: ["android.hardware.gatekeeper.vts.driver@1.0_genc++"],
-    generated_headers: ["android.hardware.gatekeeper.vts.driver@1.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.gatekeeper.vts.driver@1.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.gatekeeper@1.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hidl.base@1.0",
-    ],
-}
-
-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: [
-        "types.hal",
-        "IGatekeeper.hal",
-    ],
-    out: [
-        "android/hardware/gatekeeper/1.0/types.vts.cpp",
-        "android/hardware/gatekeeper/1.0/Gatekeeper.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: [
-        "types.hal",
-        "IGatekeeper.hal",
-    ],
-    out: [
-        "android/hardware/gatekeeper/1.0/types.vts.h",
-        "android/hardware/gatekeeper/1.0/Gatekeeper.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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.gatekeeper@1.0",
-    ],
-}
diff --git a/gatekeeper/1.0/Android.mk b/gatekeeper/1.0/Android.mk
index 5d66b45..70206ff 100644
--- a/gatekeeper/1.0/Android.mk
+++ b/gatekeeper/1.0/Android.mk
@@ -8,7 +8,7 @@
 LOCAL_MODULE := android.hardware.gatekeeper@1.0-java
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -83,7 +83,7 @@
 LOCAL_MODULE := android.hardware.gatekeeper@1.0-java-static
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
diff --git a/gnss/1.0/Android.bp b/gnss/1.0/Android.bp
index 4fc3038..b76b4c5 100644
--- a/gnss/1.0/Android.bp
+++ b/gnss/1.0/Android.bp
@@ -1,5 +1,32 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.gnss@1.0_hal",
+    srcs: [
+        "types.hal",
+        "IAGnss.hal",
+        "IAGnssCallback.hal",
+        "IAGnssRil.hal",
+        "IAGnssRilCallback.hal",
+        "IGnss.hal",
+        "IGnssBatching.hal",
+        "IGnssBatchingCallback.hal",
+        "IGnssCallback.hal",
+        "IGnssConfiguration.hal",
+        "IGnssDebug.hal",
+        "IGnssGeofenceCallback.hal",
+        "IGnssGeofencing.hal",
+        "IGnssMeasurement.hal",
+        "IGnssMeasurementCallback.hal",
+        "IGnssNavigationMessage.hal",
+        "IGnssNavigationMessageCallback.hal",
+        "IGnssNi.hal",
+        "IGnssNiCallback.hal",
+        "IGnssXtra.hal",
+        "IGnssXtraCallback.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.gnss@1.0_genc++",
     tools: ["hidl-gen"],
@@ -206,258 +233,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.gnss.vts.driver@1.0_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: [
-        "types.hal",
-        "IAGnss.hal",
-        "IAGnssCallback.hal",
-        "IAGnssRil.hal",
-        "IAGnssRilCallback.hal",
-        "IGnss.hal",
-        "IGnssBatching.hal",
-        "IGnssBatchingCallback.hal",
-        "IGnssCallback.hal",
-        "IGnssConfiguration.hal",
-        "IGnssDebug.hal",
-        "IGnssGeofenceCallback.hal",
-        "IGnssGeofencing.hal",
-        "IGnssMeasurement.hal",
-        "IGnssMeasurementCallback.hal",
-        "IGnssNavigationMessage.hal",
-        "IGnssNavigationMessageCallback.hal",
-        "IGnssNi.hal",
-        "IGnssNiCallback.hal",
-        "IGnssXtra.hal",
-        "IGnssXtraCallback.hal",
-    ],
-    out: [
-        "android/hardware/gnss/1.0/types.vts.cpp",
-        "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",
-    ],
-}
-
-genrule {
-    name: "android.hardware.gnss.vts.driver@1.0_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: [
-        "types.hal",
-        "IAGnss.hal",
-        "IAGnssCallback.hal",
-        "IAGnssRil.hal",
-        "IAGnssRilCallback.hal",
-        "IGnss.hal",
-        "IGnssBatching.hal",
-        "IGnssBatchingCallback.hal",
-        "IGnssCallback.hal",
-        "IGnssConfiguration.hal",
-        "IGnssDebug.hal",
-        "IGnssGeofenceCallback.hal",
-        "IGnssGeofencing.hal",
-        "IGnssMeasurement.hal",
-        "IGnssMeasurementCallback.hal",
-        "IGnssNavigationMessage.hal",
-        "IGnssNavigationMessageCallback.hal",
-        "IGnssNi.hal",
-        "IGnssNiCallback.hal",
-        "IGnssXtra.hal",
-        "IGnssXtraCallback.hal",
-    ],
-    out: [
-        "android/hardware/gnss/1.0/types.vts.h",
-        "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",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.gnss.vts.driver@1.0",
-    generated_sources: ["android.hardware.gnss.vts.driver@1.0_genc++"],
-    generated_headers: ["android.hardware.gnss.vts.driver@1.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.gnss.vts.driver@1.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.gnss@1.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hidl.base@1.0",
-    ],
-}
-
-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: [
-        "types.hal",
-        "IAGnss.hal",
-        "IAGnssCallback.hal",
-        "IAGnssRil.hal",
-        "IAGnssRilCallback.hal",
-        "IGnss.hal",
-        "IGnssBatching.hal",
-        "IGnssBatchingCallback.hal",
-        "IGnssCallback.hal",
-        "IGnssConfiguration.hal",
-        "IGnssDebug.hal",
-        "IGnssGeofenceCallback.hal",
-        "IGnssGeofencing.hal",
-        "IGnssMeasurement.hal",
-        "IGnssMeasurementCallback.hal",
-        "IGnssNavigationMessage.hal",
-        "IGnssNavigationMessageCallback.hal",
-        "IGnssNi.hal",
-        "IGnssNiCallback.hal",
-        "IGnssXtra.hal",
-        "IGnssXtraCallback.hal",
-    ],
-    out: [
-        "android/hardware/gnss/1.0/types.vts.cpp",
-        "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",
-    ],
-}
-
-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: [
-        "types.hal",
-        "IAGnss.hal",
-        "IAGnssCallback.hal",
-        "IAGnssRil.hal",
-        "IAGnssRilCallback.hal",
-        "IGnss.hal",
-        "IGnssBatching.hal",
-        "IGnssBatchingCallback.hal",
-        "IGnssCallback.hal",
-        "IGnssConfiguration.hal",
-        "IGnssDebug.hal",
-        "IGnssGeofenceCallback.hal",
-        "IGnssGeofencing.hal",
-        "IGnssMeasurement.hal",
-        "IGnssMeasurementCallback.hal",
-        "IGnssNavigationMessage.hal",
-        "IGnssNavigationMessageCallback.hal",
-        "IGnssNi.hal",
-        "IGnssNiCallback.hal",
-        "IGnssXtra.hal",
-        "IGnssXtraCallback.hal",
-    ],
-    out: [
-        "android/hardware/gnss/1.0/types.vts.h",
-        "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",
-    ],
-}
-
-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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.gnss@1.0",
-    ],
-}
diff --git a/gnss/1.0/Android.mk b/gnss/1.0/Android.mk
index 98c547c..5985c87 100644
--- a/gnss/1.0/Android.mk
+++ b/gnss/1.0/Android.mk
@@ -8,7 +8,7 @@
 LOCAL_MODULE := android.hardware.gnss@1.0-java
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -530,7 +530,7 @@
 LOCAL_MODULE := android.hardware.gnss@1.0-java-static
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -1052,7 +1052,7 @@
 LOCAL_MODULE := android.hardware.gnss@1.0-java-constants
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 #
diff --git a/gnss/1.0/IGnssBatching.hal b/gnss/1.0/IGnssBatching.hal
index 4d5affa..6f2dde6 100644
--- a/gnss/1.0/IGnssBatching.hal
+++ b/gnss/1.0/IGnssBatching.hal
@@ -136,7 +136,8 @@
 
     /**
      * Closes the interface. If any batch operations are in progress,
-     * they should be stopped.
+     * they must be stopped.  If any locations are in the hardware batch, they
+     * must be deleted (and not sent via callback.)
      *
      * init() may be called again, after this, if the interface is to be restored
      */
diff --git a/gnss/1.0/default/Gnss.cpp b/gnss/1.0/default/Gnss.cpp
index 19e22c2..a2a99a0 100644
--- a/gnss/1.0/default/Gnss.cpp
+++ b/gnss/1.0/default/Gnss.cpp
@@ -28,6 +28,8 @@
 std::vector<std::unique_ptr<ThreadFuncArgs>> Gnss::sThreadFuncArgsList;
 sp<IGnssCallback> Gnss::sGnssCbIface = nullptr;
 bool Gnss::sInterfaceExists = false;
+bool Gnss::sWakelockHeldGnss = false;
+bool Gnss::sWakelockHeldFused = false;
 
 GpsCallbacks Gnss::sGnssCb = {
     .size = sizeof(GpsCallbacks),
@@ -253,21 +255,62 @@
 }
 
 void Gnss::acquireWakelockCb() {
-    if (sGnssCbIface == nullptr) {
-        ALOGE("%s: GNSS Callback Interface configured incorrectly", __func__);
-        return;
-    }
-
-    sGnssCbIface->gnssAcquireWakelockCb();
+    acquireWakelockGnss();
 }
 
 void Gnss::releaseWakelockCb() {
+    releaseWakelockGnss();
+}
+
+
+void Gnss::acquireWakelockGnss() {
+    sWakelockHeldGnss = true;
+    updateWakelock();
+}
+
+void Gnss::releaseWakelockGnss() {
+    sWakelockHeldGnss = false;
+    updateWakelock();
+}
+
+void Gnss::acquireWakelockFused() {
+    sWakelockHeldFused = true;
+    updateWakelock();
+}
+
+void Gnss::releaseWakelockFused() {
+    sWakelockHeldFused = false;
+    updateWakelock();
+}
+
+void Gnss::updateWakelock() {
+    // Track the state of the last request - in case the wake lock in the layer above is reference
+    // counted.
+    static bool sWakelockHeld = false;
+
     if (sGnssCbIface == nullptr) {
         ALOGE("%s: GNSS Callback Interface configured incorrectly", __func__);
         return;
     }
 
-    sGnssCbIface->gnssReleaseWakelockCb();
+    if (sWakelockHeldGnss || sWakelockHeldFused) {
+        if (!sWakelockHeld) {
+            ALOGI("%s: GNSS HAL Wakelock acquired due to gps: %d, fused: %d", __func__,
+                    sWakelockHeldGnss, sWakelockHeldFused);
+            sWakelockHeld = true;
+            sGnssCbIface->gnssAcquireWakelockCb();
+        }
+    } else {
+        if (sWakelockHeld) {
+            ALOGI("%s: GNSS HAL Wakelock released", __func__);
+        } else  {
+            // To avoid burning power, always release, even if logic got here with sWakelock false
+            // which it shouldn't, unless underlying *.h implementation makes duplicate requests.
+            ALOGW("%s: GNSS HAL Wakelock released, duplicate request", __func__);
+        }
+        sWakelockHeld = false;
+        sGnssCbIface->gnssReleaseWakelockCb();
+    }
 }
 
 void Gnss::requestUtcTimeCb() {
@@ -541,8 +584,26 @@
     if (mGnssIface == nullptr) {
         ALOGE("%s: Gnss interface is unavailable", __func__);
     } else {
-        // TODO(b/34133439): actually get an flpLocationIface
+        hw_module_t* module;
         const FlpLocationInterface* flpLocationIface = nullptr;
+        int err = hw_get_module(FUSED_LOCATION_HARDWARE_MODULE_ID, (hw_module_t const**)&module);
+
+        if (err != 0) {
+            ALOGE("gnss flp hw_get_module failed: %d", err);
+        } else if (module == nullptr) {
+            ALOGE("Fused Location hw_get_module returned null module");
+        } else if (module->methods == nullptr) {
+            ALOGE("Fused Location hw_get_module returned null methods");
+        } else {
+            hw_device_t* device;
+            err = module->methods->open(module, FUSED_LOCATION_HARDWARE_MODULE_ID, &device);
+            if (err != 0) {
+                ALOGE("flpDevice open failed: %d", err);
+            } else {
+                flp_device_t * flpDevice = reinterpret_cast<flp_device_t*>(device);
+                flpLocationIface = flpDevice->get_flp_interface(flpDevice);
+            }
+        }
 
         if (flpLocationIface == nullptr) {
             ALOGE("%s: GnssBatching interface is not implemented by HAL", __func__);
@@ -550,7 +611,6 @@
             mGnssBatching = new GnssBatching(flpLocationIface);
         }
     }
-
     return mGnssBatching;
 }
 
diff --git a/gnss/1.0/default/Gnss.h b/gnss/1.0/default/Gnss.h
index 36947c1..63614fa 100644
--- a/gnss/1.0/default/Gnss.h
+++ b/gnss/1.0/default/Gnss.h
@@ -53,7 +53,6 @@
  * IGnssCallback interface to be passed into the conventional implementation of the GNSS HAL.
  */
 struct Gnss : public IGnss {
-    // TODO: Add flp_device_t, either in ctor, or later attach?
     Gnss(gps_device_t* gnss_device);
     ~Gnss();
 
@@ -109,11 +108,27 @@
     static void setSystemInfoCb(const LegacyGnssSystemInfo* info);
 
     /*
+     * Wakelock consolidation, only needed for dual use of a gps.h & fused_location.h HAL
+     *
+     * Ensures that if the last call from either legacy .h was to acquire a wakelock, that a
+     * wakelock is held.  Otherwise releases it.
+     */
+    static void acquireWakelockFused();
+    static void releaseWakelockFused();
+
+    /*
      * Holds function pointers to the callback methods.
      */
     static GpsCallbacks sGnssCb;
 
  private:
+    // for wakelock consolidation, see above
+    static void acquireWakelockGnss();
+    static void releaseWakelockGnss();
+    static void updateWakelock();
+    static bool sWakelockHeldGnss;
+    static bool sWakelockHeldFused;
+
     sp<GnssXtra> mGnssXtraIface = nullptr;
     sp<AGnssRil> mGnssRil = nullptr;
     sp<GnssGeofencing> mGnssGeofencingIface = nullptr;
diff --git a/gnss/1.0/default/GnssBatching.cpp b/gnss/1.0/default/GnssBatching.cpp
index 404b5da..95c5e60 100644
--- a/gnss/1.0/default/GnssBatching.cpp
+++ b/gnss/1.0/default/GnssBatching.cpp
@@ -1,4 +1,27 @@
+/*
+ * 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.
+ */
+
+#define LOG_TAG "GnssHAL_GnssBatchingInterface"
+
 #include "GnssBatching.h"
+#include <Gnss.h> // for wakelock consolidation
+#include <GnssUtils.h>
+
+#include <cutils/log.h>  // for ALOGE
+#include <vector>
 
 namespace android {
 namespace hardware {
@@ -6,38 +29,189 @@
 namespace V1_0 {
 namespace implementation {
 
-GnssBatching::GnssBatching(const FlpLocationInterface* flpLocationIface) :
-    mFlpLocationIface(flpLocationIface) {}
+sp<IGnssBatchingCallback> GnssBatching::sGnssBatchingCbIface = nullptr;
+bool GnssBatching::sFlpSupportsBatching = false;
 
+FlpCallbacks GnssBatching::sFlpCb = {
+    .size = sizeof(FlpCallbacks),
+    .location_cb = locationCb,
+    .acquire_wakelock_cb = acquireWakelockCb,
+    .release_wakelock_cb = releaseWakelockCb,
+    .set_thread_event_cb = setThreadEventCb,
+    .flp_capabilities_cb = flpCapabilitiesCb,
+    .flp_status_cb = flpStatusCb,
+};
+
+GnssBatching::GnssBatching(const FlpLocationInterface* flpLocationIface) :
+    mFlpLocationIface(flpLocationIface) {
+}
+
+/*
+ * This enum is used locally by various methods below. It is only used by the default
+ * implementation and is not part of the GNSS interface.
+ */
+enum BatchingValues : uint16_t {
+    // Numbers 0-3 were used in earlier implementations - using 4 to be distinct to the HAL
+    FLP_GNSS_BATCHING_CLIENT_ID = 4,
+    // Tech. mask of GNSS, and sensor aiding, for legacy HAL to fit with GnssBatching API
+    FLP_TECH_MASK_GNSS_AND_SENSORS = FLP_TECH_MASK_GNSS | FLP_TECH_MASK_SENSORS,
+    // Putting a cap to avoid possible memory issues.  Unlikely values this high are supported.
+    MAX_LOCATIONS_PER_BATCH = 1000
+};
+
+void GnssBatching::locationCb(int32_t locationsCount, FlpLocation** locations) {
+    if (sGnssBatchingCbIface == nullptr) {
+        ALOGE("%s: GNSS Batching Callback Interface configured incorrectly", __func__);
+        return;
+    }
+
+    if (locations == nullptr) {
+        ALOGE("%s: Invalid locations from GNSS HAL", __func__);
+        return;
+    }
+
+    if (locationsCount < 0) {
+        ALOGE("%s: Negative location count: %d set to 0", __func__, locationsCount);
+        locationsCount = 0;
+    } else if (locationsCount > MAX_LOCATIONS_PER_BATCH) {
+        ALOGW("%s: Unexpected high location count: %d set to %d", __func__, locationsCount,
+                MAX_LOCATIONS_PER_BATCH);
+        locationsCount = MAX_LOCATIONS_PER_BATCH;
+    }
+
+    /**
+     * Note:
+     * Some existing implementations may drop duplicate locations.  These could be expanded here
+     * but as there's ambiguity between no-GPS-fix vs. dropped duplicates in that implementation,
+     * and that's not specified by the fused_location.h, that isn't safe to do here.
+     * Fortunately, this shouldn't be a major issue in cases where GNSS batching is typically
+     * used (e.g. when user is likely in vehicle/bicycle.)
+     */
+    std::vector<android::hardware::gnss::V1_0::GnssLocation> gnssLocations;
+    for (int iLocation = 0; iLocation < locationsCount; iLocation++) {
+        if (locations[iLocation] == nullptr) {
+            ALOGE("%s: Null location at slot: %d of %d, skipping", __func__, iLocation,
+                    locationsCount);
+            continue;
+        }
+        if ((locations[iLocation]->sources_used & ~FLP_TECH_MASK_GNSS_AND_SENSORS) != 0)
+        {
+            ALOGE("%s: Unrequested location type %d at slot: %d of %d, skipping", __func__,
+                    locations[iLocation]->sources_used, iLocation, locationsCount);
+            continue;
+        }
+        gnssLocations.push_back(convertToGnssLocation(locations[iLocation]));
+    }
+
+    sGnssBatchingCbIface->gnssLocationBatchCb(gnssLocations);
+}
+
+void GnssBatching::acquireWakelockCb() {
+    Gnss::acquireWakelockFused();
+}
+
+void GnssBatching::releaseWakelockCb() {
+    Gnss::releaseWakelockFused();
+}
+
+// this can just return success, because threads are now set up on demand in the jni layer
+int32_t GnssBatching::setThreadEventCb(ThreadEvent event) {
+    return FLP_RESULT_SUCCESS;
+}
+
+void GnssBatching::flpCapabilitiesCb(int32_t capabilities) {
+    ALOGD("%s capabilities %d", __func__, capabilities);
+
+    if (capabilities & CAPABILITY_GNSS) {
+        // once callback is received and capabilities high enough, we know version is
+        // high enough for flush()
+        sFlpSupportsBatching = true;
+    }
+}
+
+void GnssBatching::flpStatusCb(int32_t status) {
+    ALOGD("%s (default implementation) not forwarding status: %d", __func__, status);
+}
 
 // Methods from ::android::hardware::gnss::V1_0::IGnssBatching follow.
 Return<bool> GnssBatching::init(const sp<IGnssBatchingCallback>& callback) {
-    // TODO(b/34133439) implement
-    return false;
+    if (mFlpLocationIface == nullptr) {
+        ALOGE("%s: Flp batching is unavailable", __func__);
+        return false;
+    }
+
+    sGnssBatchingCbIface = callback;
+
+    return (mFlpLocationIface->init(&sFlpCb) == 0);
 }
 
 Return<uint16_t> GnssBatching::getBatchSize() {
-    // TODO(b/34133439) implement
-    return 0;
+    if (mFlpLocationIface == nullptr) {
+        ALOGE("%s: Flp batching interface is unavailable", __func__);
+        return 0;
+    }
+
+    return mFlpLocationIface->get_batch_size();
 }
 
 Return<bool> GnssBatching::start(const IGnssBatching::Options& options) {
-    // TODO(b/34133439) implement
-    return false;
+    if (mFlpLocationIface == nullptr) {
+        ALOGE("%s: Flp batching interface is unavailable", __func__);
+        return false;
+    }
+
+    if (!sFlpSupportsBatching) {
+        ALOGE("%s: Flp batching interface not supported, no capabilities callback received",
+                __func__);
+        return false;
+    }
+
+    FlpBatchOptions optionsHw;
+    // Legacy code used 9999 mW for High accuracy, and 21 mW for balanced.
+    // New GNSS API just expects reasonable GNSS chipset behavior - do something efficient
+    // given the interval.  This 100 mW limit should be quite sufficient (esp. given legacy code
+    // implementations may not even use this value.)
+    optionsHw.max_power_allocation_mW = 100;
+    optionsHw.sources_to_use = FLP_TECH_MASK_GNSS_AND_SENSORS;
+    optionsHw.flags = 0;
+    if (options.flags & Flag::WAKEUP_ON_FIFO_FULL) {
+        optionsHw.flags |= FLP_BATCH_WAKEUP_ON_FIFO_FULL;
+    }
+    optionsHw.period_ns = options.periodNanos;
+    optionsHw.smallest_displacement_meters = 0; // Zero offset - just use time interval
+
+    return (mFlpLocationIface->start_batching(FLP_GNSS_BATCHING_CLIENT_ID, &optionsHw)
+            == FLP_RESULT_SUCCESS);
 }
 
 Return<void> GnssBatching::flush() {
-    // TODO(b/34133439) implement
+    if (mFlpLocationIface == nullptr) {
+        ALOGE("%s: Flp batching interface is unavailable", __func__);
+        return Void();
+    }
+
+    mFlpLocationIface->flush_batched_locations();
+
     return Void();
 }
 
 Return<bool> GnssBatching::stop() {
-    // TODO(b/34133439) implement
-    return false;
+    if (mFlpLocationIface == nullptr) {
+        ALOGE("%s: Flp batching interface is unavailable", __func__);
+        return false;
+    }
+
+    return (mFlpLocationIface->stop_batching(FLP_GNSS_BATCHING_CLIENT_ID) == FLP_RESULT_SUCCESS);
 }
 
 Return<void> GnssBatching::cleanup() {
-    // TODO(b/34133439) implement
+    if (mFlpLocationIface == nullptr) {
+        ALOGE("%s: Flp batching interface is unavailable", __func__);
+        return Void();
+    }
+
+    mFlpLocationIface->cleanup();
+
     return Void();
 }
 
diff --git a/gnss/1.0/default/GnssBatching.h b/gnss/1.0/default/GnssBatching.h
index ac3aa99..001c27d 100644
--- a/gnss/1.0/default/GnssBatching.h
+++ b/gnss/1.0/default/GnssBatching.h
@@ -6,7 +6,6 @@
 #include <hidl/MQDescriptor.h>
 #include <hidl/Status.h>
 
-
 namespace android {
 namespace hardware {
 namespace gnss {
@@ -35,8 +34,26 @@
     Return<bool> stop() override;
     Return<void> cleanup() override;
 
+    /*
+     * Callback methods to be passed into the conventional FLP HAL by the default
+     * implementation. These methods are not part of the IGnssBatching base class.
+     */
+    static void locationCb(int32_t locationsCount, FlpLocation** locations);
+    static void acquireWakelockCb();
+    static void releaseWakelockCb();
+    static int32_t setThreadEventCb(ThreadEvent event);
+    static void flpCapabilitiesCb(int32_t capabilities);
+    static void flpStatusCb(int32_t status);
+
+    /*
+     * Holds function pointers to the callback methods.
+     */
+    static FlpCallbacks sFlpCb;
+
  private:
     const FlpLocationInterface* mFlpLocationIface = nullptr;
+    static sp<IGnssBatchingCallback> sGnssBatchingCbIface;
+    static bool sFlpSupportsBatching;
 };
 
 extern "C" IGnssBatching* HIDL_FETCH_IGnssBatching(const char* name);
diff --git a/gnss/1.0/default/GnssUtils.cpp b/gnss/1.0/default/GnssUtils.cpp
index 82a516b..d9956d6 100644
--- a/gnss/1.0/default/GnssUtils.cpp
+++ b/gnss/1.0/default/GnssUtils.cpp
@@ -51,6 +51,28 @@
     return gnssLocation;
 }
 
+GnssLocation convertToGnssLocation(FlpLocation* location) {
+    GnssLocation gnssLocation = {};
+    if (location != nullptr) {
+        gnssLocation = {
+            // Bit mask applied (and 0's below) for same reason as above with GpsLocation
+            .gnssLocationFlags = static_cast<uint16_t>(location->flags & 0x1f),
+            .latitudeDegrees = location->latitude,
+            .longitudeDegrees = location->longitude,
+            .altitudeMeters = location->altitude,
+            .speedMetersPerSec = location->speed,
+            .bearingDegrees = location->bearing,
+            .horizontalAccuracyMeters = location->accuracy,
+            .verticalAccuracyMeters = 0,
+            .speedAccuracyMetersPerSecond = 0,
+            .bearingAccuracyDegrees = 0,
+            .timestamp = location->timestamp
+        };
+    }
+
+    return gnssLocation;
+}
+
 }  // namespace implementation
 }  // namespace V1_0
 }  // namespace gnss
diff --git a/gnss/1.0/default/GnssUtils.h b/gnss/1.0/default/GnssUtils.h
index fc2f547..38d4b2d 100644
--- a/gnss/1.0/default/GnssUtils.h
+++ b/gnss/1.0/default/GnssUtils.h
@@ -16,6 +16,7 @@
 #ifndef android_hardware_gnss_V1_0_GnssUtil_H_
 #define android_hardware_gnss_V1_0_GnssUtil_H_
 
+#include <hardware/fused_location.h>
 #include <hardware/gps.h>
 #include <android/hardware/gnss/1.0/types.h>
 
@@ -31,6 +32,12 @@
  */
 GnssLocation convertToGnssLocation(GpsLocation* location);
 
+/*
+ * This method converts an FlpLocation struct to a GnssLocation
+ * struct.
+ */
+GnssLocation convertToGnssLocation(FlpLocation* location);
+
 }  // namespace implementation
 }  // namespace V1_0
 }  // namespace gnss
diff --git a/graphics/allocator/2.0/Android.bp b/graphics/allocator/2.0/Android.bp
index 16d8f91..b481fde 100644
--- a/graphics/allocator/2.0/Android.bp
+++ b/graphics/allocator/2.0/Android.bp
@@ -1,5 +1,14 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.graphics.allocator@2.0_hal",
+    srcs: [
+        "types.hal",
+        "IAllocator.hal",
+        "IAllocatorClient.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.graphics.allocator@2.0_genc++",
     tools: ["hidl-gen"],
@@ -64,117 +73,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.graphics.allocator.vts.driver@2.0_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: [
-        "types.hal",
-        "IAllocator.hal",
-        "IAllocatorClient.hal",
-    ],
-    out: [
-        "android/hardware/graphics/allocator/2.0/types.vts.cpp",
-        "android/hardware/graphics/allocator/2.0/Allocator.vts.cpp",
-        "android/hardware/graphics/allocator/2.0/AllocatorClient.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.graphics.allocator.vts.driver@2.0_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: [
-        "types.hal",
-        "IAllocator.hal",
-        "IAllocatorClient.hal",
-    ],
-    out: [
-        "android/hardware/graphics/allocator/2.0/types.vts.h",
-        "android/hardware/graphics/allocator/2.0/Allocator.vts.h",
-        "android/hardware/graphics/allocator/2.0/AllocatorClient.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.graphics.allocator.vts.driver@2.0",
-    generated_sources: ["android.hardware.graphics.allocator.vts.driver@2.0_genc++"],
-    generated_headers: ["android.hardware.graphics.allocator.vts.driver@2.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.graphics.allocator.vts.driver@2.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hardware.graphics.common@1.0",
-        "android.hidl.base@1.0",
-        "android.hardware.graphics.allocator@2.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hardware.graphics.common@1.0",
-        "android.hidl.base@1.0",
-    ],
-}
-
-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: [
-        "types.hal",
-        "IAllocator.hal",
-        "IAllocatorClient.hal",
-    ],
-    out: [
-        "android/hardware/graphics/allocator/2.0/types.vts.cpp",
-        "android/hardware/graphics/allocator/2.0/Allocator.vts.cpp",
-        "android/hardware/graphics/allocator/2.0/AllocatorClient.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: [
-        "types.hal",
-        "IAllocator.hal",
-        "IAllocatorClient.hal",
-    ],
-    out: [
-        "android/hardware/graphics/allocator/2.0/types.vts.h",
-        "android/hardware/graphics/allocator/2.0/Allocator.vts.h",
-        "android/hardware/graphics/allocator/2.0/AllocatorClient.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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hardware.graphics.common@1.0",
-        "android.hidl.base@1.0",
-        "android.hardware.graphics.allocator@2.0",
-    ],
-}
diff --git a/graphics/common/1.0/Android.bp b/graphics/common/1.0/Android.bp
index 1d00506..4524e3a 100644
--- a/graphics/common/1.0/Android.bp
+++ b/graphics/common/1.0/Android.bp
@@ -1,5 +1,12 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.graphics.common@1.0_hal",
+    srcs: [
+        "types.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.graphics.common@1.0_genc++",
     tools: ["hidl-gen"],
@@ -44,95 +51,3 @@
         "libutils",
     ],
 }
-
-genrule {
-    name: "android.hardware.graphics.common.vts.driver@1.0_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: [
-        "types.hal",
-    ],
-    out: [
-        "android/hardware/graphics/common/1.0/types.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.graphics.common.vts.driver@1.0_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: [
-        "types.hal",
-    ],
-    out: [
-        "android/hardware/graphics/common/1.0/types.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.graphics.common.vts.driver@1.0",
-    generated_sources: ["android.hardware.graphics.common.vts.driver@1.0_genc++"],
-    generated_headers: ["android.hardware.graphics.common.vts.driver@1.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.graphics.common.vts.driver@1.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hardware.graphics.common@1.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-    ],
-}
-
-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: [
-        "types.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: [
-        "types.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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hardware.graphics.common@1.0",
-    ],
-}
diff --git a/graphics/common/1.0/Android.mk b/graphics/common/1.0/Android.mk
index 0fa6dcc..c08053d 100644
--- a/graphics/common/1.0/Android.mk
+++ b/graphics/common/1.0/Android.mk
@@ -8,7 +8,7 @@
 LOCAL_MODULE := android.hardware.graphics.common@1.0-java
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -134,7 +134,7 @@
 LOCAL_MODULE := android.hardware.graphics.common@1.0-java-static
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -260,7 +260,7 @@
 LOCAL_MODULE := android.hardware.graphics.common@1.0-java-constants
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 #
diff --git a/graphics/composer/2.1/Android.bp b/graphics/composer/2.1/Android.bp
index bda8aae..9cd753a 100644
--- a/graphics/composer/2.1/Android.bp
+++ b/graphics/composer/2.1/Android.bp
@@ -1,5 +1,15 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.graphics.composer@2.1_hal",
+    srcs: [
+        "types.hal",
+        "IComposer.hal",
+        "IComposerCallback.hal",
+        "IComposerClient.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.graphics.composer@2.1_genc++",
     tools: ["hidl-gen"],
@@ -72,125 +82,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.graphics.composer.vts.driver@2.1_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: [
-        "types.hal",
-        "IComposer.hal",
-        "IComposerCallback.hal",
-        "IComposerClient.hal",
-    ],
-    out: [
-        "android/hardware/graphics/composer/2.1/types.vts.cpp",
-        "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",
-    ],
-}
-
-genrule {
-    name: "android.hardware.graphics.composer.vts.driver@2.1_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: [
-        "types.hal",
-        "IComposer.hal",
-        "IComposerCallback.hal",
-        "IComposerClient.hal",
-    ],
-    out: [
-        "android/hardware/graphics/composer/2.1/types.vts.h",
-        "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",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.graphics.composer.vts.driver@2.1",
-    generated_sources: ["android.hardware.graphics.composer.vts.driver@2.1_genc++"],
-    generated_headers: ["android.hardware.graphics.composer.vts.driver@2.1_genc++_headers"],
-    export_generated_headers: ["android.hardware.graphics.composer.vts.driver@2.1_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hardware.graphics.common@1.0",
-        "android.hidl.base@1.0",
-        "android.hardware.graphics.composer@2.1",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hardware.graphics.common@1.0",
-        "android.hidl.base@1.0",
-    ],
-}
-
-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: [
-        "types.hal",
-        "IComposer.hal",
-        "IComposerCallback.hal",
-        "IComposerClient.hal",
-    ],
-    out: [
-        "android/hardware/graphics/composer/2.1/types.vts.cpp",
-        "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",
-    ],
-}
-
-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: [
-        "types.hal",
-        "IComposer.hal",
-        "IComposerCallback.hal",
-        "IComposerClient.hal",
-    ],
-    out: [
-        "android/hardware/graphics/composer/2.1/types.vts.h",
-        "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",
-    ],
-}
-
-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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hardware.graphics.common@1.0",
-        "android.hidl.base@1.0",
-        "android.hardware.graphics.composer@2.1",
-    ],
-}
diff --git a/graphics/mapper/2.0/Android.bp b/graphics/mapper/2.0/Android.bp
index 938ff8b..f53759c 100644
--- a/graphics/mapper/2.0/Android.bp
+++ b/graphics/mapper/2.0/Android.bp
@@ -1,5 +1,13 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.graphics.mapper@2.0_hal",
+    srcs: [
+        "types.hal",
+        "IMapper.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.graphics.mapper@2.0_genc++",
     tools: ["hidl-gen"],
@@ -58,112 +66,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.graphics.mapper.vts.driver@2.0_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: [
-        "types.hal",
-        "IMapper.hal",
-    ],
-    out: [
-        "android/hardware/graphics/mapper/2.0/types.vts.cpp",
-        "android/hardware/graphics/mapper/2.0/Mapper.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.graphics.mapper.vts.driver@2.0_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: [
-        "types.hal",
-        "IMapper.hal",
-    ],
-    out: [
-        "android/hardware/graphics/mapper/2.0/types.vts.h",
-        "android/hardware/graphics/mapper/2.0/Mapper.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.graphics.mapper.vts.driver@2.0",
-    generated_sources: ["android.hardware.graphics.mapper.vts.driver@2.0_genc++"],
-    generated_headers: ["android.hardware.graphics.mapper.vts.driver@2.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.graphics.mapper.vts.driver@2.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hardware.graphics.allocator@2.0",
-        "android.hardware.graphics.common@1.0",
-        "android.hidl.base@1.0",
-        "android.hardware.graphics.mapper@2.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hardware.graphics.allocator@2.0",
-        "android.hardware.graphics.common@1.0",
-        "android.hidl.base@1.0",
-    ],
-}
-
-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: [
-        "types.hal",
-        "IMapper.hal",
-    ],
-    out: [
-        "android/hardware/graphics/mapper/2.0/types.vts.cpp",
-        "android/hardware/graphics/mapper/2.0/Mapper.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: [
-        "types.hal",
-        "IMapper.hal",
-    ],
-    out: [
-        "android/hardware/graphics/mapper/2.0/types.vts.h",
-        "android/hardware/graphics/mapper/2.0/Mapper.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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hardware.graphics.allocator@2.0",
-        "android.hardware.graphics.common@1.0",
-        "android.hidl.base@1.0",
-        "android.hardware.graphics.mapper@2.0",
-    ],
-}
diff --git a/health/1.0/Android.bp b/health/1.0/Android.bp
index 4e16231..189cb3d 100644
--- a/health/1.0/Android.bp
+++ b/health/1.0/Android.bp
@@ -1,5 +1,13 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.health@1.0_hal",
+    srcs: [
+        "types.hal",
+        "IHealth.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.health@1.0_genc++",
     tools: ["hidl-gen"],
@@ -54,106 +62,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.health.vts.driver@1.0_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: [
-        "types.hal",
-        "IHealth.hal",
-    ],
-    out: [
-        "android/hardware/health/1.0/types.vts.cpp",
-        "android/hardware/health/1.0/Health.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.health.vts.driver@1.0_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: [
-        "types.hal",
-        "IHealth.hal",
-    ],
-    out: [
-        "android/hardware/health/1.0/types.vts.h",
-        "android/hardware/health/1.0/Health.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.health.vts.driver@1.0",
-    generated_sources: ["android.hardware.health.vts.driver@1.0_genc++"],
-    generated_headers: ["android.hardware.health.vts.driver@1.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.health.vts.driver@1.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.health@1.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hidl.base@1.0",
-    ],
-}
-
-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: [
-        "types.hal",
-        "IHealth.hal",
-    ],
-    out: [
-        "android/hardware/health/1.0/types.vts.cpp",
-        "android/hardware/health/1.0/Health.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: [
-        "types.hal",
-        "IHealth.hal",
-    ],
-    out: [
-        "android/hardware/health/1.0/types.vts.h",
-        "android/hardware/health/1.0/Health.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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.health@1.0",
-    ],
-}
diff --git a/health/1.0/Android.mk b/health/1.0/Android.mk
index f05d227..ebb89a7 100644
--- a/health/1.0/Android.mk
+++ b/health/1.0/Android.mk
@@ -8,7 +8,7 @@
 LOCAL_MODULE := android.hardware.health@1.0-java
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -140,7 +140,7 @@
 LOCAL_MODULE := android.hardware.health@1.0-java-static
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -272,7 +272,7 @@
 LOCAL_MODULE := android.hardware.health@1.0-java-constants
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 #
diff --git a/ir/1.0/Android.bp b/ir/1.0/Android.bp
index 45e308a..da49579 100644
--- a/ir/1.0/Android.bp
+++ b/ir/1.0/Android.bp
@@ -1,12 +1,19 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.ir@1.0_hal",
+    srcs: [
+        "types.hal",
+        "IConsumerIr.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.ir@1.0_genc++",
     tools: ["hidl-gen"],
     cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.ir@1.0",
     srcs: [
-        "types.hal",
-        "IConsumerIr.hal",
+        ":android.hardware.ir@1.0_hal",
     ],
     out: [
         "android/hardware/ir/1.0/types.cpp",
@@ -19,8 +26,7 @@
     tools: ["hidl-gen"],
     cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.ir@1.0",
     srcs: [
-        "types.hal",
-        "IConsumerIr.hal",
+        ":android.hardware.ir@1.0_hal",
     ],
     out: [
         "android/hardware/ir/1.0/types.h",
@@ -54,106 +60,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.ir.vts.driver@1.0_genc++",
-    tools: ["hidl-gen", "vtsc"],
-    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.ir@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/ir/1.0/ $(genDir)/android/hardware/ir/1.0/",
-    srcs: [
-        "types.hal",
-        "IConsumerIr.hal",
-    ],
-    out: [
-        "android/hardware/ir/1.0/types.vts.cpp",
-        "android/hardware/ir/1.0/ConsumerIr.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.ir.vts.driver@1.0_genc++_headers",
-    tools: ["hidl-gen", "vtsc"],
-    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.ir@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/ir/1.0/ $(genDir)/android/hardware/ir/1.0/",
-    srcs: [
-        "types.hal",
-        "IConsumerIr.hal",
-    ],
-    out: [
-        "android/hardware/ir/1.0/types.vts.h",
-        "android/hardware/ir/1.0/ConsumerIr.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.ir.vts.driver@1.0",
-    generated_sources: ["android.hardware.ir.vts.driver@1.0_genc++"],
-    generated_headers: ["android.hardware.ir.vts.driver@1.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.ir.vts.driver@1.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.ir@1.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hidl.base@1.0",
-    ],
-}
-
-genrule {
-    name: "android.hardware.ir@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.ir@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/ir/1.0/ $(genDir)/android/hardware/ir/1.0/",
-    srcs: [
-        "types.hal",
-        "IConsumerIr.hal",
-    ],
-    out: [
-        "android/hardware/ir/1.0/types.vts.cpp",
-        "android/hardware/ir/1.0/ConsumerIr.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.ir@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.ir@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/ir/1.0/ $(genDir)/android/hardware/ir/1.0/",
-    srcs: [
-        "types.hal",
-        "IConsumerIr.hal",
-    ],
-    out: [
-        "android/hardware/ir/1.0/types.vts.h",
-        "android/hardware/ir/1.0/ConsumerIr.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.ir@1.0-vts.profiler",
-    generated_sources: ["android.hardware.ir@1.0-vts.profiler_genc++"],
-    generated_headers: ["android.hardware.ir@1.0-vts.profiler_genc++_headers"],
-    export_generated_headers: ["android.hardware.ir@1.0-vts.profiler_genc++_headers"],
-    shared_libs: [
-        "libbase",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.ir@1.0",
-    ],
-}
diff --git a/ir/1.0/Android.mk b/ir/1.0/Android.mk
index 660b32b..d43286c 100644
--- a/ir/1.0/Android.mk
+++ b/ir/1.0/Android.mk
@@ -8,7 +8,7 @@
 LOCAL_MODULE := android.hardware.ir@1.0-java
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -64,7 +64,7 @@
 LOCAL_MODULE := android.hardware.ir@1.0-java-static
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
diff --git a/keymaster/3.0/Android.bp b/keymaster/3.0/Android.bp
index e9a4985..ec56292 100644
--- a/keymaster/3.0/Android.bp
+++ b/keymaster/3.0/Android.bp
@@ -1,5 +1,13 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.keymaster@3.0_hal",
+    srcs: [
+        "types.hal",
+        "IKeymasterDevice.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.keymaster@3.0_genc++",
     tools: ["hidl-gen"],
@@ -54,106 +62,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.keymaster.vts.driver@3.0_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: [
-        "types.hal",
-        "IKeymasterDevice.hal",
-    ],
-    out: [
-        "android/hardware/keymaster/3.0/types.vts.cpp",
-        "android/hardware/keymaster/3.0/KeymasterDevice.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.keymaster.vts.driver@3.0_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: [
-        "types.hal",
-        "IKeymasterDevice.hal",
-    ],
-    out: [
-        "android/hardware/keymaster/3.0/types.vts.h",
-        "android/hardware/keymaster/3.0/KeymasterDevice.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.keymaster.vts.driver@3.0",
-    generated_sources: ["android.hardware.keymaster.vts.driver@3.0_genc++"],
-    generated_headers: ["android.hardware.keymaster.vts.driver@3.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.keymaster.vts.driver@3.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.keymaster@3.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hidl.base@1.0",
-    ],
-}
-
-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: [
-        "types.hal",
-        "IKeymasterDevice.hal",
-    ],
-    out: [
-        "android/hardware/keymaster/3.0/types.vts.cpp",
-        "android/hardware/keymaster/3.0/KeymasterDevice.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: [
-        "types.hal",
-        "IKeymasterDevice.hal",
-    ],
-    out: [
-        "android/hardware/keymaster/3.0/types.vts.h",
-        "android/hardware/keymaster/3.0/KeymasterDevice.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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.keymaster@3.0",
-    ],
-}
diff --git a/keymaster/3.0/default/service.cpp b/keymaster/3.0/default/service.cpp
index dd8c0b2..c4387c3 100644
--- a/keymaster/3.0/default/service.cpp
+++ b/keymaster/3.0/default/service.cpp
@@ -26,10 +26,8 @@
 using android::hardware::joinRpcThreadpool;
 
 using android::hardware::keymaster::V3_0::IKeymasterDevice;
-using android::hardware::registerPassthroughServiceImplementation;
+using android::hardware::defaultPassthroughServiceImplementation;
 
 int main() {
-    configureRpcThreadpool(1, true /*callerWillJoin*/);
-    registerPassthroughServiceImplementation<IKeymasterDevice>("keymaster");
-    joinRpcThreadpool();
+    return defaultPassthroughServiceImplementation<IKeymasterDevice>("keymaster", 1);
 }
diff --git a/light/2.0/Android.bp b/light/2.0/Android.bp
index 928f1c3..74c8e50 100644
--- a/light/2.0/Android.bp
+++ b/light/2.0/Android.bp
@@ -1,5 +1,13 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.light@2.0_hal",
+    srcs: [
+        "types.hal",
+        "ILight.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.light@2.0_genc++",
     tools: ["hidl-gen"],
@@ -54,106 +62,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.light.vts.driver@2.0_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: [
-        "types.hal",
-        "ILight.hal",
-    ],
-    out: [
-        "android/hardware/light/2.0/types.vts.cpp",
-        "android/hardware/light/2.0/Light.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.light.vts.driver@2.0_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: [
-        "types.hal",
-        "ILight.hal",
-    ],
-    out: [
-        "android/hardware/light/2.0/types.vts.h",
-        "android/hardware/light/2.0/Light.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.light.vts.driver@2.0",
-    generated_sources: ["android.hardware.light.vts.driver@2.0_genc++"],
-    generated_headers: ["android.hardware.light.vts.driver@2.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.light.vts.driver@2.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.light@2.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hidl.base@1.0",
-    ],
-}
-
-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: [
-        "types.hal",
-        "ILight.hal",
-    ],
-    out: [
-        "android/hardware/light/2.0/types.vts.cpp",
-        "android/hardware/light/2.0/Light.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: [
-        "types.hal",
-        "ILight.hal",
-    ],
-    out: [
-        "android/hardware/light/2.0/types.vts.h",
-        "android/hardware/light/2.0/Light.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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.light@2.0",
-    ],
-}
diff --git a/light/2.0/Android.mk b/light/2.0/Android.mk
index ef19bad..7bb4293 100644
--- a/light/2.0/Android.mk
+++ b/light/2.0/Android.mk
@@ -8,7 +8,7 @@
 LOCAL_MODULE := android.hardware.light@2.0-java
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -140,7 +140,7 @@
 LOCAL_MODULE := android.hardware.light@2.0-java-static
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
diff --git a/media/1.0/Android.bp b/media/1.0/Android.bp
index 5f81ca0..36e9eff 100644
--- a/media/1.0/Android.bp
+++ b/media/1.0/Android.bp
@@ -1,5 +1,12 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.media@1.0_hal",
+    srcs: [
+        "types.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.media@1.0_genc++",
     tools: ["hidl-gen"],
@@ -46,98 +53,3 @@
         "android.hardware.graphics.common@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.media.vts.driver@1.0_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: [
-        "types.hal",
-    ],
-    out: [
-        "android/hardware/media/1.0/types.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.media.vts.driver@1.0_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: [
-        "types.hal",
-    ],
-    out: [
-        "android/hardware/media/1.0/types.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.media.vts.driver@1.0",
-    generated_sources: ["android.hardware.media.vts.driver@1.0_genc++"],
-    generated_headers: ["android.hardware.media.vts.driver@1.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.media.vts.driver@1.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hardware.graphics.common@1.0",
-        "android.hardware.media@1.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hardware.graphics.common@1.0",
-    ],
-}
-
-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: [
-        "types.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: [
-        "types.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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hardware.graphics.common@1.0",
-        "android.hardware.media@1.0",
-    ],
-}
diff --git a/media/omx/1.0/Android.bp b/media/omx/1.0/Android.bp
index 6a27a34..e042e5d 100644
--- a/media/omx/1.0/Android.bp
+++ b/media/omx/1.0/Android.bp
@@ -1,5 +1,19 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.media.omx@1.0_hal",
+    srcs: [
+        "types.hal",
+        "IGraphicBufferSource.hal",
+        "IOmx.hal",
+        "IOmxBufferProducer.hal",
+        "IOmxBufferSource.hal",
+        "IOmxNode.hal",
+        "IOmxObserver.hal",
+        "IOmxProducerListener.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.media.omx@1.0_genc++",
     tools: ["hidl-gen"],
@@ -106,160 +120,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.media.omx.vts.driver@1.0_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: [
-        "types.hal",
-        "IGraphicBufferSource.hal",
-        "IOmx.hal",
-        "IOmxBufferProducer.hal",
-        "IOmxBufferSource.hal",
-        "IOmxNode.hal",
-        "IOmxObserver.hal",
-        "IOmxProducerListener.hal",
-    ],
-    out: [
-        "android/hardware/media/omx/1.0/types.vts.cpp",
-        "android/hardware/media/omx/1.0/GraphicBufferSource.vts.cpp",
-        "android/hardware/media/omx/1.0/Omx.vts.cpp",
-        "android/hardware/media/omx/1.0/OmxBufferProducer.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/OmxProducerListener.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.media.omx.vts.driver@1.0_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: [
-        "types.hal",
-        "IGraphicBufferSource.hal",
-        "IOmx.hal",
-        "IOmxBufferProducer.hal",
-        "IOmxBufferSource.hal",
-        "IOmxNode.hal",
-        "IOmxObserver.hal",
-        "IOmxProducerListener.hal",
-    ],
-    out: [
-        "android/hardware/media/omx/1.0/types.vts.h",
-        "android/hardware/media/omx/1.0/GraphicBufferSource.vts.h",
-        "android/hardware/media/omx/1.0/Omx.vts.h",
-        "android/hardware/media/omx/1.0/OmxBufferProducer.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/OmxProducerListener.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.media.omx.vts.driver@1.0",
-    generated_sources: ["android.hardware.media.omx.vts.driver@1.0_genc++"],
-    generated_headers: ["android.hardware.media.omx.vts.driver@1.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.media.omx.vts.driver@1.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hardware.graphics.common@1.0",
-        "android.hardware.media@1.0",
-        "android.hidl.base@1.0",
-        "android.hardware.media.omx@1.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hardware.graphics.common@1.0",
-        "android.hardware.media@1.0",
-        "android.hidl.base@1.0",
-    ],
-}
-
-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: [
-        "types.hal",
-        "IGraphicBufferSource.hal",
-        "IOmx.hal",
-        "IOmxBufferProducer.hal",
-        "IOmxBufferSource.hal",
-        "IOmxNode.hal",
-        "IOmxObserver.hal",
-        "IOmxProducerListener.hal",
-    ],
-    out: [
-        "android/hardware/media/omx/1.0/types.vts.cpp",
-        "android/hardware/media/omx/1.0/GraphicBufferSource.vts.cpp",
-        "android/hardware/media/omx/1.0/Omx.vts.cpp",
-        "android/hardware/media/omx/1.0/OmxBufferProducer.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/OmxProducerListener.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: [
-        "types.hal",
-        "IGraphicBufferSource.hal",
-        "IOmx.hal",
-        "IOmxBufferProducer.hal",
-        "IOmxBufferSource.hal",
-        "IOmxNode.hal",
-        "IOmxObserver.hal",
-        "IOmxProducerListener.hal",
-    ],
-    out: [
-        "android/hardware/media/omx/1.0/types.vts.h",
-        "android/hardware/media/omx/1.0/GraphicBufferSource.vts.h",
-        "android/hardware/media/omx/1.0/Omx.vts.h",
-        "android/hardware/media/omx/1.0/OmxBufferProducer.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/OmxProducerListener.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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hardware.graphics.common@1.0",
-        "android.hardware.media@1.0",
-        "android.hidl.base@1.0",
-        "android.hardware.media.omx@1.0",
-    ],
-}
diff --git a/media/omx/1.0/IOmxBufferProducer.hal b/media/omx/1.0/IOmxBufferProducer.hal
index 12b5d14..d4cf5f7 100644
--- a/media/omx/1.0/IOmxBufferProducer.hal
+++ b/media/omx/1.0/IOmxBufferProducer.hal
@@ -121,6 +121,7 @@
         uint32_t transformHint;
         uint32_t numPendingBuffers;
         uint64_t nextFrameNumber;
+        bool bufferReplaced;
         FrameEventHistoryDelta frameTimestamps;
     };
 
diff --git a/memtrack/1.0/Android.bp b/memtrack/1.0/Android.bp
index 3a2db14..9a1b84a 100644
--- a/memtrack/1.0/Android.bp
+++ b/memtrack/1.0/Android.bp
@@ -1,5 +1,13 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.memtrack@1.0_hal",
+    srcs: [
+        "types.hal",
+        "IMemtrack.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.memtrack@1.0_genc++",
     tools: ["hidl-gen"],
@@ -54,106 +62,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.memtrack.vts.driver@1.0_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: [
-        "types.hal",
-        "IMemtrack.hal",
-    ],
-    out: [
-        "android/hardware/memtrack/1.0/types.vts.cpp",
-        "android/hardware/memtrack/1.0/Memtrack.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.memtrack.vts.driver@1.0_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: [
-        "types.hal",
-        "IMemtrack.hal",
-    ],
-    out: [
-        "android/hardware/memtrack/1.0/types.vts.h",
-        "android/hardware/memtrack/1.0/Memtrack.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.memtrack.vts.driver@1.0",
-    generated_sources: ["android.hardware.memtrack.vts.driver@1.0_genc++"],
-    generated_headers: ["android.hardware.memtrack.vts.driver@1.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.memtrack.vts.driver@1.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.memtrack@1.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hidl.base@1.0",
-    ],
-}
-
-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: [
-        "types.hal",
-        "IMemtrack.hal",
-    ],
-    out: [
-        "android/hardware/memtrack/1.0/types.vts.cpp",
-        "android/hardware/memtrack/1.0/Memtrack.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: [
-        "types.hal",
-        "IMemtrack.hal",
-    ],
-    out: [
-        "android/hardware/memtrack/1.0/types.vts.h",
-        "android/hardware/memtrack/1.0/Memtrack.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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.memtrack@1.0",
-    ],
-}
diff --git a/memtrack/1.0/Android.mk b/memtrack/1.0/Android.mk
index eeb67f6..62bee97 100644
--- a/memtrack/1.0/Android.mk
+++ b/memtrack/1.0/Android.mk
@@ -8,7 +8,7 @@
 LOCAL_MODULE := android.hardware.memtrack@1.0-java
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -121,7 +121,7 @@
 LOCAL_MODULE := android.hardware.memtrack@1.0-java-static
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
diff --git a/nfc/1.0/Android.bp b/nfc/1.0/Android.bp
index e1c06c6..e7305b4 100644
--- a/nfc/1.0/Android.bp
+++ b/nfc/1.0/Android.bp
@@ -1,13 +1,20 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.nfc@1.0_hal",
+    srcs: [
+        "types.hal",
+        "INfc.hal",
+        "INfcClientCallback.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.nfc@1.0_genc++",
     tools: ["hidl-gen"],
     cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.nfc@1.0",
     srcs: [
-        "types.hal",
-        "INfc.hal",
-        "INfcClientCallback.hal",
+        ":android.hardware.nfc@1.0_hal",
     ],
     out: [
         "android/hardware/nfc/1.0/types.cpp",
@@ -21,9 +28,7 @@
     tools: ["hidl-gen"],
     cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.nfc@1.0",
     srcs: [
-        "types.hal",
-        "INfc.hal",
-        "INfcClientCallback.hal",
+        ":android.hardware.nfc@1.0_hal",
     ],
     out: [
         "android/hardware/nfc/1.0/types.h",
@@ -62,114 +67,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.nfc.vts.driver@1.0_genc++",
-    tools: ["hidl-gen", "vtsc"],
-    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.nfc@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/nfc/1.0/ $(genDir)/android/hardware/nfc/1.0/",
-    srcs: [
-        "types.hal",
-        "INfc.hal",
-        "INfcClientCallback.hal",
-    ],
-    out: [
-        "android/hardware/nfc/1.0/types.vts.cpp",
-        "android/hardware/nfc/1.0/Nfc.vts.cpp",
-        "android/hardware/nfc/1.0/NfcClientCallback.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.nfc.vts.driver@1.0_genc++_headers",
-    tools: ["hidl-gen", "vtsc"],
-    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.nfc@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/nfc/1.0/ $(genDir)/android/hardware/nfc/1.0/",
-    srcs: [
-        "types.hal",
-        "INfc.hal",
-        "INfcClientCallback.hal",
-    ],
-    out: [
-        "android/hardware/nfc/1.0/types.vts.h",
-        "android/hardware/nfc/1.0/Nfc.vts.h",
-        "android/hardware/nfc/1.0/NfcClientCallback.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.nfc.vts.driver@1.0",
-    generated_sources: ["android.hardware.nfc.vts.driver@1.0_genc++"],
-    generated_headers: ["android.hardware.nfc.vts.driver@1.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.nfc.vts.driver@1.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.nfc@1.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hidl.base@1.0",
-    ],
-}
-
-genrule {
-    name: "android.hardware.nfc@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.nfc@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/nfc/1.0/ $(genDir)/android/hardware/nfc/1.0/",
-    srcs: [
-        "types.hal",
-        "INfc.hal",
-        "INfcClientCallback.hal",
-    ],
-    out: [
-        "android/hardware/nfc/1.0/types.vts.cpp",
-        "android/hardware/nfc/1.0/Nfc.vts.cpp",
-        "android/hardware/nfc/1.0/NfcClientCallback.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.nfc@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.nfc@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/nfc/1.0/ $(genDir)/android/hardware/nfc/1.0/",
-    srcs: [
-        "types.hal",
-        "INfc.hal",
-        "INfcClientCallback.hal",
-    ],
-    out: [
-        "android/hardware/nfc/1.0/types.vts.h",
-        "android/hardware/nfc/1.0/Nfc.vts.h",
-        "android/hardware/nfc/1.0/NfcClientCallback.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.nfc@1.0-vts.profiler",
-    generated_sources: ["android.hardware.nfc@1.0-vts.profiler_genc++"],
-    generated_headers: ["android.hardware.nfc@1.0-vts.profiler_genc++_headers"],
-    export_generated_headers: ["android.hardware.nfc@1.0-vts.profiler_genc++_headers"],
-    shared_libs: [
-        "libbase",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.nfc@1.0",
-    ],
-}
diff --git a/nfc/1.0/Android.mk b/nfc/1.0/Android.mk
index 823bde5..6f09764 100644
--- a/nfc/1.0/Android.mk
+++ b/nfc/1.0/Android.mk
@@ -8,7 +8,7 @@
 LOCAL_MODULE := android.hardware.nfc@1.0-java
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -106,7 +106,7 @@
 LOCAL_MODULE := android.hardware.nfc@1.0-java-static
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -204,7 +204,7 @@
 LOCAL_MODULE := android.hardware.nfc@1.0-java-constants
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 #
diff --git a/power/1.0/Android.bp b/power/1.0/Android.bp
index 33caa8d..62e03ea 100644
--- a/power/1.0/Android.bp
+++ b/power/1.0/Android.bp
@@ -1,5 +1,13 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.power@1.0_hal",
+    srcs: [
+        "types.hal",
+        "IPower.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.power@1.0_genc++",
     tools: ["hidl-gen"],
@@ -54,106 +62,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.power.vts.driver@1.0_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: [
-        "types.hal",
-        "IPower.hal",
-    ],
-    out: [
-        "android/hardware/power/1.0/types.vts.cpp",
-        "android/hardware/power/1.0/Power.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.power.vts.driver@1.0_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: [
-        "types.hal",
-        "IPower.hal",
-    ],
-    out: [
-        "android/hardware/power/1.0/types.vts.h",
-        "android/hardware/power/1.0/Power.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.power.vts.driver@1.0",
-    generated_sources: ["android.hardware.power.vts.driver@1.0_genc++"],
-    generated_headers: ["android.hardware.power.vts.driver@1.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.power.vts.driver@1.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.power@1.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hidl.base@1.0",
-    ],
-}
-
-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: [
-        "types.hal",
-        "IPower.hal",
-    ],
-    out: [
-        "android/hardware/power/1.0/types.vts.cpp",
-        "android/hardware/power/1.0/Power.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: [
-        "types.hal",
-        "IPower.hal",
-    ],
-    out: [
-        "android/hardware/power/1.0/types.vts.h",
-        "android/hardware/power/1.0/Power.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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.power@1.0",
-    ],
-}
diff --git a/power/1.0/Android.mk b/power/1.0/Android.mk
index 4e11867..98d95a8 100644
--- a/power/1.0/Android.mk
+++ b/power/1.0/Android.mk
@@ -8,7 +8,7 @@
 LOCAL_MODULE := android.hardware.power@1.0-java
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -140,7 +140,7 @@
 LOCAL_MODULE := android.hardware.power@1.0-java-static
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
diff --git a/radio/1.0/Android.bp b/radio/1.0/Android.bp
index 7bff574..f59cf66 100644
--- a/radio/1.0/Android.bp
+++ b/radio/1.0/Android.bp
@@ -1,9 +1,7 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
-genrule {
-    name: "android.hardware.radio@1.0_genc++",
-    tools: ["hidl-gen"],
-    cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.radio@1.0",
+filegroup {
+    name: "android.hardware.radio@1.0_hal",
     srcs: [
         "types.hal",
         "IRadio.hal",
@@ -12,6 +10,15 @@
         "ISap.hal",
         "ISapCallback.hal",
     ],
+}
+
+genrule {
+    name: "android.hardware.radio@1.0_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.radio@1.0",
+    srcs: [
+        ":android.hardware.radio@1.0_hal",
+    ],
     out: [
         "android/hardware/radio/1.0/types.cpp",
         "android/hardware/radio/1.0/RadioAll.cpp",
@@ -27,12 +34,7 @@
     tools: ["hidl-gen"],
     cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.radio@1.0",
     srcs: [
-        "types.hal",
-        "IRadio.hal",
-        "IRadioIndication.hal",
-        "IRadioResponse.hal",
-        "ISap.hal",
-        "ISapCallback.hal",
+        ":android.hardware.radio@1.0_hal",
     ],
     out: [
         "android/hardware/radio/1.0/types.h",
@@ -86,138 +88,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.radio.vts.driver@1.0_genc++",
-    tools: ["hidl-gen", "vtsc"],
-    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.radio@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/radio/1.0/ $(genDir)/android/hardware/radio/1.0/",
-    srcs: [
-        "types.hal",
-        "IRadio.hal",
-        "IRadioIndication.hal",
-        "IRadioResponse.hal",
-        "ISap.hal",
-        "ISapCallback.hal",
-    ],
-    out: [
-        "android/hardware/radio/1.0/types.vts.cpp",
-        "android/hardware/radio/1.0/Radio.vts.cpp",
-        "android/hardware/radio/1.0/RadioIndication.vts.cpp",
-        "android/hardware/radio/1.0/RadioResponse.vts.cpp",
-        "android/hardware/radio/1.0/Sap.vts.cpp",
-        "android/hardware/radio/1.0/SapCallback.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.radio.vts.driver@1.0_genc++_headers",
-    tools: ["hidl-gen", "vtsc"],
-    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.radio@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/radio/1.0/ $(genDir)/android/hardware/radio/1.0/",
-    srcs: [
-        "types.hal",
-        "IRadio.hal",
-        "IRadioIndication.hal",
-        "IRadioResponse.hal",
-        "ISap.hal",
-        "ISapCallback.hal",
-    ],
-    out: [
-        "android/hardware/radio/1.0/types.vts.h",
-        "android/hardware/radio/1.0/Radio.vts.h",
-        "android/hardware/radio/1.0/RadioIndication.vts.h",
-        "android/hardware/radio/1.0/RadioResponse.vts.h",
-        "android/hardware/radio/1.0/Sap.vts.h",
-        "android/hardware/radio/1.0/SapCallback.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.radio.vts.driver@1.0",
-    generated_sources: ["android.hardware.radio.vts.driver@1.0_genc++"],
-    generated_headers: ["android.hardware.radio.vts.driver@1.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.radio.vts.driver@1.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.radio@1.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hidl.base@1.0",
-    ],
-}
-
-genrule {
-    name: "android.hardware.radio@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.radio@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/radio/1.0/ $(genDir)/android/hardware/radio/1.0/",
-    srcs: [
-        "types.hal",
-        "IRadio.hal",
-        "IRadioIndication.hal",
-        "IRadioResponse.hal",
-        "ISap.hal",
-        "ISapCallback.hal",
-    ],
-    out: [
-        "android/hardware/radio/1.0/types.vts.cpp",
-        "android/hardware/radio/1.0/Radio.vts.cpp",
-        "android/hardware/radio/1.0/RadioIndication.vts.cpp",
-        "android/hardware/radio/1.0/RadioResponse.vts.cpp",
-        "android/hardware/radio/1.0/Sap.vts.cpp",
-        "android/hardware/radio/1.0/SapCallback.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.radio@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.radio@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/radio/1.0/ $(genDir)/android/hardware/radio/1.0/",
-    srcs: [
-        "types.hal",
-        "IRadio.hal",
-        "IRadioIndication.hal",
-        "IRadioResponse.hal",
-        "ISap.hal",
-        "ISapCallback.hal",
-    ],
-    out: [
-        "android/hardware/radio/1.0/types.vts.h",
-        "android/hardware/radio/1.0/Radio.vts.h",
-        "android/hardware/radio/1.0/RadioIndication.vts.h",
-        "android/hardware/radio/1.0/RadioResponse.vts.h",
-        "android/hardware/radio/1.0/Sap.vts.h",
-        "android/hardware/radio/1.0/SapCallback.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.radio@1.0-vts.profiler",
-    generated_sources: ["android.hardware.radio@1.0-vts.profiler_genc++"],
-    generated_headers: ["android.hardware.radio@1.0-vts.profiler_genc++_headers"],
-    export_generated_headers: ["android.hardware.radio@1.0-vts.profiler_genc++_headers"],
-    shared_libs: [
-        "libbase",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.radio@1.0",
-    ],
-}
diff --git a/radio/1.0/Android.mk b/radio/1.0/Android.mk
index 82bde55..9e9588a 100644
--- a/radio/1.0/Android.mk
+++ b/radio/1.0/Android.mk
@@ -8,7 +8,7 @@
 LOCAL_MODULE := android.hardware.radio@1.0-java
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -55,6 +55,44 @@
 LOCAL_GENERATED_SOURCES += $(GEN)
 
 #
+# Build types.hal (ApnTypes)
+#
+GEN := $(intermediates)/android/hardware/radio/V1_0/ApnTypes.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava \
+        -randroid.hardware:hardware/interfaces \
+        -randroid.hidl:system/libhidl/transport \
+        android.hardware.radio@1.0::types.ApnTypes
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (ApnTypes)
+#
+GEN := $(intermediates)/android/hardware/radio/V1_0/ApnTypes.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava \
+        -randroid.hardware:hardware/interfaces \
+        -randroid.hidl:system/libhidl/transport \
+        android.hardware.radio@1.0::types.ApnTypes
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
 # Build types.hal (AppState)
 #
 GEN := $(intermediates)/android/hardware/radio/V1_0/AppState.java
@@ -1290,6 +1328,25 @@
 LOCAL_GENERATED_SOURCES += $(GEN)
 
 #
+# Build types.hal (DeviceStateType)
+#
+GEN := $(intermediates)/android/hardware/radio/V1_0/DeviceStateType.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava \
+        -randroid.hardware:hardware/interfaces \
+        -randroid.hidl:system/libhidl/transport \
+        android.hardware.radio@1.0::types.DeviceStateType
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
 # Build types.hal (Dial)
 #
 GEN := $(intermediates)/android/hardware/radio/V1_0/Dial.java
@@ -1537,6 +1594,25 @@
 LOCAL_GENERATED_SOURCES += $(GEN)
 
 #
+# Build types.hal (IndicationFilter)
+#
+GEN := $(intermediates)/android/hardware/radio/V1_0/IndicationFilter.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava \
+        -randroid.hardware:hardware/interfaces \
+        -randroid.hidl:system/libhidl/transport \
+        android.hardware.radio@1.0::types.IndicationFilter
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
 # Build types.hal (LastCallFailCause)
 #
 GEN := $(intermediates)/android/hardware/radio/V1_0/LastCallFailCause.java
@@ -1651,6 +1727,25 @@
 LOCAL_GENERATED_SOURCES += $(GEN)
 
 #
+# Build types.hal (MvnoType)
+#
+GEN := $(intermediates)/android/hardware/radio/V1_0/MvnoType.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava \
+        -randroid.hardware:hardware/interfaces \
+        -randroid.hidl:system/libhidl/transport \
+        android.hardware.radio@1.0::types.MvnoType
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
 # Build types.hal (NeighboringCell)
 #
 GEN := $(intermediates)/android/hardware/radio/V1_0/NeighboringCell.java
@@ -2828,83 +2923,6 @@
 	$(transform-generated-source)
 LOCAL_GENERATED_SOURCES += $(GEN)
 
-
-#
-# Build types.hal (MvnoType)
-#
-GEN := $(intermediates)/android/hardware/radio/V1_0/MvnoType.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
-        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-        -Ljava \
-        -randroid.hardware:hardware/interfaces \
-        -randroid.hidl:system/libhidl/transport \
-        android.hardware.radio@1.0::types.MvnoType
-
-$(GEN): $(LOCAL_PATH)/types.hal
-	$(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (ApnTypes)
-#
-GEN := $(intermediates)/android/hardware/radio/V1_0/ApnTypes.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
-        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-        -Ljava \
-        -randroid.hardware:hardware/interfaces \
-        -randroid.hidl:system/libhidl/transport \
-        android.hardware.radio@1.0::types.ApnTypes
-
-$(GEN): $(LOCAL_PATH)/types.hal
-	$(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (IndicationFilter)
-#
-GEN := $(intermediates)/android/hardware/radio/V1_0/IndicationFilter.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
-        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-        -Ljava \
-        -randroid.hardware:hardware/interfaces \
-        -randroid.hidl:system/libhidl/transport \
-        android.hardware.radio@1.0::types.IndicationFilter
-
-$(GEN): $(LOCAL_PATH)/types.hal
-	$(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (DeviceStateType)
-#
-GEN := $(intermediates)/android/hardware/radio/V1_0/DeviceStateType.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
-        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-        -Ljava \
-        -randroid.hardware:hardware/interfaces \
-        -randroid.hidl:system/libhidl/transport \
-        android.hardware.radio@1.0::types.DeviceStateType
-
-$(GEN): $(LOCAL_PATH)/types.hal
-	$(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
 #
 # Build IRadio.hal
 #
@@ -3024,7 +3042,7 @@
 LOCAL_MODULE := android.hardware.radio@1.0-java-static
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -3071,6 +3089,44 @@
 LOCAL_GENERATED_SOURCES += $(GEN)
 
 #
+# Build types.hal (ApnTypes)
+#
+GEN := $(intermediates)/android/hardware/radio/V1_0/ApnTypes.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava \
+        -randroid.hardware:hardware/interfaces \
+        -randroid.hidl:system/libhidl/transport \
+        android.hardware.radio@1.0::types.ApnTypes
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (ApnTypes)
+#
+GEN := $(intermediates)/android/hardware/radio/V1_0/ApnTypes.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava \
+        -randroid.hardware:hardware/interfaces \
+        -randroid.hidl:system/libhidl/transport \
+        android.hardware.radio@1.0::types.ApnTypes
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
 # Build types.hal (AppState)
 #
 GEN := $(intermediates)/android/hardware/radio/V1_0/AppState.java
@@ -4306,6 +4362,25 @@
 LOCAL_GENERATED_SOURCES += $(GEN)
 
 #
+# Build types.hal (DeviceStateType)
+#
+GEN := $(intermediates)/android/hardware/radio/V1_0/DeviceStateType.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava \
+        -randroid.hardware:hardware/interfaces \
+        -randroid.hidl:system/libhidl/transport \
+        android.hardware.radio@1.0::types.DeviceStateType
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
 # Build types.hal (Dial)
 #
 GEN := $(intermediates)/android/hardware/radio/V1_0/Dial.java
@@ -4553,6 +4628,25 @@
 LOCAL_GENERATED_SOURCES += $(GEN)
 
 #
+# Build types.hal (IndicationFilter)
+#
+GEN := $(intermediates)/android/hardware/radio/V1_0/IndicationFilter.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava \
+        -randroid.hardware:hardware/interfaces \
+        -randroid.hidl:system/libhidl/transport \
+        android.hardware.radio@1.0::types.IndicationFilter
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
 # Build types.hal (LastCallFailCause)
 #
 GEN := $(intermediates)/android/hardware/radio/V1_0/LastCallFailCause.java
@@ -4667,6 +4761,25 @@
 LOCAL_GENERATED_SOURCES += $(GEN)
 
 #
+# Build types.hal (MvnoType)
+#
+GEN := $(intermediates)/android/hardware/radio/V1_0/MvnoType.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava \
+        -randroid.hardware:hardware/interfaces \
+        -randroid.hidl:system/libhidl/transport \
+        android.hardware.radio@1.0::types.MvnoType
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
 # Build types.hal (NeighboringCell)
 #
 GEN := $(intermediates)/android/hardware/radio/V1_0/NeighboringCell.java
@@ -5845,82 +5958,6 @@
 LOCAL_GENERATED_SOURCES += $(GEN)
 
 #
-# Build types.hal (MvnoType)
-#
-GEN := $(intermediates)/android/hardware/radio/V1_0/MvnoType.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
-        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-        -Ljava \
-        -randroid.hardware:hardware/interfaces \
-        -randroid.hidl:system/libhidl/transport \
-        android.hardware.radio@1.0::types.MvnoType
-
-$(GEN): $(LOCAL_PATH)/types.hal
-	$(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (ApnTypes)
-#
-GEN := $(intermediates)/android/hardware/radio/V1_0/ApnTypes.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
-        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-        -Ljava \
-        -randroid.hardware:hardware/interfaces \
-        -randroid.hidl:system/libhidl/transport \
-        android.hardware.radio@1.0::types.ApnTypes
-
-$(GEN): $(LOCAL_PATH)/types.hal
-	$(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (IndicationFilter)
-#
-GEN := $(intermediates)/android/hardware/radio/V1_0/IndicationFilter.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
-        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-        -Ljava \
-        -randroid.hardware:hardware/interfaces \
-        -randroid.hidl:system/libhidl/transport \
-        android.hardware.radio@1.0::types.IndicationFilter
-
-$(GEN): $(LOCAL_PATH)/types.hal
-	$(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (DeviceStateType)
-#
-GEN := $(intermediates)/android/hardware/radio/V1_0/DeviceStateType.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
-        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-        -Ljava \
-        -randroid.hardware:hardware/interfaces \
-        -randroid.hidl:system/libhidl/transport \
-        android.hardware.radio@1.0::types.DeviceStateType
-
-$(GEN): $(LOCAL_PATH)/types.hal
-	$(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
 # Build IRadio.hal
 #
 GEN := $(intermediates)/android/hardware/radio/V1_0/IRadio.java
diff --git a/radio/1.0/IRadioResponse.hal b/radio/1.0/IRadioResponse.hal
index 538c06d..dafd264 100644
--- a/radio/1.0/IRadioResponse.hal
+++ b/radio/1.0/IRadioResponse.hal
@@ -1562,6 +1562,16 @@
 
     /*
      * @param info Response info struct containing response type, serial no. and error
+     *
+     * Valid errors returned:
+     *   RadioError:NONE
+     *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:GENERIC_FAILURE
+     */
+    oneway reportStkServiceIsRunningResponse(RadioResponseInfo info);
+
+    /*
+     * @param info Response info struct containing response type, serial no. and error
      * @param source CDMA subscription source
      *
      * Valid errors returned:
diff --git a/sensors/1.0/Android.bp b/sensors/1.0/Android.bp
index d4ebe98..1ddb50c 100644
--- a/sensors/1.0/Android.bp
+++ b/sensors/1.0/Android.bp
@@ -1,5 +1,13 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.sensors@1.0_hal",
+    srcs: [
+        "types.hal",
+        "ISensors.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.sensors@1.0_genc++",
     tools: ["hidl-gen"],
@@ -54,106 +62,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.sensors.vts.driver@1.0_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: [
-        "types.hal",
-        "ISensors.hal",
-    ],
-    out: [
-        "android/hardware/sensors/1.0/types.vts.cpp",
-        "android/hardware/sensors/1.0/Sensors.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.sensors.vts.driver@1.0_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: [
-        "types.hal",
-        "ISensors.hal",
-    ],
-    out: [
-        "android/hardware/sensors/1.0/types.vts.h",
-        "android/hardware/sensors/1.0/Sensors.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.sensors.vts.driver@1.0",
-    generated_sources: ["android.hardware.sensors.vts.driver@1.0_genc++"],
-    generated_headers: ["android.hardware.sensors.vts.driver@1.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.sensors.vts.driver@1.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.sensors@1.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hidl.base@1.0",
-    ],
-}
-
-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: [
-        "types.hal",
-        "ISensors.hal",
-    ],
-    out: [
-        "android/hardware/sensors/1.0/types.vts.cpp",
-        "android/hardware/sensors/1.0/Sensors.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: [
-        "types.hal",
-        "ISensors.hal",
-    ],
-    out: [
-        "android/hardware/sensors/1.0/types.vts.h",
-        "android/hardware/sensors/1.0/Sensors.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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.sensors@1.0",
-    ],
-}
diff --git a/sensors/1.0/Android.mk b/sensors/1.0/Android.mk
index 5784916..29f7c7e 100644
--- a/sensors/1.0/Android.mk
+++ b/sensors/1.0/Android.mk
@@ -8,7 +8,7 @@
 LOCAL_MODULE := android.hardware.sensors@1.0-java-constants
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 #
diff --git a/soundtrigger/2.0/Android.bp b/soundtrigger/2.0/Android.bp
index a11cbe6..1473776 100644
--- a/soundtrigger/2.0/Android.bp
+++ b/soundtrigger/2.0/Android.bp
@@ -1,5 +1,14 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.soundtrigger@2.0_hal",
+    srcs: [
+        "types.hal",
+        "ISoundTriggerHw.hal",
+        "ISoundTriggerHwCallback.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.soundtrigger@2.0_genc++",
     tools: ["hidl-gen"],
@@ -64,117 +73,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.soundtrigger.vts.driver@2.0_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: [
-        "types.hal",
-        "ISoundTriggerHw.hal",
-        "ISoundTriggerHwCallback.hal",
-    ],
-    out: [
-        "android/hardware/soundtrigger/2.0/types.vts.cpp",
-        "android/hardware/soundtrigger/2.0/SoundTriggerHw.vts.cpp",
-        "android/hardware/soundtrigger/2.0/SoundTriggerHwCallback.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.soundtrigger.vts.driver@2.0_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: [
-        "types.hal",
-        "ISoundTriggerHw.hal",
-        "ISoundTriggerHwCallback.hal",
-    ],
-    out: [
-        "android/hardware/soundtrigger/2.0/types.vts.h",
-        "android/hardware/soundtrigger/2.0/SoundTriggerHw.vts.h",
-        "android/hardware/soundtrigger/2.0/SoundTriggerHwCallback.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.soundtrigger.vts.driver@2.0",
-    generated_sources: ["android.hardware.soundtrigger.vts.driver@2.0_genc++"],
-    generated_headers: ["android.hardware.soundtrigger.vts.driver@2.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.soundtrigger.vts.driver@2.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hardware.audio.common@2.0",
-        "android.hidl.base@1.0",
-        "android.hardware.soundtrigger@2.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hardware.audio.common@2.0",
-        "android.hidl.base@1.0",
-    ],
-}
-
-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: [
-        "types.hal",
-        "ISoundTriggerHw.hal",
-        "ISoundTriggerHwCallback.hal",
-    ],
-    out: [
-        "android/hardware/soundtrigger/2.0/types.vts.cpp",
-        "android/hardware/soundtrigger/2.0/SoundTriggerHw.vts.cpp",
-        "android/hardware/soundtrigger/2.0/SoundTriggerHwCallback.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: [
-        "types.hal",
-        "ISoundTriggerHw.hal",
-        "ISoundTriggerHwCallback.hal",
-    ],
-    out: [
-        "android/hardware/soundtrigger/2.0/types.vts.h",
-        "android/hardware/soundtrigger/2.0/SoundTriggerHw.vts.h",
-        "android/hardware/soundtrigger/2.0/SoundTriggerHwCallback.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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hardware.audio.common@2.0",
-        "android.hidl.base@1.0",
-        "android.hardware.soundtrigger@2.0",
-    ],
-}
diff --git a/tests/bar/1.0/Android.bp b/tests/bar/1.0/Android.bp
index fbec8d1..694804c 100644
--- a/tests/bar/1.0/Android.bp
+++ b/tests/bar/1.0/Android.bp
@@ -1,9 +1,7 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
-genrule {
-    name: "android.hardware.tests.bar@1.0_genc++",
-    tools: ["hidl-gen"],
-    cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.bar@1.0",
+filegroup {
+    name: "android.hardware.tests.bar@1.0_hal",
     srcs: [
         "types.hal",
         "IBar.hal",
@@ -12,6 +10,15 @@
         "IImportRules.hal",
         "IImportTypes.hal",
     ],
+}
+
+genrule {
+    name: "android.hardware.tests.bar@1.0_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.bar@1.0",
+    srcs: [
+        ":android.hardware.tests.bar@1.0_hal",
+    ],
     out: [
         "android/hardware/tests/bar/1.0/types.cpp",
         "android/hardware/tests/bar/1.0/BarAll.cpp",
@@ -27,12 +34,7 @@
     tools: ["hidl-gen"],
     cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.bar@1.0",
     srcs: [
-        "types.hal",
-        "IBar.hal",
-        "IComplicated.hal",
-        "IFooCallback.hal",
-        "IImportRules.hal",
-        "IImportTypes.hal",
+        ":android.hardware.tests.bar@1.0_hal",
     ],
     out: [
         "android/hardware/tests/bar/1.0/types.h",
diff --git a/tests/baz/1.0/Android.bp b/tests/baz/1.0/Android.bp
index 4106838..7939444 100644
--- a/tests/baz/1.0/Android.bp
+++ b/tests/baz/1.0/Android.bp
@@ -1,15 +1,22 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
-genrule {
-    name: "android.hardware.tests.baz@1.0_genc++",
-    tools: ["hidl-gen"],
-    cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.baz@1.0",
+filegroup {
+    name: "android.hardware.tests.baz@1.0_hal",
     srcs: [
         "types.hal",
         "IBase.hal",
         "IBaz.hal",
         "IBazCallback.hal",
     ],
+}
+
+genrule {
+    name: "android.hardware.tests.baz@1.0_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.baz@1.0",
+    srcs: [
+        ":android.hardware.tests.baz@1.0_hal",
+    ],
     out: [
         "android/hardware/tests/baz/1.0/types.cpp",
         "android/hardware/tests/baz/1.0/BaseAll.cpp",
@@ -23,10 +30,7 @@
     tools: ["hidl-gen"],
     cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.baz@1.0",
     srcs: [
-        "types.hal",
-        "IBase.hal",
-        "IBaz.hal",
-        "IBazCallback.hal",
+        ":android.hardware.tests.baz@1.0_hal",
     ],
     out: [
         "android/hardware/tests/baz/1.0/types.h",
diff --git a/tests/baz/1.0/Android.mk b/tests/baz/1.0/Android.mk
index 82ba3cb..40026ec 100644
--- a/tests/baz/1.0/Android.mk
+++ b/tests/baz/1.0/Android.mk
@@ -8,7 +8,7 @@
 LOCAL_MODULE := android.hardware.tests.baz@1.0-java
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -85,7 +85,7 @@
 LOCAL_MODULE := android.hardware.tests.baz@1.0-java-static
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
diff --git a/tests/expression/1.0/Android.bp b/tests/expression/1.0/Android.bp
index bb7aedd..5279503 100644
--- a/tests/expression/1.0/Android.bp
+++ b/tests/expression/1.0/Android.bp
@@ -1,12 +1,19 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.tests.expression@1.0_hal",
+    srcs: [
+        "IExpression.hal",
+        "IExpressionExt.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.tests.expression@1.0_genc++",
     tools: ["hidl-gen"],
     cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.expression@1.0",
     srcs: [
-        "IExpression.hal",
-        "IExpressionExt.hal",
+        ":android.hardware.tests.expression@1.0_hal",
     ],
     out: [
         "android/hardware/tests/expression/1.0/ExpressionAll.cpp",
@@ -19,8 +26,7 @@
     tools: ["hidl-gen"],
     cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.expression@1.0",
     srcs: [
-        "IExpression.hal",
-        "IExpressionExt.hal",
+        ":android.hardware.tests.expression@1.0_hal",
     ],
     out: [
         "android/hardware/tests/expression/1.0/IExpression.h",
diff --git a/tests/expression/1.0/Android.mk b/tests/expression/1.0/Android.mk
index 1c7da4b..6bc9390 100644
--- a/tests/expression/1.0/Android.mk
+++ b/tests/expression/1.0/Android.mk
@@ -8,7 +8,7 @@
 LOCAL_MODULE := android.hardware.tests.expression@1.0-java
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -64,7 +64,7 @@
 LOCAL_MODULE := android.hardware.tests.expression@1.0-java-static
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
diff --git a/tests/foo/1.0/Android.bp b/tests/foo/1.0/Android.bp
index 8294c65..9572855 100644
--- a/tests/foo/1.0/Android.bp
+++ b/tests/foo/1.0/Android.bp
@@ -1,9 +1,7 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
-genrule {
-    name: "android.hardware.tests.foo@1.0_genc++",
-    tools: ["hidl-gen"],
-    cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.foo@1.0",
+filegroup {
+    name: "android.hardware.tests.foo@1.0_hal",
     srcs: [
         "types.hal",
         "IFoo.hal",
@@ -12,6 +10,15 @@
         "ISimple.hal",
         "ITheirTypes.hal",
     ],
+}
+
+genrule {
+    name: "android.hardware.tests.foo@1.0_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.foo@1.0",
+    srcs: [
+        ":android.hardware.tests.foo@1.0_hal",
+    ],
     out: [
         "android/hardware/tests/foo/1.0/types.cpp",
         "android/hardware/tests/foo/1.0/FooAll.cpp",
@@ -27,12 +34,7 @@
     tools: ["hidl-gen"],
     cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.foo@1.0",
     srcs: [
-        "types.hal",
-        "IFoo.hal",
-        "IFooCallback.hal",
-        "IMyTypes.hal",
-        "ISimple.hal",
-        "ITheirTypes.hal",
+        ":android.hardware.tests.foo@1.0_hal",
     ],
     out: [
         "android/hardware/tests/foo/1.0/types.h",
diff --git a/tests/inheritance/1.0/Android.bp b/tests/inheritance/1.0/Android.bp
index 4389147..f50aee4 100644
--- a/tests/inheritance/1.0/Android.bp
+++ b/tests/inheritance/1.0/Android.bp
@@ -1,15 +1,22 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
-genrule {
-    name: "android.hardware.tests.inheritance@1.0_genc++",
-    tools: ["hidl-gen"],
-    cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.inheritance@1.0",
+filegroup {
+    name: "android.hardware.tests.inheritance@1.0_hal",
     srcs: [
         "IChild.hal",
         "IFetcher.hal",
         "IGrandparent.hal",
         "IParent.hal",
     ],
+}
+
+genrule {
+    name: "android.hardware.tests.inheritance@1.0_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.inheritance@1.0",
+    srcs: [
+        ":android.hardware.tests.inheritance@1.0_hal",
+    ],
     out: [
         "android/hardware/tests/inheritance/1.0/ChildAll.cpp",
         "android/hardware/tests/inheritance/1.0/FetcherAll.cpp",
@@ -23,10 +30,7 @@
     tools: ["hidl-gen"],
     cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.inheritance@1.0",
     srcs: [
-        "IChild.hal",
-        "IFetcher.hal",
-        "IGrandparent.hal",
-        "IParent.hal",
+        ":android.hardware.tests.inheritance@1.0_hal",
     ],
     out: [
         "android/hardware/tests/inheritance/1.0/IChild.h",
diff --git a/tests/inheritance/1.0/Android.mk b/tests/inheritance/1.0/Android.mk
index 8c1b1c8..21aac00 100644
--- a/tests/inheritance/1.0/Android.mk
+++ b/tests/inheritance/1.0/Android.mk
@@ -8,7 +8,7 @@
 LOCAL_MODULE := android.hardware.tests.inheritance@1.0-java
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -110,7 +110,7 @@
 LOCAL_MODULE := android.hardware.tests.inheritance@1.0-java-static
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
diff --git a/tests/libhwbinder/1.0/Android.bp b/tests/libhwbinder/1.0/Android.bp
index 8c27225..580e961 100644
--- a/tests/libhwbinder/1.0/Android.bp
+++ b/tests/libhwbinder/1.0/Android.bp
@@ -1,11 +1,18 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.tests.libhwbinder@1.0_hal",
+    srcs: [
+        "IBenchmark.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.tests.libhwbinder@1.0_genc++",
     tools: ["hidl-gen"],
     cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.libhwbinder@1.0",
     srcs: [
-        "IBenchmark.hal",
+        ":android.hardware.tests.libhwbinder@1.0_hal",
     ],
     out: [
         "android/hardware/tests/libhwbinder/1.0/BenchmarkAll.cpp",
@@ -17,7 +24,7 @@
     tools: ["hidl-gen"],
     cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.libhwbinder@1.0",
     srcs: [
-        "IBenchmark.hal",
+        ":android.hardware.tests.libhwbinder@1.0_hal",
     ],
     out: [
         "android/hardware/tests/libhwbinder/1.0/IBenchmark.h",
diff --git a/tests/libhwbinder/1.0/Android.mk b/tests/libhwbinder/1.0/Android.mk
index ae873af..2ee26d6 100644
--- a/tests/libhwbinder/1.0/Android.mk
+++ b/tests/libhwbinder/1.0/Android.mk
@@ -8,7 +8,7 @@
 LOCAL_MODULE := android.hardware.tests.libhwbinder@1.0-java
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -43,7 +43,7 @@
 LOCAL_MODULE := android.hardware.tests.libhwbinder@1.0-java-static
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
diff --git a/tests/memory/1.0/Android.bp b/tests/memory/1.0/Android.bp
index d8fe811..49faf41 100644
--- a/tests/memory/1.0/Android.bp
+++ b/tests/memory/1.0/Android.bp
@@ -1,11 +1,18 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.tests.memory@1.0_hal",
+    srcs: [
+        "IMemoryTest.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.tests.memory@1.0_genc++",
     tools: ["hidl-gen"],
     cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.memory@1.0",
     srcs: [
-        "IMemoryTest.hal",
+        ":android.hardware.tests.memory@1.0_hal",
     ],
     out: [
         "android/hardware/tests/memory/1.0/MemoryTestAll.cpp",
@@ -17,7 +24,7 @@
     tools: ["hidl-gen"],
     cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.memory@1.0",
     srcs: [
-        "IMemoryTest.hal",
+        ":android.hardware.tests.memory@1.0_hal",
     ],
     out: [
         "android/hardware/tests/memory/1.0/IMemoryTest.h",
diff --git a/tests/msgq/1.0/Android.bp b/tests/msgq/1.0/Android.bp
index 669722e..d17efe4 100644
--- a/tests/msgq/1.0/Android.bp
+++ b/tests/msgq/1.0/Android.bp
@@ -1,11 +1,18 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.tests.msgq@1.0_hal",
+    srcs: [
+        "ITestMsgQ.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.tests.msgq@1.0_genc++",
     tools: ["hidl-gen"],
     cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.msgq@1.0",
     srcs: [
-        "ITestMsgQ.hal",
+        ":android.hardware.tests.msgq@1.0_hal",
     ],
     out: [
         "android/hardware/tests/msgq/1.0/TestMsgQAll.cpp",
@@ -17,7 +24,7 @@
     tools: ["hidl-gen"],
     cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.msgq@1.0",
     srcs: [
-        "ITestMsgQ.hal",
+        ":android.hardware.tests.msgq@1.0_hal",
     ],
     out: [
         "android/hardware/tests/msgq/1.0/ITestMsgQ.h",
diff --git a/tests/pointer/1.0/Android.bp b/tests/pointer/1.0/Android.bp
index be7f873..7f66e2a 100644
--- a/tests/pointer/1.0/Android.bp
+++ b/tests/pointer/1.0/Android.bp
@@ -1,12 +1,19 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.tests.pointer@1.0_hal",
+    srcs: [
+        "IGraph.hal",
+        "IPointer.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.tests.pointer@1.0_genc++",
     tools: ["hidl-gen"],
     cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.pointer@1.0",
     srcs: [
-        "IGraph.hal",
-        "IPointer.hal",
+        ":android.hardware.tests.pointer@1.0_hal",
     ],
     out: [
         "android/hardware/tests/pointer/1.0/GraphAll.cpp",
@@ -19,8 +26,7 @@
     tools: ["hidl-gen"],
     cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.pointer@1.0",
     srcs: [
-        "IGraph.hal",
-        "IPointer.hal",
+        ":android.hardware.tests.pointer@1.0_hal",
     ],
     out: [
         "android/hardware/tests/pointer/1.0/IGraph.h",
diff --git a/thermal/1.0/Android.bp b/thermal/1.0/Android.bp
index fc44ff1..c4b6d39 100644
--- a/thermal/1.0/Android.bp
+++ b/thermal/1.0/Android.bp
@@ -1,5 +1,13 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.thermal@1.0_hal",
+    srcs: [
+        "types.hal",
+        "IThermal.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.thermal@1.0_genc++",
     tools: ["hidl-gen"],
@@ -54,106 +62,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.thermal.vts.driver@1.0_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: [
-        "types.hal",
-        "IThermal.hal",
-    ],
-    out: [
-        "android/hardware/thermal/1.0/types.vts.cpp",
-        "android/hardware/thermal/1.0/Thermal.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.thermal.vts.driver@1.0_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: [
-        "types.hal",
-        "IThermal.hal",
-    ],
-    out: [
-        "android/hardware/thermal/1.0/types.vts.h",
-        "android/hardware/thermal/1.0/Thermal.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.thermal.vts.driver@1.0",
-    generated_sources: ["android.hardware.thermal.vts.driver@1.0_genc++"],
-    generated_headers: ["android.hardware.thermal.vts.driver@1.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.thermal.vts.driver@1.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.thermal@1.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hidl.base@1.0",
-    ],
-}
-
-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: [
-        "types.hal",
-        "IThermal.hal",
-    ],
-    out: [
-        "android/hardware/thermal/1.0/types.vts.cpp",
-        "android/hardware/thermal/1.0/Thermal.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: [
-        "types.hal",
-        "IThermal.hal",
-    ],
-    out: [
-        "android/hardware/thermal/1.0/types.vts.h",
-        "android/hardware/thermal/1.0/Thermal.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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.thermal@1.0",
-    ],
-}
diff --git a/thermal/1.0/Android.mk b/thermal/1.0/Android.mk
index b88bb81..7748b9e 100644
--- a/thermal/1.0/Android.mk
+++ b/thermal/1.0/Android.mk
@@ -8,7 +8,7 @@
 LOCAL_MODULE := android.hardware.thermal@1.0-java
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -178,7 +178,7 @@
 LOCAL_MODULE := android.hardware.thermal@1.0-java-static
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -348,7 +348,7 @@
 LOCAL_MODULE := android.hardware.thermal@1.0-java-constants
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 #
diff --git a/tv/cec/1.0/Android.bp b/tv/cec/1.0/Android.bp
index 0096589..d2eee14 100644
--- a/tv/cec/1.0/Android.bp
+++ b/tv/cec/1.0/Android.bp
@@ -1,5 +1,14 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.tv.cec@1.0_hal",
+    srcs: [
+        "types.hal",
+        "IHdmiCec.hal",
+        "IHdmiCecCallback.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.tv.cec@1.0_genc++",
     tools: ["hidl-gen"],
@@ -62,114 +71,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.tv.cec.vts.driver@1.0_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: [
-        "types.hal",
-        "IHdmiCec.hal",
-        "IHdmiCecCallback.hal",
-    ],
-    out: [
-        "android/hardware/tv/cec/1.0/types.vts.cpp",
-        "android/hardware/tv/cec/1.0/HdmiCec.vts.cpp",
-        "android/hardware/tv/cec/1.0/HdmiCecCallback.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.tv.cec.vts.driver@1.0_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: [
-        "types.hal",
-        "IHdmiCec.hal",
-        "IHdmiCecCallback.hal",
-    ],
-    out: [
-        "android/hardware/tv/cec/1.0/types.vts.h",
-        "android/hardware/tv/cec/1.0/HdmiCec.vts.h",
-        "android/hardware/tv/cec/1.0/HdmiCecCallback.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.tv.cec.vts.driver@1.0",
-    generated_sources: ["android.hardware.tv.cec.vts.driver@1.0_genc++"],
-    generated_headers: ["android.hardware.tv.cec.vts.driver@1.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.tv.cec.vts.driver@1.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.tv.cec@1.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hidl.base@1.0",
-    ],
-}
-
-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: [
-        "types.hal",
-        "IHdmiCec.hal",
-        "IHdmiCecCallback.hal",
-    ],
-    out: [
-        "android/hardware/tv/cec/1.0/types.vts.cpp",
-        "android/hardware/tv/cec/1.0/HdmiCec.vts.cpp",
-        "android/hardware/tv/cec/1.0/HdmiCecCallback.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: [
-        "types.hal",
-        "IHdmiCec.hal",
-        "IHdmiCecCallback.hal",
-    ],
-    out: [
-        "android/hardware/tv/cec/1.0/types.vts.h",
-        "android/hardware/tv/cec/1.0/HdmiCec.vts.h",
-        "android/hardware/tv/cec/1.0/HdmiCecCallback.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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.tv.cec@1.0",
-    ],
-}
diff --git a/tv/cec/1.0/Android.mk b/tv/cec/1.0/Android.mk
index efa71a1..b08099e 100644
--- a/tv/cec/1.0/Android.mk
+++ b/tv/cec/1.0/Android.mk
@@ -8,7 +8,7 @@
 LOCAL_MODULE := android.hardware.tv.cec@1.0-java
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -296,7 +296,7 @@
 LOCAL_MODULE := android.hardware.tv.cec@1.0-java-static
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
diff --git a/tv/input/1.0/Android.bp b/tv/input/1.0/Android.bp
index a71cdc5..3666b85 100644
--- a/tv/input/1.0/Android.bp
+++ b/tv/input/1.0/Android.bp
@@ -1,5 +1,14 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.tv.input@1.0_hal",
+    srcs: [
+        "types.hal",
+        "ITvInput.hal",
+        "ITvInputCallback.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.tv.input@1.0_genc++",
     tools: ["hidl-gen"],
@@ -64,117 +73,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.tv.input.vts.driver@1.0_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: [
-        "types.hal",
-        "ITvInput.hal",
-        "ITvInputCallback.hal",
-    ],
-    out: [
-        "android/hardware/tv/input/1.0/types.vts.cpp",
-        "android/hardware/tv/input/1.0/TvInput.vts.cpp",
-        "android/hardware/tv/input/1.0/TvInputCallback.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.tv.input.vts.driver@1.0_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: [
-        "types.hal",
-        "ITvInput.hal",
-        "ITvInputCallback.hal",
-    ],
-    out: [
-        "android/hardware/tv/input/1.0/types.vts.h",
-        "android/hardware/tv/input/1.0/TvInput.vts.h",
-        "android/hardware/tv/input/1.0/TvInputCallback.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.tv.input.vts.driver@1.0",
-    generated_sources: ["android.hardware.tv.input.vts.driver@1.0_genc++"],
-    generated_headers: ["android.hardware.tv.input.vts.driver@1.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.tv.input.vts.driver@1.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hardware.audio.common@2.0",
-        "android.hidl.base@1.0",
-        "android.hardware.tv.input@1.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hardware.audio.common@2.0",
-        "android.hidl.base@1.0",
-    ],
-}
-
-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: [
-        "types.hal",
-        "ITvInput.hal",
-        "ITvInputCallback.hal",
-    ],
-    out: [
-        "android/hardware/tv/input/1.0/types.vts.cpp",
-        "android/hardware/tv/input/1.0/TvInput.vts.cpp",
-        "android/hardware/tv/input/1.0/TvInputCallback.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: [
-        "types.hal",
-        "ITvInput.hal",
-        "ITvInputCallback.hal",
-    ],
-    out: [
-        "android/hardware/tv/input/1.0/types.vts.h",
-        "android/hardware/tv/input/1.0/TvInput.vts.h",
-        "android/hardware/tv/input/1.0/TvInputCallback.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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hardware.audio.common@2.0",
-        "android.hidl.base@1.0",
-        "android.hardware.tv.input@1.0",
-    ],
-}
diff --git a/tv/input/1.0/default/TvInput.cpp b/tv/input/1.0/default/TvInput.cpp
index 4cd1d40..6fcb2e5 100644
--- a/tv/input/1.0/default/TvInput.cpp
+++ b/tv/input/1.0/default/TvInput.cpp
@@ -98,6 +98,8 @@
                 ++pos;
             }
         }
+    } else if (ret == -EINVAL) {
+        res = Result::INVALID_ARGUMENTS;
     }
     cb(res, tvStreamConfigs);
     return Void();
diff --git a/tv/input/1.0/vts/functional/tv_input_hidl_hal_test.cpp b/tv/input/1.0/vts/functional/tv_input_hidl_hal_test.cpp
index 1279ecd..3747dc5 100644
--- a/tv/input/1.0/vts/functional/tv_input_hidl_hal_test.cpp
+++ b/tv/input/1.0/vts/functional/tv_input_hidl_hal_test.cpp
@@ -22,6 +22,9 @@
 #include <android/hardware/tv/input/1.0/ITvInputCallback.h>
 
 #include <gtest/gtest.h>
+#include <utils/KeyedVector.h>
+#include <mutex>
+#include <vector>
 
 using ::android::hardware::tv::input::V1_0::ITvInput;
 using ::android::hardware::tv::input::V1_0::ITvInputCallback;
@@ -33,44 +36,158 @@
 using ::android::hardware::tv::input::V1_0::TvStreamConfig;
 using ::android::hardware::Return;
 using ::android::hardware::Void;
+using ::android::hardware::hidl_vec;
 using ::android::sp;
 
+#define WAIT_FOR_EVENT_TIMEOUT 5
+#define DEFAULT_ID INT32_MIN
 
-// Simple ITvInputCallback used as part of testing.
-class TvInputCallback : public ITvInputCallback {
-  public:
-   TvInputCallback() {};
-
-   virtual ~TvInputCallback() = default;
-
-   // notify callback function - currently no-op.
-   // TODO: modify it later.
-   Return<void> notify(const TvInputEvent& event) override {
-     return Void();
-   };
-};
-
-
-// The main test class for TV Input HIDL HAL.
+/* The main test class for TV Input HIDL HAL. */
 class TvInputHidlTest : public ::testing::Test {
  public:
   virtual void SetUp() override {
-    // currently test passthrough mode only
-    tv_input = ITvInput::getService();
-    ASSERT_NE(tv_input, nullptr);
-
-    tv_input_callback = new TvInputCallback();
-    ASSERT_NE(tv_input_callback, nullptr);
+    tv_input_ = ITvInput::getService();
+    ASSERT_NE(tv_input_, nullptr);
+    tv_input_callback_ = new TvInputCallback(*this);
+    ASSERT_NE(tv_input_callback_, nullptr);
+    tv_input_->setCallback(tv_input_callback_);
+    // All events received within the timeout should be handled.
+    sleep(WAIT_FOR_EVENT_TIMEOUT);
   }
 
   virtual void TearDown() override {}
 
-  sp<ITvInput> tv_input;
-  sp<ITvInputCallback> tv_input_callback;
+  /* Called when a DEVICE_AVAILABLE event is received. */
+  void onDeviceAvailable(const TvInputDeviceInfo& deviceInfo) {
+    device_info_.add(deviceInfo.deviceId, deviceInfo);
+  }
+
+  /* Called when a DEVICE_UNAVAILABLE event is received. */
+  void onDeviceUnavailable(int32_t deviceId) {
+    device_info_.removeItem(deviceId);
+  }
+
+  /* Called when a DEVICE_CONFIGURATIONS_CHANGED event is received. */
+  Result onStreamConfigurationsChanged(int32_t deviceId) {
+    return updateStreamConfigurations(deviceId);
+  }
+
+  /* Gets and updates the stream configurations for a device. */
+  Result updateStreamConfigurations(int32_t deviceId) {
+    stream_config_.removeItem(deviceId);
+    Result result = Result::UNKNOWN;
+    hidl_vec<TvStreamConfig> list;
+    tv_input_->getStreamConfigurations(deviceId,
+        [&result, &list](Result res, hidl_vec<TvStreamConfig> configs) {
+          result = res;
+          if (res == Result::OK) {
+            list = configs;
+          }
+        });
+    if (result == Result::OK) {
+      stream_config_.add(deviceId, list);
+    }
+    return result;
+  }
+
+  /* Gets and updates the stream configurations for all existing devices. */
+  void updateAllStreamConfigurations() {
+    for (size_t i = 0; i < device_info_.size(); i++) {
+      int32_t device_id = device_info_.keyAt(i);
+      updateStreamConfigurations(device_id);
+    }
+  }
+
+  /* Returns a list of indices of stream_config_ whose corresponding values are not empty. */
+  std::vector<size_t> getConfigIndices() {
+    std::vector<size_t> indices;
+    for (size_t i = 0; i < stream_config_.size(); i++) {
+      if (stream_config_.valueAt(i).size() != 0) {
+        indices.push_back(i);
+      }
+    }
+    return indices;
+  }
+
+  /*
+   * Returns DEFAULT_ID if there is no missing integer in the range [0, the size of nums).
+   * Otherwise, returns the smallest missing non-negative integer.
+   */
+  int32_t getNumNotIn(std::vector<int32_t>& nums) {
+    int32_t result = DEFAULT_ID;
+    int32_t size = static_cast<int32_t>(nums.size());
+    for (int32_t i = 0; i < size; i++) {
+      // Put every element to its target position, if possible.
+      int32_t target_pos = nums[i];
+      while (target_pos >= 0 && target_pos < size && i != target_pos && nums[i] != nums[target_pos]) {
+        std::swap(nums[i], nums[target_pos]);
+        target_pos = nums[i];
+      }
+    }
+
+    for (int32_t i = 0; i < size; i++) {
+      if (nums[i] != i) {
+        return i;
+      }
+    }
+    return result;
+  }
+
+  /* A simple test implementation of TvInputCallback for TV Input Events. */
+  class TvInputCallback : public ITvInputCallback {
+    public:
+     TvInputCallback(TvInputHidlTest& parent) : parent_(parent){};
+
+     virtual ~TvInputCallback() = default;
+
+     /*
+      * Notifies the client that an event has occured. For possible event types,
+      * check TvInputEventType.
+      */
+     Return<void> notify(const TvInputEvent& event) override {
+       std::unique_lock<std::mutex> lock(parent_.mutex_);
+       switch(event.type) {
+         case TvInputEventType::DEVICE_AVAILABLE:
+           parent_.onDeviceAvailable(event.deviceInfo);
+           break;
+         case TvInputEventType::DEVICE_UNAVAILABLE:
+           parent_.onDeviceUnavailable(event.deviceInfo.deviceId);
+           break;
+         case TvInputEventType::STREAM_CONFIGURATIONS_CHANGED:
+           parent_.onStreamConfigurationsChanged(event.deviceInfo.deviceId);
+           break;
+       }
+       return Void();
+     };
+    private:
+     /* The test contains this callback instance. */
+     TvInputHidlTest& parent_;
+  };
+
+  /* The TvInput used for the test. */
+  sp<ITvInput> tv_input_;
+
+  /* The TvInputCallback used for the test. */
+  sp<ITvInputCallback> tv_input_callback_;
+
+  /*
+   * A KeyedVector stores device information of every available device.
+   * A key is a device ID and the corresponding value is the TvInputDeviceInfo.
+   */
+  android::KeyedVector<int32_t, TvInputDeviceInfo> device_info_;
+
+  /*
+   * A KeyedVector stores a list of stream configurations of every available device.
+   * A key is a device ID and the corresponding value is the stream configuration list.
+   */
+  android::KeyedVector<int32_t, hidl_vec<TvStreamConfig>> stream_config_;
+
+  /* The mutex controls the access of shared data. */
+  std::mutex mutex_;
 };
 
 
-// A class for test environment setup.
+/* A class for test environment setup. */
 class TvInputHidlEnvironment : public ::testing::Environment {
  public:
   virtual void SetUp() {}
@@ -79,9 +196,161 @@
  private:
 };
 
-// TODO: remove this test and add meaningful tests.
-TEST_F(TvInputHidlTest, DummyTest) {
-  EXPECT_NE(tv_input, nullptr);
+/*
+ * GetStreamConfigTest:
+ * Calls updateStreamConfigurations() for each existing device
+ * Checks returned results
+ */
+TEST_F(TvInputHidlTest, GetStreamConfigTest) {
+  std::unique_lock<std::mutex> lock(mutex_);
+  for (size_t i = 0; i < device_info_.size(); i++) {
+    int32_t device_id = device_info_.keyAt(i);
+    Result result = updateStreamConfigurations(device_id);
+    EXPECT_EQ(Result::OK, result);
+  }
+}
+
+/*
+ * OpenAndCloseStreamTest:
+ * Calls openStream() and then closeStream() for each existing stream
+ * Checks returned results
+ */
+TEST_F(TvInputHidlTest, OpenAndCloseStreamTest) {
+  std::unique_lock<std::mutex> lock(mutex_);
+  updateAllStreamConfigurations();
+  for (size_t j = 0; j < stream_config_.size(); j++) {
+    int32_t device_id = stream_config_.keyAt(j);
+    hidl_vec<TvStreamConfig> config = stream_config_.valueAt(j);
+    for (size_t i = 0; i < config.size(); i++) {
+      Result result = Result::UNKNOWN;
+      int32_t stream_id = config[i].streamId;
+      tv_input_->openStream(device_id, stream_id,
+          [&result](Result res, const native_handle_t*) {
+              result = res;
+          });
+      EXPECT_EQ(Result::OK, result);
+
+      result = Result::UNKNOWN;
+      result = tv_input_->closeStream(device_id, stream_id);
+      EXPECT_EQ(Result::OK, result);
+    }
+  }
+}
+
+/*
+ * InvalidDeviceIdTest:
+ * Calls updateStreamConfigurations(), openStream(), and closeStream()
+ * for a non-existing device
+ * Checks returned results
+ * The results should be Result::INVALID_ARGUMENTS
+ */
+TEST_F(TvInputHidlTest, InvalidDeviceIdTest) {
+  std::unique_lock<std::mutex> lock(mutex_);
+
+  std::vector<int32_t> device_ids;
+  for (size_t i = 0; i < device_info_.size(); i++) {
+    device_ids.push_back(device_info_.keyAt(i));
+  }
+  // Get a non-existing device ID.
+  int32_t id = getNumNotIn(device_ids);
+  EXPECT_EQ(Result::INVALID_ARGUMENTS, updateStreamConfigurations(id));
+
+  Result result = Result::UNKNOWN;
+  int32_t stream_id = 0;
+  tv_input_->openStream(id, stream_id,
+      [&result](Result res, const native_handle_t*) {
+          result = res;
+      });
+  EXPECT_EQ(Result::INVALID_ARGUMENTS, result);
+
+  result = Result::UNKNOWN;
+  result = tv_input_->closeStream(id, stream_id);
+  EXPECT_EQ(Result::INVALID_ARGUMENTS, result);
+}
+
+/*
+ * InvalidStreamIdTest:
+ * Calls openStream(), and closeStream() for a non-existing stream
+ * Checks returned results
+ * The results should be Result::INVALID_ARGUMENTS
+ */
+TEST_F(TvInputHidlTest, InvalidStreamIdTest) {
+  std::unique_lock<std::mutex> lock(mutex_);
+  if (device_info_.isEmpty()) {
+    return;
+  }
+  updateAllStreamConfigurations();
+
+  int32_t device_id = device_info_.keyAt(0);
+  // Get a non-existing stream ID.
+  int32_t id = DEFAULT_ID;
+  if (stream_config_.indexOfKey(device_id) >= 0) {
+    std::vector<int32_t> stream_ids;
+    hidl_vec<TvStreamConfig> config = stream_config_.valueFor(device_id);
+    for (size_t i = 0; i < config.size(); i++) {
+      stream_ids.push_back(config[i].streamId);
+    }
+    id = getNumNotIn(stream_ids);
+  }
+
+  Result result = Result::UNKNOWN;
+  tv_input_->openStream(device_id, id,
+      [&result](Result res, const native_handle_t*) {
+          result = res;
+      });
+  EXPECT_EQ(Result::INVALID_ARGUMENTS, result);
+
+  result = Result::UNKNOWN;
+  result = tv_input_->closeStream(device_id, id);
+  EXPECT_EQ(Result::INVALID_ARGUMENTS, result);
+}
+
+/*
+ * OpenAnOpenedStreamsTest:
+ * Calls openStream() twice for a stream (if any)
+ * Checks returned results
+ * The result of the second call should be Result::INVALID_STATE
+ */
+TEST_F(TvInputHidlTest, OpenAnOpenedStreamsTest) {
+  std::unique_lock<std::mutex> lock(mutex_);
+  updateAllStreamConfigurations();
+  std::vector<size_t> indices = getConfigIndices();
+  if (indices.empty()) {
+    return;
+  }
+  int32_t device_id = stream_config_.keyAt(indices[0]);
+  int32_t stream_id = stream_config_.valueAt(indices[0])[0].streamId;
+
+  Result result = Result::UNKNOWN;
+  tv_input_->openStream(device_id, stream_id,
+      [&result](Result res, const native_handle_t*) {
+          result = res;
+      });
+  EXPECT_EQ(Result::OK, result);
+
+  tv_input_->openStream(device_id, stream_id,
+      [&result](Result res, const native_handle_t*) {
+          result = res;
+      });
+  EXPECT_EQ(Result::INVALID_STATE, result);
+}
+
+/*
+ * CloseStreamBeforeOpenTest:
+ * Calls closeStream() without calling openStream() for a stream (if any)
+ * Checks the returned result
+ * The result should be Result::INVALID_STATE
+ */
+TEST_F(TvInputHidlTest, CloseStreamBeforeOpenTest) {
+  std::unique_lock<std::mutex> lock(mutex_);
+  updateAllStreamConfigurations();
+  std::vector<size_t> indices = getConfigIndices();
+  if (indices.empty()) {
+    return;
+  }
+  int32_t device_id = stream_config_.keyAt(indices[0]);
+  int32_t stream_id = stream_config_.valueAt(indices[0])[0].streamId;
+  EXPECT_EQ(Result::INVALID_STATE, tv_input_->closeStream(device_id, stream_id));
 }
 
 int main(int argc, char **argv) {
diff --git a/usb/1.0/Android.bp b/usb/1.0/Android.bp
index a23f46e..3505ded 100644
--- a/usb/1.0/Android.bp
+++ b/usb/1.0/Android.bp
@@ -1,5 +1,14 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.usb@1.0_hal",
+    srcs: [
+        "types.hal",
+        "IUsb.hal",
+        "IUsbCallback.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.usb@1.0_genc++",
     tools: ["hidl-gen"],
@@ -62,114 +71,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.usb.vts.driver@1.0_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: [
-        "types.hal",
-        "IUsb.hal",
-        "IUsbCallback.hal",
-    ],
-    out: [
-        "android/hardware/usb/1.0/types.vts.cpp",
-        "android/hardware/usb/1.0/Usb.vts.cpp",
-        "android/hardware/usb/1.0/UsbCallback.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.usb.vts.driver@1.0_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: [
-        "types.hal",
-        "IUsb.hal",
-        "IUsbCallback.hal",
-    ],
-    out: [
-        "android/hardware/usb/1.0/types.vts.h",
-        "android/hardware/usb/1.0/Usb.vts.h",
-        "android/hardware/usb/1.0/UsbCallback.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.usb.vts.driver@1.0",
-    generated_sources: ["android.hardware.usb.vts.driver@1.0_genc++"],
-    generated_headers: ["android.hardware.usb.vts.driver@1.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.usb.vts.driver@1.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.usb@1.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hidl.base@1.0",
-    ],
-}
-
-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: [
-        "types.hal",
-        "IUsb.hal",
-        "IUsbCallback.hal",
-    ],
-    out: [
-        "android/hardware/usb/1.0/types.vts.cpp",
-        "android/hardware/usb/1.0/Usb.vts.cpp",
-        "android/hardware/usb/1.0/UsbCallback.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: [
-        "types.hal",
-        "IUsb.hal",
-        "IUsbCallback.hal",
-    ],
-    out: [
-        "android/hardware/usb/1.0/types.vts.h",
-        "android/hardware/usb/1.0/Usb.vts.h",
-        "android/hardware/usb/1.0/UsbCallback.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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.usb@1.0",
-    ],
-}
diff --git a/usb/1.0/Android.mk b/usb/1.0/Android.mk
index 0eded5b..7be7147 100644
--- a/usb/1.0/Android.mk
+++ b/usb/1.0/Android.mk
@@ -8,7 +8,7 @@
 LOCAL_MODULE := android.hardware.usb@1.0-java
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -201,7 +201,7 @@
 LOCAL_MODULE := android.hardware.usb@1.0-java-static
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -394,7 +394,7 @@
 LOCAL_MODULE := android.hardware.usb@1.0-java-constants
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 #
diff --git a/vehicle/2.0/Android.bp b/vehicle/2.0/Android.bp
deleted file mode 100644
index dfc9d4d..0000000
--- a/vehicle/2.0/Android.bp
+++ /dev/null
@@ -1,175 +0,0 @@
-// This file is autogenerated by hidl-gen. Do not edit manually.
-
-genrule {
-    name: "android.hardware.vehicle@2.0_genc++",
-    tools: ["hidl-gen"],
-    cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.vehicle@2.0",
-    srcs: [
-        "types.hal",
-        "IVehicle.hal",
-        "IVehicleCallback.hal",
-    ],
-    out: [
-        "android/hardware/vehicle/2.0/types.cpp",
-        "android/hardware/vehicle/2.0/VehicleAll.cpp",
-        "android/hardware/vehicle/2.0/VehicleCallbackAll.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.vehicle@2.0_genc++_headers",
-    tools: ["hidl-gen"],
-    cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.vehicle@2.0",
-    srcs: [
-        "types.hal",
-        "IVehicle.hal",
-        "IVehicleCallback.hal",
-    ],
-    out: [
-        "android/hardware/vehicle/2.0/types.h",
-        "android/hardware/vehicle/2.0/IVehicle.h",
-        "android/hardware/vehicle/2.0/IHwVehicle.h",
-        "android/hardware/vehicle/2.0/BnHwVehicle.h",
-        "android/hardware/vehicle/2.0/BpHwVehicle.h",
-        "android/hardware/vehicle/2.0/BsVehicle.h",
-        "android/hardware/vehicle/2.0/IVehicleCallback.h",
-        "android/hardware/vehicle/2.0/IHwVehicleCallback.h",
-        "android/hardware/vehicle/2.0/BnHwVehicleCallback.h",
-        "android/hardware/vehicle/2.0/BpHwVehicleCallback.h",
-        "android/hardware/vehicle/2.0/BsVehicleCallback.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.vehicle@2.0",
-    generated_sources: ["android.hardware.vehicle@2.0_genc++"],
-    generated_headers: ["android.hardware.vehicle@2.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.vehicle@2.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "android.hidl.base@1.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hidl.base@1.0",
-    ],
-}
-
-genrule {
-    name: "android.hardware.vehicle.vts.driver@2.0_genc++",
-    tools: ["hidl-gen", "vtsc"],
-    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.vehicle@2.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/vehicle/2.0/ $(genDir)/android/hardware/vehicle/2.0/",
-    srcs: [
-        "types.hal",
-        "IVehicle.hal",
-        "IVehicleCallback.hal",
-    ],
-    out: [
-        "android/hardware/vehicle/2.0/types.vts.cpp",
-        "android/hardware/vehicle/2.0/Vehicle.vts.cpp",
-        "android/hardware/vehicle/2.0/VehicleCallback.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.vehicle.vts.driver@2.0_genc++_headers",
-    tools: ["hidl-gen", "vtsc"],
-    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.vehicle@2.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/vehicle/2.0/ $(genDir)/android/hardware/vehicle/2.0/",
-    srcs: [
-        "types.hal",
-        "IVehicle.hal",
-        "IVehicleCallback.hal",
-    ],
-    out: [
-        "android/hardware/vehicle/2.0/types.vts.h",
-        "android/hardware/vehicle/2.0/Vehicle.vts.h",
-        "android/hardware/vehicle/2.0/VehicleCallback.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.vehicle.vts.driver@2.0",
-    generated_sources: ["android.hardware.vehicle.vts.driver@2.0_genc++"],
-    generated_headers: ["android.hardware.vehicle.vts.driver@2.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.vehicle.vts.driver@2.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.vehicle@2.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hidl.base@1.0",
-    ],
-}
-
-genrule {
-    name: "android.hardware.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.vehicle@2.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/vehicle/2.0/ $(genDir)/android/hardware/vehicle/2.0/",
-    srcs: [
-        "types.hal",
-        "IVehicle.hal",
-        "IVehicleCallback.hal",
-    ],
-    out: [
-        "android/hardware/vehicle/2.0/types.vts.cpp",
-        "android/hardware/vehicle/2.0/Vehicle.vts.cpp",
-        "android/hardware/vehicle/2.0/VehicleCallback.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.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.vehicle@2.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/vehicle/2.0/ $(genDir)/android/hardware/vehicle/2.0/",
-    srcs: [
-        "types.hal",
-        "IVehicle.hal",
-        "IVehicleCallback.hal",
-    ],
-    out: [
-        "android/hardware/vehicle/2.0/types.vts.h",
-        "android/hardware/vehicle/2.0/Vehicle.vts.h",
-        "android/hardware/vehicle/2.0/VehicleCallback.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.vehicle@2.0-vts.profiler",
-    generated_sources: ["android.hardware.vehicle@2.0-vts.profiler_genc++"],
-    generated_headers: ["android.hardware.vehicle@2.0-vts.profiler_genc++_headers"],
-    export_generated_headers: ["android.hardware.vehicle@2.0-vts.profiler_genc++_headers"],
-    shared_libs: [
-        "libbase",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.vehicle@2.0",
-    ],
-}
diff --git a/vehicle/2.0/default/android.hardware.vehicle@2.0-service.rc b/vehicle/2.0/default/android.hardware.vehicle@2.0-service.rc
deleted file mode 100644
index 622cb1e..0000000
--- a/vehicle/2.0/default/android.hardware.vehicle@2.0-service.rc
+++ /dev/null
@@ -1,4 +0,0 @@
-service vehicle-hal-2.0 /system/bin/hw/android.hardware.vehicle@2.0-service
-    class hal
-    user vehicle_network
-    group system
diff --git a/vehicle/2.0/default/impl/DefaultVehicleHal.cpp b/vehicle/2.0/default/impl/DefaultVehicleHal.cpp
deleted file mode 100644
index c90dbce..0000000
--- a/vehicle/2.0/default/impl/DefaultVehicleHal.cpp
+++ /dev/null
@@ -1,321 +0,0 @@
-/*
- * 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.
- */
-
-#include "DefaultVehicleHal.h"
-
-#include <algorithm>
-
-#define LOG_TAG "default_vehicle"
-#include <android/log.h>
-
-namespace android {
-namespace hardware {
-namespace vehicle {
-namespace V2_0 {
-
-namespace impl {
-
-VehicleHal::VehiclePropValuePtr DefaultVehicleHal::get(
-        const VehiclePropValue& requestedPropValue, StatusCode* outStatus) {
-    *outStatus = StatusCode::OK;
-
-    VehiclePropValuePtr v;
-    auto property = static_cast<VehicleProperty>(requestedPropValue.prop);
-    int32_t areaId = requestedPropValue.areaId;
-    auto& pool = *getValuePool();
-
-    switch (property) {
-        case VehicleProperty::INFO_MAKE:
-            v = pool.obtainString("Default Car");
-            break;
-        case VehicleProperty::HVAC_FAN_SPEED:
-            v = pool.obtainInt32(mFanSpeed);
-            break;
-        case VehicleProperty::HVAC_POWER_ON:
-            v = pool.obtainBoolean(mHvacPowerOn);
-            break;
-        case VehicleProperty::HVAC_RECIRC_ON:
-            v = pool.obtainBoolean(mHvacRecircOn);
-            break;
-        case VehicleProperty::HVAC_AC_ON:
-            v = pool.obtainBoolean(mHvacAcOn);
-            break;
-        case VehicleProperty::HVAC_AUTO_ON:
-            v = pool.obtainBoolean(mHvacAutoOn);
-            break;
-        case VehicleProperty::HVAC_FAN_DIRECTION:
-            v = pool.obtainInt32(toInt(mFanDirection));
-            break;
-        case VehicleProperty::HVAC_DEFROSTER:
-            bool defroster;
-            *outStatus = getHvacDefroster(areaId, &defroster);
-            if (StatusCode::OK == *outStatus) {
-                v = pool.obtainBoolean(defroster);
-            }
-            break;
-        case VehicleProperty::HVAC_TEMPERATURE_SET:
-            float value;
-            *outStatus = getHvacTemperature(requestedPropValue.areaId,
-                                            &value);
-            if (StatusCode::OK == *outStatus) {
-                v = pool.obtainFloat(value);
-            }
-            break;
-        case VehicleProperty::INFO_FUEL_CAPACITY:
-            v = pool.obtainFloat(0.75f);
-            break;
-        case VehicleProperty::DISPLAY_BRIGHTNESS:
-            v = pool.obtainInt32(mBrightness);
-            break;
-        case VehicleProperty::NIGHT_MODE:
-            v = pool.obtainBoolean(false);
-            break;
-        case VehicleProperty::GEAR_SELECTION:
-            v = pool.obtainInt32(toInt(VehicleGear::GEAR_PARK));
-            break;
-        case VehicleProperty::DRIVING_STATUS:
-            v = pool.obtainInt32(toInt(VehicleDrivingStatus::UNRESTRICTED));
-            break;
-        case VehicleProperty::IGNITION_STATE:
-            v = pool.obtainInt32(toInt(VehicleIgnitionState::ACC));
-            break;
-        case VehicleProperty::OBD2_LIVE_FRAME:
-            v = pool.obtainComplex();
-            *outStatus = fillObd2LiveFrame(&v);
-            break;
-        case VehicleProperty::OBD2_FREEZE_FRAME:
-            v = pool.obtainComplex();
-            *outStatus = fillObd2FreezeFrame(&v);
-            break;
-        default:
-            *outStatus = StatusCode::INVALID_ARG;
-    }
-
-    if (StatusCode::OK == *outStatus && v.get() != nullptr) {
-        v->prop = toInt(property);
-        v->areaId = areaId;
-        v->timestamp = elapsedRealtimeNano();
-    }
-
-    return v;
-}
-
-StatusCode DefaultVehicleHal::set(const VehiclePropValue& propValue) {
-    auto property = static_cast<VehicleProperty>(propValue.prop);
-    const auto& v = propValue.value;
-
-    StatusCode status = StatusCode::OK;
-
-    switch (property) {
-        case VehicleProperty::HVAC_POWER_ON:
-            mHvacPowerOn = v.int32Values[0] == 1;
-            break;
-        case VehicleProperty::HVAC_RECIRC_ON:
-            mHvacRecircOn = v.int32Values[0] == 1;
-            break;
-        case VehicleProperty::HVAC_AC_ON:
-            mHvacAcOn = v.int32Values[0] == 1;
-            break;
-        case VehicleProperty::HVAC_AUTO_ON:
-            mHvacAutoOn = v.int32Values[0] == 1;
-            break;
-        case VehicleProperty::HVAC_DEFROSTER:
-            status = setHvacDefroster(propValue.areaId, v.int32Values[0] == 1);
-            break;
-        case VehicleProperty::HVAC_FAN_DIRECTION:
-            mFanDirection =
-                    static_cast<VehicleHvacFanDirection>(v.int32Values[0]);
-            break;
-        case VehicleProperty::HVAC_FAN_SPEED:
-            mFanSpeed = v.int32Values[0];
-            break;
-        case VehicleProperty::HVAC_TEMPERATURE_SET:
-            status = setHvacTemperature(propValue.areaId, v.floatValues[0]);
-            break;
-        case VehicleProperty::DISPLAY_BRIGHTNESS:
-            mBrightness = v.int32Values[0];
-            break;
-        default:
-            status = StatusCode::INVALID_ARG;
-    }
-
-    return status;
-}
-
-void DefaultVehicleHal::onCreate() {
-    const auto& propConfigs(listProperties());
-    auto obd2LiveFramePropConfig = std::find_if(
-        propConfigs.begin(),
-        propConfigs.end(),
-        [] (VehiclePropConfig config) -> bool {
-            return (config.prop == toInt(VehicleProperty::OBD2_LIVE_FRAME));
-        });
-    mObd2SensorStore.reset(new Obd2SensorStore(
-        obd2LiveFramePropConfig->configArray[0],
-        obd2LiveFramePropConfig->configArray[1]));
-    // precalculate OBD2 sensor values
-    mObd2SensorStore->setIntegerSensor(
-        Obd2IntegerSensorIndex::FUEL_SYSTEM_STATUS,
-        toInt(FuelSystemStatus::CLOSED_LOOP));
-    mObd2SensorStore->setIntegerSensor(
-        Obd2IntegerSensorIndex::MALFUNCTION_INDICATOR_LIGHT_ON, 0);
-    mObd2SensorStore->setIntegerSensor(
-        Obd2IntegerSensorIndex::IGNITION_MONITORS_SUPPORTED,
-        toInt(IgnitionMonitorKind::SPARK));
-    mObd2SensorStore->setIntegerSensor(Obd2IntegerSensorIndex::IGNITION_SPECIFIC_MONITORS,
-        CommonIgnitionMonitors::COMPONENTS_AVAILABLE |
-        CommonIgnitionMonitors::MISFIRE_AVAILABLE |
-        SparkIgnitionMonitors::AC_REFRIGERANT_AVAILABLE |
-        SparkIgnitionMonitors::EVAPORATIVE_SYSTEM_AVAILABLE);
-    mObd2SensorStore->setIntegerSensor(
-        Obd2IntegerSensorIndex::INTAKE_AIR_TEMPERATURE, 35);
-    mObd2SensorStore->setIntegerSensor(
-        Obd2IntegerSensorIndex::COMMANDED_SECONDARY_AIR_STATUS,
-        toInt(SecondaryAirStatus::FROM_OUTSIDE_OR_OFF));
-    mObd2SensorStore->setIntegerSensor(
-        Obd2IntegerSensorIndex::NUM_OXYGEN_SENSORS_PRESENT, 1);
-    mObd2SensorStore->setIntegerSensor(
-        Obd2IntegerSensorIndex::RUNTIME_SINCE_ENGINE_START, 500);
-    mObd2SensorStore->setIntegerSensor(
-        Obd2IntegerSensorIndex::DISTANCE_TRAVELED_WITH_MALFUNCTION_INDICATOR_LIGHT_ON, 0);
-    mObd2SensorStore->setIntegerSensor(
-        Obd2IntegerSensorIndex::WARMUPS_SINCE_CODES_CLEARED, 51);
-    mObd2SensorStore->setIntegerSensor(
-        Obd2IntegerSensorIndex::DISTANCE_TRAVELED_SINCE_CODES_CLEARED, 365);
-    mObd2SensorStore->setIntegerSensor(
-        Obd2IntegerSensorIndex::ABSOLUTE_BAROMETRIC_PRESSURE, 30);
-    mObd2SensorStore->setIntegerSensor(
-        Obd2IntegerSensorIndex::CONTROL_MODULE_VOLTAGE, 12);
-    mObd2SensorStore->setIntegerSensor(
-        Obd2IntegerSensorIndex::AMBIENT_AIR_TEMPERATURE, 18);
-    mObd2SensorStore->setIntegerSensor(
-        Obd2IntegerSensorIndex::MAX_FUEL_AIR_EQUIVALENCE_RATIO, 1);
-    mObd2SensorStore->setIntegerSensor(
-        Obd2IntegerSensorIndex::FUEL_TYPE, toInt(FuelType::GASOLINE));
-    mObd2SensorStore->setFloatSensor(
-        Obd2FloatSensorIndex::CALCULATED_ENGINE_LOAD, 0.153);
-    mObd2SensorStore->setFloatSensor(
-        Obd2FloatSensorIndex::SHORT_TERM_FUEL_TRIM_BANK1, -0.16);
-    mObd2SensorStore->setFloatSensor(
-        Obd2FloatSensorIndex::LONG_TERM_FUEL_TRIM_BANK1, -0.16);
-    mObd2SensorStore->setFloatSensor(
-        Obd2FloatSensorIndex::SHORT_TERM_FUEL_TRIM_BANK2, -0.16);
-    mObd2SensorStore->setFloatSensor(
-        Obd2FloatSensorIndex::LONG_TERM_FUEL_TRIM_BANK2, -0.16);
-    mObd2SensorStore->setFloatSensor(
-        Obd2FloatSensorIndex::INTAKE_MANIFOLD_ABSOLUTE_PRESSURE, 7.5);
-    mObd2SensorStore->setFloatSensor(
-        Obd2FloatSensorIndex::ENGINE_RPM, 1250.);
-    mObd2SensorStore->setFloatSensor(
-        Obd2FloatSensorIndex::VEHICLE_SPEED, 40.);
-    mObd2SensorStore->setFloatSensor(
-        Obd2FloatSensorIndex::TIMING_ADVANCE, 2.5);
-    mObd2SensorStore->setFloatSensor(
-        Obd2FloatSensorIndex::THROTTLE_POSITION, 19.75);
-    mObd2SensorStore->setFloatSensor(
-        Obd2FloatSensorIndex::OXYGEN_SENSOR1_VOLTAGE, 0.265);
-    mObd2SensorStore->setFloatSensor(
-        Obd2FloatSensorIndex::FUEL_TANK_LEVEL_INPUT, 0.824);
-    mObd2SensorStore->setFloatSensor(
-        Obd2FloatSensorIndex::EVAPORATION_SYSTEM_VAPOR_PRESSURE, -0.373);
-    mObd2SensorStore->setFloatSensor(
-        Obd2FloatSensorIndex::CATALYST_TEMPERATURE_BANK1_SENSOR1, 190.);
-    mObd2SensorStore->setFloatSensor(
-        Obd2FloatSensorIndex::RELATIVE_THROTTLE_POSITION, 3.);
-    mObd2SensorStore->setFloatSensor(
-        Obd2FloatSensorIndex::ABSOLUTE_THROTTLE_POSITION_B, 0.306);
-    mObd2SensorStore->setFloatSensor(
-        Obd2FloatSensorIndex::ACCELERATOR_PEDAL_POSITION_D, 0.188);
-    mObd2SensorStore->setFloatSensor(
-        Obd2FloatSensorIndex::ACCELERATOR_PEDAL_POSITION_E, 0.094);
-    mObd2SensorStore->setFloatSensor(
-        Obd2FloatSensorIndex::COMMANDED_THROTTLE_ACTUATOR, 0.024);
-}
-
-StatusCode DefaultVehicleHal::getHvacTemperature(int32_t areaId,
-                                                 float* outValue)  {
-    if (areaId == toInt(VehicleAreaZone::ROW_1_LEFT)) {
-        *outValue = mRow1LeftHvacTemperatureSet;
-    } else if (areaId == toInt(VehicleAreaZone::ROW_1_RIGHT)) {
-        *outValue = mRow1RightHvacTemperatureSet;
-    } else {
-        return StatusCode::INVALID_ARG;
-    }
-    return StatusCode::OK;
-}
-
-StatusCode DefaultVehicleHal::setHvacTemperature(
-    int32_t areaId, float value) {
-    if (areaId == toInt(VehicleAreaZone::ROW_1_LEFT)) {
-        mRow1LeftHvacTemperatureSet = value;
-    } else if (areaId == toInt(VehicleAreaZone::ROW_1_RIGHT)) {
-        mRow1RightHvacTemperatureSet = value;
-    } else {
-        return StatusCode::INVALID_ARG;
-    }
-    return StatusCode::OK;
-}
-
-StatusCode DefaultVehicleHal::getHvacDefroster(int32_t areaId,
-                                               bool* outValue) {
-    ALOGI("Getting Hvac defroster for area: 0x%x", areaId);
-
-    if (areaId == toInt(VehicleAreaWindow::FRONT_WINDSHIELD)) {
-        *outValue = mFrontDefroster;
-    } else if (areaId == toInt(VehicleAreaWindow::REAR_WINDSHIELD)) {
-        *outValue = mRearDefroster;
-    } else {
-        ALOGE("Unable to get hvac defroster for area: 0x%x", areaId);
-        return StatusCode::INVALID_ARG;
-    }
-
-    ALOGI("Getting Hvac defroster for area: 0x%x, OK", areaId);
-    return StatusCode::OK;
-}
-
-StatusCode DefaultVehicleHal::setHvacDefroster(int32_t areaId, bool value) {
-    if (areaId == toInt(VehicleAreaWindow::FRONT_WINDSHIELD)) {
-        mFrontDefroster = value;
-    } else if (areaId == toInt(VehicleAreaWindow::REAR_WINDSHIELD)) {
-        mRearDefroster = value;
-    } else {
-        return StatusCode::INVALID_ARG;
-    }
-    return StatusCode::OK;
-}
-
-StatusCode DefaultVehicleHal::fillObd2LiveFrame(VehiclePropValuePtr* v) {
-    (*v)->value.int32Values = mObd2SensorStore->getIntegerSensors();
-    (*v)->value.floatValues = mObd2SensorStore->getFloatSensors();
-    (*v)->value.bytes = mObd2SensorStore->getSensorsBitmask();
-    return StatusCode::OK;
-}
-
-StatusCode DefaultVehicleHal::fillObd2FreezeFrame(VehiclePropValuePtr* v) {
-    (*v)->value.int32Values = mObd2SensorStore->getIntegerSensors();
-    (*v)->value.floatValues = mObd2SensorStore->getFloatSensors();
-    (*v)->value.bytes = mObd2SensorStore->getSensorsBitmask();
-    (*v)->value.stringValue = "P0010";
-    return StatusCode::OK;
-}
-
-
-}  // impl
-
-}  // namespace V2_0
-}  // namespace vehicle
-}  // namespace hardware
-}  // namespace android
diff --git a/vehicle/2.0/default/impl/DefaultVehicleHal.h b/vehicle/2.0/default/impl/DefaultVehicleHal.h
deleted file mode 100644
index 567ddf1..0000000
--- a/vehicle/2.0/default/impl/DefaultVehicleHal.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * 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.
- */
-
-#ifndef android_hardware_vehicle_V2_0_impl_DefaultVehicleHal_H_
-#define android_hardware_vehicle_V2_0_impl_DefaultVehicleHal_H_
-
-#include <memory>
-
-#include <VehicleHal.h>
-#include <impl/DefaultConfig.h>
-#include <vehicle_hal_manager/Obd2SensorStore.h>
-#include <utils/SystemClock.h>
-
-namespace android {
-namespace hardware {
-namespace vehicle {
-namespace V2_0 {
-
-namespace impl {
-
-class DefaultVehicleHal : public VehicleHal {
-public:
-    std::vector<VehiclePropConfig> listProperties() override {
-        return std::vector<VehiclePropConfig>(std::begin(kVehicleProperties),
-                                              std::end(kVehicleProperties));
-    }
-
-    VehiclePropValuePtr get(const VehiclePropValue& requestedPropValue,
-                            StatusCode* outStatus) override;
-
-    void onCreate() override;
-
-    StatusCode set(const VehiclePropValue& propValue) override;
-
-    StatusCode subscribe(int32_t /*property*/,
-                         int32_t /*areas*/,
-                         float /*sampleRate*/) override {
-        // TODO(pavelm): implement
-        return StatusCode::OK;
-    }
-
-    StatusCode unsubscribe(int32_t /*property*/) override {
-        // TODO(pavelm): implement
-        return StatusCode::OK;
-    }
-
-private:
-    StatusCode getHvacTemperature(int32_t areaId, float* outValue);
-    StatusCode setHvacTemperature(int32_t areaId, float value);
-    StatusCode getHvacDefroster(int32_t areaId, bool* outValue);
-    StatusCode setHvacDefroster(int32_t areaId, bool value);
-    StatusCode fillObd2LiveFrame(VehiclePropValuePtr* v);
-    StatusCode fillObd2FreezeFrame(VehiclePropValuePtr* v);
-private:
-    int32_t mFanSpeed = 3;
-    int32_t mBrightness = 7;
-    float mRow1LeftHvacTemperatureSet = 16;
-    float mRow1RightHvacTemperatureSet = 22;
-    bool mFrontDefroster = false;
-    bool mRearDefroster = false;
-    bool mHvacPowerOn = true;
-    bool mHvacRecircOn = true;
-    bool mHvacAcOn = true;
-    bool mHvacAutoOn = true;
-    VehicleHvacFanDirection mFanDirection = VehicleHvacFanDirection::FACE;
-    std::unique_ptr<Obd2SensorStore> mObd2SensorStore{nullptr};
-};
-
-}  // impl
-
-}  // namespace V2_0
-}  // namespace vehicle
-}  // namespace hardware
-}  // namespace android
-
-
-#endif  // android_hardware_vehicle_V2_0_impl_DefaultVehicleHal_H_
diff --git a/vehicle/2.0/vts/Vehicle.vts b/vehicle/2.0/vts/Vehicle.vts
deleted file mode 100644
index 7fecfa9..0000000
--- a/vehicle/2.0/vts/Vehicle.vts
+++ /dev/null
@@ -1,116 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 2.0
-component_name: "IVehicle"
-
-package: "android.hardware.vehicle"
-
-import: "android.hardware.vehicle@2.0::IVehicleCallback"
-import: "android.hardware.vehicle@2.0::types"
-
-interface: {
-    api: {
-        name: "getAllPropConfigs"
-        return_type_hidl: {
-            type: TYPE_VECTOR
-            vector_value: {
-                type: TYPE_STRUCT
-                predefined_type: "::android::hardware::vehicle::V2_0::VehiclePropConfig"
-            }
-        }
-    }
-
-    api: {
-        name: "getPropConfigs"
-        return_type_hidl: {
-            type: TYPE_ENUM
-            predefined_type: "::android::hardware::vehicle::V2_0::StatusCode"
-        }
-        return_type_hidl: {
-            type: TYPE_VECTOR
-            vector_value: {
-                type: TYPE_STRUCT
-                predefined_type: "::android::hardware::vehicle::V2_0::VehiclePropConfig"
-            }
-        }
-        arg: {
-            type: TYPE_VECTOR
-            vector_value: {
-                type: TYPE_ENUM
-                predefined_type: "::android::hardware::vehicle::V2_0::VehicleProperty"
-            }
-        }
-    }
-
-    api: {
-        name: "get"
-        return_type_hidl: {
-            type: TYPE_ENUM
-            predefined_type: "::android::hardware::vehicle::V2_0::StatusCode"
-        }
-        return_type_hidl: {
-            type: TYPE_STRUCT
-            predefined_type: "::android::hardware::vehicle::V2_0::VehiclePropValue"
-        }
-        arg: {
-            type: TYPE_STRUCT
-            predefined_type: "::android::hardware::vehicle::V2_0::VehiclePropValue"
-        }
-    }
-
-    api: {
-        name: "set"
-        return_type_hidl: {
-            type: TYPE_ENUM
-            predefined_type: "::android::hardware::vehicle::V2_0::StatusCode"
-        }
-        arg: {
-            type: TYPE_STRUCT
-            predefined_type: "::android::hardware::vehicle::V2_0::VehiclePropValue"
-        }
-    }
-
-    api: {
-        name: "subscribe"
-        return_type_hidl: {
-            type: TYPE_ENUM
-            predefined_type: "::android::hardware::vehicle::V2_0::StatusCode"
-        }
-        arg: {
-            type: TYPE_HIDL_CALLBACK
-            predefined_type: "IVehicleCallback"
-            is_callback: true
-        }
-        arg: {
-            type: TYPE_VECTOR
-            vector_value: {
-                type: TYPE_STRUCT
-                predefined_type: "::android::hardware::vehicle::V2_0::SubscribeOptions"
-            }
-        }
-    }
-
-    api: {
-        name: "unsubscribe"
-        return_type_hidl: {
-            type: TYPE_ENUM
-            predefined_type: "::android::hardware::vehicle::V2_0::StatusCode"
-        }
-        arg: {
-            type: TYPE_HIDL_CALLBACK
-            predefined_type: "IVehicleCallback"
-            is_callback: true
-        }
-        arg: {
-            type: TYPE_ENUM
-            predefined_type: "::android::hardware::vehicle::V2_0::VehicleProperty"
-        }
-    }
-
-    api: {
-        name: "debugDump"
-        return_type_hidl: {
-            type: TYPE_STRING
-        }
-    }
-
-}
diff --git a/vehicle/2.0/vts/VehicleCallback.vts b/vehicle/2.0/vts/VehicleCallback.vts
deleted file mode 100644
index b5ee152..0000000
--- a/vehicle/2.0/vts/VehicleCallback.vts
+++ /dev/null
@@ -1,45 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 2.0
-component_name: "IVehicleCallback"
-
-package: "android.hardware.vehicle"
-
-import: "android.hardware.vehicle@2.0::types"
-
-interface: {
-    api: {
-        name: "onPropertyEvent"
-        arg: {
-            type: TYPE_VECTOR
-            vector_value: {
-                type: TYPE_STRUCT
-                predefined_type: "::android::hardware::vehicle::V2_0::VehiclePropValue"
-            }
-        }
-    }
-
-    api: {
-        name: "onPropertySet"
-        arg: {
-            type: TYPE_STRUCT
-            predefined_type: "::android::hardware::vehicle::V2_0::VehiclePropValue"
-        }
-    }
-
-    api: {
-        name: "onPropertySetError"
-        arg: {
-            type: TYPE_ENUM
-            predefined_type: "::android::hardware::vehicle::V2_0::StatusCode"
-        }
-        arg: {
-            type: TYPE_ENUM
-            predefined_type: "::android::hardware::vehicle::V2_0::VehicleProperty"
-        }
-        arg: {
-            type: TYPE_SCALAR
-            scalar_type: "int32_t"
-        }
-    }
-
-}
diff --git a/vibrator/1.0/Android.bp b/vibrator/1.0/Android.bp
index e752d38..aeefb5d 100644
--- a/vibrator/1.0/Android.bp
+++ b/vibrator/1.0/Android.bp
@@ -1,5 +1,13 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.vibrator@1.0_hal",
+    srcs: [
+        "types.hal",
+        "IVibrator.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.vibrator@1.0_genc++",
     tools: ["hidl-gen"],
@@ -54,106 +62,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.vibrator.vts.driver@1.0_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: [
-        "types.hal",
-        "IVibrator.hal",
-    ],
-    out: [
-        "android/hardware/vibrator/1.0/types.vts.cpp",
-        "android/hardware/vibrator/1.0/Vibrator.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.vibrator.vts.driver@1.0_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: [
-        "types.hal",
-        "IVibrator.hal",
-    ],
-    out: [
-        "android/hardware/vibrator/1.0/types.vts.h",
-        "android/hardware/vibrator/1.0/Vibrator.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.vibrator.vts.driver@1.0",
-    generated_sources: ["android.hardware.vibrator.vts.driver@1.0_genc++"],
-    generated_headers: ["android.hardware.vibrator.vts.driver@1.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.vibrator.vts.driver@1.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.vibrator@1.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hidl.base@1.0",
-    ],
-}
-
-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: [
-        "types.hal",
-        "IVibrator.hal",
-    ],
-    out: [
-        "android/hardware/vibrator/1.0/types.vts.cpp",
-        "android/hardware/vibrator/1.0/Vibrator.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: [
-        "types.hal",
-        "IVibrator.hal",
-    ],
-    out: [
-        "android/hardware/vibrator/1.0/types.vts.h",
-        "android/hardware/vibrator/1.0/Vibrator.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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.vibrator@1.0",
-    ],
-}
diff --git a/vibrator/1.0/Android.mk b/vibrator/1.0/Android.mk
index 1437d44..4e1ba6a 100644
--- a/vibrator/1.0/Android.mk
+++ b/vibrator/1.0/Android.mk
@@ -8,7 +8,7 @@
 LOCAL_MODULE := android.hardware.vibrator@1.0-java
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -64,7 +64,7 @@
 LOCAL_MODULE := android.hardware.vibrator@1.0-java-static
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
diff --git a/vr/1.0/Android.bp b/vr/1.0/Android.bp
index f0644a1..ab318f0 100644
--- a/vr/1.0/Android.bp
+++ b/vr/1.0/Android.bp
@@ -1,5 +1,12 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
+filegroup {
+    name: "android.hardware.vr@1.0_hal",
+    srcs: [
+        "IVr.hal",
+    ],
+}
+
 genrule {
     name: "android.hardware.vr@1.0_genc++",
     tools: ["hidl-gen"],
@@ -50,98 +57,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.vr.vts.driver@1.0_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: [
-        "IVr.hal",
-    ],
-    out: [
-        "android/hardware/vr/1.0/Vr.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.vr.vts.driver@1.0_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: [
-        "IVr.hal",
-    ],
-    out: [
-        "android/hardware/vr/1.0/Vr.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.vr.vts.driver@1.0",
-    generated_sources: ["android.hardware.vr.vts.driver@1.0_genc++"],
-    generated_headers: ["android.hardware.vr.vts.driver@1.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.vr.vts.driver@1.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.vr@1.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hidl.base@1.0",
-    ],
-}
-
-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: [
-        "IVr.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: [
-        "IVr.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",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.vr@1.0",
-    ],
-}
diff --git a/vr/1.0/Android.mk b/vr/1.0/Android.mk
index 1b8e8c7..0fbdaf7 100644
--- a/vr/1.0/Android.mk
+++ b/vr/1.0/Android.mk
@@ -8,7 +8,7 @@
 LOCAL_MODULE := android.hardware.vr@1.0-java
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -43,7 +43,7 @@
 LOCAL_MODULE := android.hardware.vr@1.0-java-static
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
diff --git a/wifi/1.0/Android.bp b/wifi/1.0/Android.bp
index 135cd2f..2319999 100644
--- a/wifi/1.0/Android.bp
+++ b/wifi/1.0/Android.bp
@@ -1,9 +1,7 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
-genrule {
-    name: "android.hardware.wifi@1.0_genc++",
-    tools: ["hidl-gen"],
-    cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.wifi@1.0",
+filegroup {
+    name: "android.hardware.wifi@1.0_hal",
     srcs: [
         "types.hal",
         "IWifi.hal",
@@ -20,6 +18,15 @@
         "IWifiStaIface.hal",
         "IWifiStaIfaceEventCallback.hal",
     ],
+}
+
+genrule {
+    name: "android.hardware.wifi@1.0_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.wifi@1.0",
+    srcs: [
+        ":android.hardware.wifi@1.0_hal",
+    ],
     out: [
         "android/hardware/wifi/1.0/types.cpp",
         "android/hardware/wifi/1.0/WifiAll.cpp",
@@ -43,20 +50,7 @@
     tools: ["hidl-gen"],
     cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.wifi@1.0",
     srcs: [
-        "types.hal",
-        "IWifi.hal",
-        "IWifiApIface.hal",
-        "IWifiChip.hal",
-        "IWifiChipEventCallback.hal",
-        "IWifiEventCallback.hal",
-        "IWifiIface.hal",
-        "IWifiNanIface.hal",
-        "IWifiNanIfaceEventCallback.hal",
-        "IWifiP2pIface.hal",
-        "IWifiRttController.hal",
-        "IWifiRttControllerEventCallback.hal",
-        "IWifiStaIface.hal",
-        "IWifiStaIfaceEventCallback.hal",
+        ":android.hardware.wifi@1.0_hal",
     ],
     out: [
         "android/hardware/wifi/1.0/types.h",
@@ -150,202 +144,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.wifi.vts.driver@1.0_genc++",
-    tools: ["hidl-gen", "vtsc"],
-    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.wifi@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/wifi/1.0/ $(genDir)/android/hardware/wifi/1.0/",
-    srcs: [
-        "types.hal",
-        "IWifi.hal",
-        "IWifiApIface.hal",
-        "IWifiChip.hal",
-        "IWifiChipEventCallback.hal",
-        "IWifiEventCallback.hal",
-        "IWifiIface.hal",
-        "IWifiNanIface.hal",
-        "IWifiNanIfaceEventCallback.hal",
-        "IWifiP2pIface.hal",
-        "IWifiRttController.hal",
-        "IWifiRttControllerEventCallback.hal",
-        "IWifiStaIface.hal",
-        "IWifiStaIfaceEventCallback.hal",
-    ],
-    out: [
-        "android/hardware/wifi/1.0/types.vts.cpp",
-        "android/hardware/wifi/1.0/Wifi.vts.cpp",
-        "android/hardware/wifi/1.0/WifiApIface.vts.cpp",
-        "android/hardware/wifi/1.0/WifiChip.vts.cpp",
-        "android/hardware/wifi/1.0/WifiChipEventCallback.vts.cpp",
-        "android/hardware/wifi/1.0/WifiEventCallback.vts.cpp",
-        "android/hardware/wifi/1.0/WifiIface.vts.cpp",
-        "android/hardware/wifi/1.0/WifiNanIface.vts.cpp",
-        "android/hardware/wifi/1.0/WifiNanIfaceEventCallback.vts.cpp",
-        "android/hardware/wifi/1.0/WifiP2pIface.vts.cpp",
-        "android/hardware/wifi/1.0/WifiRttController.vts.cpp",
-        "android/hardware/wifi/1.0/WifiRttControllerEventCallback.vts.cpp",
-        "android/hardware/wifi/1.0/WifiStaIface.vts.cpp",
-        "android/hardware/wifi/1.0/WifiStaIfaceEventCallback.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.wifi.vts.driver@1.0_genc++_headers",
-    tools: ["hidl-gen", "vtsc"],
-    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.wifi@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/wifi/1.0/ $(genDir)/android/hardware/wifi/1.0/",
-    srcs: [
-        "types.hal",
-        "IWifi.hal",
-        "IWifiApIface.hal",
-        "IWifiChip.hal",
-        "IWifiChipEventCallback.hal",
-        "IWifiEventCallback.hal",
-        "IWifiIface.hal",
-        "IWifiNanIface.hal",
-        "IWifiNanIfaceEventCallback.hal",
-        "IWifiP2pIface.hal",
-        "IWifiRttController.hal",
-        "IWifiRttControllerEventCallback.hal",
-        "IWifiStaIface.hal",
-        "IWifiStaIfaceEventCallback.hal",
-    ],
-    out: [
-        "android/hardware/wifi/1.0/types.vts.h",
-        "android/hardware/wifi/1.0/Wifi.vts.h",
-        "android/hardware/wifi/1.0/WifiApIface.vts.h",
-        "android/hardware/wifi/1.0/WifiChip.vts.h",
-        "android/hardware/wifi/1.0/WifiChipEventCallback.vts.h",
-        "android/hardware/wifi/1.0/WifiEventCallback.vts.h",
-        "android/hardware/wifi/1.0/WifiIface.vts.h",
-        "android/hardware/wifi/1.0/WifiNanIface.vts.h",
-        "android/hardware/wifi/1.0/WifiNanIfaceEventCallback.vts.h",
-        "android/hardware/wifi/1.0/WifiP2pIface.vts.h",
-        "android/hardware/wifi/1.0/WifiRttController.vts.h",
-        "android/hardware/wifi/1.0/WifiRttControllerEventCallback.vts.h",
-        "android/hardware/wifi/1.0/WifiStaIface.vts.h",
-        "android/hardware/wifi/1.0/WifiStaIfaceEventCallback.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.wifi.vts.driver@1.0",
-    generated_sources: ["android.hardware.wifi.vts.driver@1.0_genc++"],
-    generated_headers: ["android.hardware.wifi.vts.driver@1.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.wifi.vts.driver@1.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.wifi@1.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hidl.base@1.0",
-    ],
-}
-
-genrule {
-    name: "android.hardware.wifi@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.wifi@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/wifi/1.0/ $(genDir)/android/hardware/wifi/1.0/",
-    srcs: [
-        "types.hal",
-        "IWifi.hal",
-        "IWifiApIface.hal",
-        "IWifiChip.hal",
-        "IWifiChipEventCallback.hal",
-        "IWifiEventCallback.hal",
-        "IWifiIface.hal",
-        "IWifiNanIface.hal",
-        "IWifiNanIfaceEventCallback.hal",
-        "IWifiP2pIface.hal",
-        "IWifiRttController.hal",
-        "IWifiRttControllerEventCallback.hal",
-        "IWifiStaIface.hal",
-        "IWifiStaIfaceEventCallback.hal",
-    ],
-    out: [
-        "android/hardware/wifi/1.0/types.vts.cpp",
-        "android/hardware/wifi/1.0/Wifi.vts.cpp",
-        "android/hardware/wifi/1.0/WifiApIface.vts.cpp",
-        "android/hardware/wifi/1.0/WifiChip.vts.cpp",
-        "android/hardware/wifi/1.0/WifiChipEventCallback.vts.cpp",
-        "android/hardware/wifi/1.0/WifiEventCallback.vts.cpp",
-        "android/hardware/wifi/1.0/WifiIface.vts.cpp",
-        "android/hardware/wifi/1.0/WifiNanIface.vts.cpp",
-        "android/hardware/wifi/1.0/WifiNanIfaceEventCallback.vts.cpp",
-        "android/hardware/wifi/1.0/WifiP2pIface.vts.cpp",
-        "android/hardware/wifi/1.0/WifiRttController.vts.cpp",
-        "android/hardware/wifi/1.0/WifiRttControllerEventCallback.vts.cpp",
-        "android/hardware/wifi/1.0/WifiStaIface.vts.cpp",
-        "android/hardware/wifi/1.0/WifiStaIfaceEventCallback.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.wifi@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.wifi@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/wifi/1.0/ $(genDir)/android/hardware/wifi/1.0/",
-    srcs: [
-        "types.hal",
-        "IWifi.hal",
-        "IWifiApIface.hal",
-        "IWifiChip.hal",
-        "IWifiChipEventCallback.hal",
-        "IWifiEventCallback.hal",
-        "IWifiIface.hal",
-        "IWifiNanIface.hal",
-        "IWifiNanIfaceEventCallback.hal",
-        "IWifiP2pIface.hal",
-        "IWifiRttController.hal",
-        "IWifiRttControllerEventCallback.hal",
-        "IWifiStaIface.hal",
-        "IWifiStaIfaceEventCallback.hal",
-    ],
-    out: [
-        "android/hardware/wifi/1.0/types.vts.h",
-        "android/hardware/wifi/1.0/Wifi.vts.h",
-        "android/hardware/wifi/1.0/WifiApIface.vts.h",
-        "android/hardware/wifi/1.0/WifiChip.vts.h",
-        "android/hardware/wifi/1.0/WifiChipEventCallback.vts.h",
-        "android/hardware/wifi/1.0/WifiEventCallback.vts.h",
-        "android/hardware/wifi/1.0/WifiIface.vts.h",
-        "android/hardware/wifi/1.0/WifiNanIface.vts.h",
-        "android/hardware/wifi/1.0/WifiNanIfaceEventCallback.vts.h",
-        "android/hardware/wifi/1.0/WifiP2pIface.vts.h",
-        "android/hardware/wifi/1.0/WifiRttController.vts.h",
-        "android/hardware/wifi/1.0/WifiRttControllerEventCallback.vts.h",
-        "android/hardware/wifi/1.0/WifiStaIface.vts.h",
-        "android/hardware/wifi/1.0/WifiStaIfaceEventCallback.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.wifi@1.0-vts.profiler",
-    generated_sources: ["android.hardware.wifi@1.0-vts.profiler_genc++"],
-    generated_headers: ["android.hardware.wifi@1.0-vts.profiler_genc++_headers"],
-    export_generated_headers: ["android.hardware.wifi@1.0-vts.profiler_genc++_headers"],
-    shared_libs: [
-        "libbase",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.wifi@1.0",
-    ],
-}
diff --git a/wifi/1.0/Android.mk b/wifi/1.0/Android.mk
index 708c14c..4476b14 100644
--- a/wifi/1.0/Android.mk
+++ b/wifi/1.0/Android.mk
@@ -8,7 +8,7 @@
 LOCAL_MODULE := android.hardware.wifi@1.0-java
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -74,44 +74,6 @@
 LOCAL_GENERATED_SOURCES += $(GEN)
 
 #
-# Build types.hal (NanBeaconSdfPayloadInd)
-#
-GEN := $(intermediates)/android/hardware/wifi/V1_0/NanBeaconSdfPayloadInd.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
-        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-        -Ljava \
-        -randroid.hardware:hardware/interfaces \
-        -randroid.hidl:system/libhidl/transport \
-        android.hardware.wifi@1.0::types.NanBeaconSdfPayloadInd
-
-$(GEN): $(LOCAL_PATH)/types.hal
-	$(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (NanBeaconSdfPayloadRequest)
-#
-GEN := $(intermediates)/android/hardware/wifi/V1_0/NanBeaconSdfPayloadRequest.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
-        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-        -Ljava \
-        -randroid.hardware:hardware/interfaces \
-        -randroid.hidl:system/libhidl/transport \
-        android.hardware.wifi@1.0::types.NanBeaconSdfPayloadRequest
-
-$(GEN): $(LOCAL_PATH)/types.hal
-	$(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
 # Build types.hal (NanCapabilities)
 #
 GEN := $(intermediates)/android/hardware/wifi/V1_0/NanCapabilities.java
@@ -587,25 +549,6 @@
 LOCAL_GENERATED_SOURCES += $(GEN)
 
 #
-# Build types.hal (NanVsaRxFrameMask)
-#
-GEN := $(intermediates)/android/hardware/wifi/V1_0/NanVsaRxFrameMask.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
-        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-        -Ljava \
-        -randroid.hardware:hardware/interfaces \
-        -randroid.hidl:system/libhidl/transport \
-        android.hardware.wifi@1.0::types.NanVsaRxFrameMask
-
-$(GEN): $(LOCAL_PATH)/types.hal
-	$(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
 # Build types.hal (RttBw)
 #
 GEN := $(intermediates)/android/hardware/wifi/V1_0/RttBw.java
@@ -1868,7 +1811,7 @@
 LOCAL_MODULE := android.hardware.wifi@1.0-java-static
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -1934,44 +1877,6 @@
 LOCAL_GENERATED_SOURCES += $(GEN)
 
 #
-# Build types.hal (NanBeaconSdfPayloadInd)
-#
-GEN := $(intermediates)/android/hardware/wifi/V1_0/NanBeaconSdfPayloadInd.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
-        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-        -Ljava \
-        -randroid.hardware:hardware/interfaces \
-        -randroid.hidl:system/libhidl/transport \
-        android.hardware.wifi@1.0::types.NanBeaconSdfPayloadInd
-
-$(GEN): $(LOCAL_PATH)/types.hal
-	$(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (NanBeaconSdfPayloadRequest)
-#
-GEN := $(intermediates)/android/hardware/wifi/V1_0/NanBeaconSdfPayloadRequest.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
-        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-        -Ljava \
-        -randroid.hardware:hardware/interfaces \
-        -randroid.hidl:system/libhidl/transport \
-        android.hardware.wifi@1.0::types.NanBeaconSdfPayloadRequest
-
-$(GEN): $(LOCAL_PATH)/types.hal
-	$(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
 # Build types.hal (NanCapabilities)
 #
 GEN := $(intermediates)/android/hardware/wifi/V1_0/NanCapabilities.java
@@ -2447,25 +2352,6 @@
 LOCAL_GENERATED_SOURCES += $(GEN)
 
 #
-# Build types.hal (NanVsaRxFrameMask)
-#
-GEN := $(intermediates)/android/hardware/wifi/V1_0/NanVsaRxFrameMask.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
-        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-        -Ljava \
-        -randroid.hardware:hardware/interfaces \
-        -randroid.hidl:system/libhidl/transport \
-        android.hardware.wifi@1.0::types.NanVsaRxFrameMask
-
-$(GEN): $(LOCAL_PATH)/types.hal
-	$(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
 # Build types.hal (RttBw)
 #
 GEN := $(intermediates)/android/hardware/wifi/V1_0/RttBw.java
diff --git a/wifi/1.0/IWifiNanIface.hal b/wifi/1.0/IWifiNanIface.hal
index 3362339..450fba0 100644
--- a/wifi/1.0/IWifiNanIface.hal
+++ b/wifi/1.0/IWifiNanIface.hal
@@ -122,7 +122,7 @@
    *         |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|,
    *         |WifiStatusCode.ERROR_UNKNOWN|
    */
-  stopPublishRequest(CommandIdShort cmdId, uint16_t sessionId)
+  stopPublishRequest(CommandIdShort cmdId, uint8_t sessionId)
       generates (WifiStatus status);
 
   /**
@@ -151,7 +151,7 @@
    *         |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|,
    *         |WifiStatusCode.ERROR_UNKNOWN|
    */
-  stopSubscribeRequest(CommandIdShort cmdId, uint16_t sessionId)
+  stopSubscribeRequest(CommandIdShort cmdId, uint8_t sessionId)
       generates (WifiStatus status);
 
   /**
@@ -240,19 +240,4 @@
    */
   terminateDataPathRequest(CommandIdShort cmdId, uint32_t ndpInstanceId)
       generates (WifiStatus status);
-
-  /**
-   * Configure NAN Beacon or SDF payload to include vendor-specific payload.
-   *
-   * @param cmdId command Id to use for this invocation.
-   * @param msg Instance of |NanBeaconSdfPayloadRequest|.
-   * @return status WifiStatus of the operation.
-   *         Possible status codes:
-   *         |WifiStatusCode.SUCCESS|,
-   *         |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|,
-   *         |WifiStatusCode.ERROR_INVALID_ARGS|,
-   *         |WifiStatusCode.ERROR_UNKNOWN|
-   */
-  beaconSdfPayloadRequest(CommandIdShort cmdId, NanBeaconSdfPayloadRequest msg)
-      generates (WifiStatus status);
 };
diff --git a/wifi/1.0/IWifiNanIfaceEventCallback.hal b/wifi/1.0/IWifiNanIfaceEventCallback.hal
index cb4b043..c9fea8f 100644
--- a/wifi/1.0/IWifiNanIfaceEventCallback.hal
+++ b/wifi/1.0/IWifiNanIfaceEventCallback.hal
@@ -79,7 +79,7 @@
    *        |NanStatusType.INVALID_SESSION_ID|
    * @param sessionId ID of the new publish session (if successfully created).
    */
-  oneway notifyStartPublishResponse(CommandIdShort id, WifiNanStatus status, uint16_t sessionId);
+  oneway notifyStartPublishResponse(CommandIdShort id, WifiNanStatus status, uint8_t sessionId);
 
   /**
    * Callback invoked in response to a stop publish request |stopPublishRequest|.
@@ -104,7 +104,7 @@
    *        |NanStatusType.INVALID_SESSION_ID|
    * @param sessionId ID of the new subscribe session (if successfully created).
    */
-  oneway notifyStartSubscribeResponse(CommandIdShort id, WifiNanStatus status, uint16_t sessionId);
+  oneway notifyStartSubscribeResponse(CommandIdShort id, WifiNanStatus status, uint8_t sessionId);
 
   /**
    * Callback invoked in response to a stop subscribe request |stopSubscribeRequest|.
@@ -195,18 +195,6 @@
   oneway notifyTerminateDataPathResponse(CommandIdShort id, WifiNanStatus status);
 
   /**
-   * Callback invoked in response to a request to include vendor-specific payload in beacon or SDF
-   * frames |beaconSdfPayloadRequest|.
-   *
-   * @param cmdId command Id corresponding to the original request.
-   * @param status WifiNanStatus of the operation. Possible status codes are:
-   *        |NanStatusType.SUCCESS|
-   *        |NanStatusType.INVALID_ARGS|
-   *        |NanStatusType.INTERNAL_FAILURE|
-   */
-  oneway notifyBeaconSdfPayloadResponse(CommandIdShort id, WifiNanStatus status);
-
-  /**
    * Callbacks for the various asynchornous NAN Events.
    */
 
@@ -235,7 +223,7 @@
    *                Possible status codes are:
    *                |NanStatusType.SUCCESS|
    */
-  oneway eventPublishTerminated(uint16_t sessionId, WifiNanStatus status);
+  oneway eventPublishTerminated(uint8_t sessionId, WifiNanStatus status);
 
   /**
    * Asynchronous callback indicating that an active subscribe session has terminated.
@@ -245,7 +233,7 @@
    *                 Possible status codes are:
    *                |NanStatusType.SUCCESS|
    */
-  oneway eventSubscribeTerminated(uint16_t sessionId, WifiNanStatus status);
+  oneway eventSubscribeTerminated(uint8_t sessionId, WifiNanStatus status);
 
   /**
    * Asynchronous callback indicating that a match has occurred: i.e. a service has been
@@ -261,7 +249,7 @@
    * @param discoverySessionId: The discovery session ID of the expired match.
    * @param peerId: The peer ID of the expired match.
    */
-  oneway eventMatchExpired(uint16_t discoverySessionId, uint32_t peerId);
+  oneway eventMatchExpired(uint8_t discoverySessionId, uint32_t peerId);
 
   /**
    * Asynchronous callback indicating that a followup message has been received from a peer.
@@ -303,11 +291,4 @@
    * @param ndpInstanceId: data-path ID of the terminated data-path.
    */
   oneway eventDataPathTerminated(uint32_t ndpInstanceId);
-
-  /**
-   * Asynchronous callback indicating vendor-specific payload received in NAN beacon or SDF frame.
-   *
-   * @param event: NanBeaconSdfPayloadInd containing event details.
-   */
-  oneway eventBeaconSdfPayload(NanBeaconSdfPayloadInd event);
 };
diff --git a/wifi/1.0/default/hidl_struct_util.cpp b/wifi/1.0/default/hidl_struct_util.cpp
index 7464b81..691f913 100644
--- a/wifi/1.0/default/hidl_struct_util.cpp
+++ b/wifi/1.0/default/hidl_struct_util.cpp
@@ -1177,30 +1177,6 @@
   return true;
 }
 
-bool convertHidlNanBeaconSdfPayloadRequestToLegacy(
-    const NanBeaconSdfPayloadRequest& hidl_request,
-    legacy_hal::NanBeaconSdfPayloadRequest* legacy_request) {
-  if (!legacy_request) {
-    LOG(ERROR) << "convertHidlNanBeaconSdfPayloadRequestToLegacy: legacy_request is null";
-    return false;
-  }
-  memset(legacy_request, 0, sizeof(legacy_hal::NanBeaconSdfPayloadRequest));
-
-  legacy_request->vsa.payload_transmit_flag = hidl_request.transmitInNext16dws ? 1 : 0;
-  legacy_request->vsa.tx_in_discovery_beacon = hidl_request.transmitInDiscoveryBeacon;
-  legacy_request->vsa.tx_in_sync_beacon = hidl_request.transmitInSyncBeacon;
-  legacy_request->vsa.tx_in_service_discovery = hidl_request.transmitInServiceDiscoveryFrame;
-  legacy_request->vsa.vendor_oui = hidl_request.vendorOui;
-  legacy_request->vsa.vsa_len = hidl_request.vsa.size();
-  if (legacy_request->vsa.vsa_len > NAN_MAX_VSA_DATA_LEN) {
-    LOG(ERROR) << "convertHidlNanBeaconSdfPayloadRequestToLegacy: vsa_len too long";
-    return false;
-  }
-  memcpy(legacy_request->vsa.vsa, hidl_request.vsa.data(), legacy_request->vsa.vsa_len);
-
-  return true;
-}
-
 bool convertHidlNanDataPathInitiatorRequestToLegacy(
     const NanInitiateDataPathRequest& hidl_request,
     legacy_hal::NanDataPathInitiatorRequest* legacy_request) {
@@ -1352,26 +1328,6 @@
   return true;
 }
 
-bool convertLegacyNanBeaconSdfPayloadIndToHidl(
-    const legacy_hal::NanBeaconSdfPayloadInd& legacy_ind,
-    NanBeaconSdfPayloadInd* hidl_ind) {
-  if (!hidl_ind) {
-    LOG(ERROR) << "convertLegacyNanBeaconSdfPayloadIndToHidl: hidl_ind is null";
-    return false;
-  }
-  hidl_ind->addr = hidl_array<uint8_t, 6>(legacy_ind.addr);
-  hidl_ind->isVsaReceived = legacy_ind.is_vsa_received == 1;
-  hidl_ind->vsaReceivedOnFrames = legacy_ind.vsa.vsa_received_on;
-  hidl_ind->vsaVendorOui = legacy_ind.vsa.vendor_oui;
-  hidl_ind->vsa = std::vector<uint8_t>(legacy_ind.vsa.vsa,
-        legacy_ind.vsa.vsa + legacy_ind.vsa.attr_len);
-  hidl_ind->isBeaconSdfPayloadReceived = legacy_ind.is_beacon_sdf_payload_received == 1;
-  hidl_ind->beaconSdfPayloadData = std::vector<uint8_t>(legacy_ind.data.frame_data,
-        legacy_ind.data.frame_data + legacy_ind.data.frame_len);
-
-  return true;
-}
-
 bool convertLegacyNanDataPathRequestIndToHidl(
     const legacy_hal::NanDataPathRequestInd& legacy_ind,
     NanDataPathRequestInd* hidl_ind) {
diff --git a/wifi/1.0/default/hidl_struct_util.h b/wifi/1.0/default/hidl_struct_util.h
index 14bc77d..490dcae 100644
--- a/wifi/1.0/default/hidl_struct_util.h
+++ b/wifi/1.0/default/hidl_struct_util.h
@@ -110,9 +110,6 @@
 bool convertHidlNanTransmitFollowupRequestToLegacy(
     const NanTransmitFollowupRequest& hidl_request,
     legacy_hal::NanTransmitFollowupRequest* legacy_request);
-bool convertHidlNanBeaconSdfPayloadRequestToLegacy(
-    const NanBeaconSdfPayloadRequest& hidl_request,
-    legacy_hal::NanBeaconSdfPayloadRequest* legacy_request);
 bool convertHidlNanDataPathInitiatorRequestToLegacy(
     const NanInitiateDataPathRequest& hidl_request,
     legacy_hal::NanDataPathInitiatorRequest* legacy_request);
@@ -135,9 +132,6 @@
 bool convertLegacyNanDataPathConfirmIndToHidl(
     const legacy_hal::NanDataPathConfirmInd& legacy_ind,
     NanDataPathConfirmInd* hidl_ind);
-bool convertLegacyNanBeaconSdfPayloadIndToHidl(
-    const legacy_hal::NanBeaconSdfPayloadInd& legacy_ind,
-    NanBeaconSdfPayloadInd* hidl_ind);
 
 // RTT controller conversion methods.
 bool convertHidlVectorOfRttConfigToLegacy(
diff --git a/wifi/1.0/default/wifi_nan_iface.cpp b/wifi/1.0/default/wifi_nan_iface.cpp
index 333fac7..8d76f91 100644
--- a/wifi/1.0/default/wifi_nan_iface.cpp
+++ b/wifi/1.0/default/wifi_nan_iface.cpp
@@ -120,14 +120,6 @@
         }
         break;
      }
-    case legacy_hal::NAN_RESPONSE_BEACON_SDF_PAYLOAD: {
-        for (const auto& callback : shared_ptr_this->event_callbacks_) {
-          if (!callback->notifyBeaconSdfPayloadResponse(id, wifiNanStatus).isOk()) {
-            LOG(ERROR) << "Failed to invoke the callback";
-          }
-        }
-        break;
-     }
     case legacy_hal::NAN_GET_CAPABILITIES: {
         NanCapabilities hidl_struct;
         if (!hidl_struct_util::convertLegacyNanCapabilitiesResponseToHidl(
@@ -183,6 +175,8 @@
         }
         break;
     }
+    case legacy_hal::NAN_RESPONSE_BEACON_SDF_PAYLOAD:
+        /* fall through */
     case legacy_hal::NAN_RESPONSE_TCA:
         /* fall through */
     case legacy_hal::NAN_RESPONSE_STATS:
@@ -402,24 +396,8 @@
   };
 
   callback_handlers.on_event_beacon_sdf_payload = [weak_ptr_this](
-        const legacy_hal::NanBeaconSdfPayloadInd& msg) {
-      const auto shared_ptr_this = weak_ptr_this.promote();
-      if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) {
-        LOG(ERROR) << "Callback invoked on an invalid object";
-        return;
-      }
-      NanBeaconSdfPayloadInd hidl_struct;
-      if (!hidl_struct_util::convertLegacyNanBeaconSdfPayloadIndToHidl(
-            msg, &hidl_struct)) {
-          LOG(ERROR) << "Failed to convert nan capabilities response";
-          return;
-      }
-
-      for (const auto& callback : shared_ptr_this->event_callbacks_) {
-        if (!callback->eventBeaconSdfPayload(hidl_struct).isOk()) {
-            LOG(ERROR) << "Failed to invoke the callback";
-        }
-      }
+        const legacy_hal::NanBeaconSdfPayloadInd& /* msg */) {
+      LOG(ERROR) << "on_event_beacon_sdf_payload - should not be called";
   };
 
   legacy_hal::wifi_error legacy_status =
@@ -517,7 +495,7 @@
 
 Return<void> WifiNanIface::stopPublishRequest(
     uint16_t cmd_id,
-    uint16_t sessionId,
+    uint8_t sessionId,
     stopPublishRequest_cb hidl_status_cb) {
   return validateAndCall(this,
                          WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
@@ -541,7 +519,7 @@
 
 Return<void> WifiNanIface::stopSubscribeRequest(
     uint16_t cmd_id,
-    uint16_t sessionId,
+    uint8_t sessionId,
     stopSubscribeRequest_cb hidl_status_cb) {
   return validateAndCall(this,
                          WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
@@ -621,18 +599,6 @@
                          ndpInstanceId);
 }
 
-Return<void> WifiNanIface::beaconSdfPayloadRequest(
-    uint16_t cmd_id,
-    const NanBeaconSdfPayloadRequest& msg,
-    beaconSdfPayloadRequest_cb hidl_status_cb) {
-  return validateAndCall(this,
-                         WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
-                         &WifiNanIface::beaconSdfPayloadRequestInternal,
-                         hidl_status_cb,
-                         cmd_id,
-                         msg);
-}
-
 std::pair<WifiStatus, std::string> WifiNanIface::getNameInternal() {
   return {createWifiStatus(WifiStatusCode::SUCCESS), ifname_};
 }
@@ -699,7 +665,7 @@
 }
 
 WifiStatus WifiNanIface::stopPublishRequestInternal(
-    uint16_t cmd_id, uint16_t sessionId) {
+    uint16_t cmd_id, uint8_t sessionId) {
   legacy_hal::NanPublishCancelRequest legacy_msg;
   legacy_msg.publish_id = sessionId;
   legacy_hal::wifi_error legacy_status =
@@ -720,7 +686,7 @@
 }
 
 WifiStatus WifiNanIface::stopSubscribeRequestInternal(
-    uint16_t cmd_id, uint16_t sessionId) {
+    uint16_t cmd_id, uint8_t sessionId) {
   legacy_hal::NanSubscribeCancelRequest legacy_msg;
   legacy_msg.subscribe_id = sessionId;
   legacy_hal::wifi_error legacy_status =
@@ -783,16 +749,6 @@
   free(legacy_msg);
   return createWifiStatusFromLegacyError(legacy_status);
 }
-WifiStatus WifiNanIface::beaconSdfPayloadRequestInternal(
-    uint16_t cmd_id, const NanBeaconSdfPayloadRequest& msg) {
-  legacy_hal::NanBeaconSdfPayloadRequest legacy_msg;
-  if (!hidl_struct_util::convertHidlNanBeaconSdfPayloadRequestToLegacy(msg, &legacy_msg)) {
-    return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS);
-  }
-  legacy_hal::wifi_error legacy_status =
-      legacy_hal_.lock()->nanBeaconSdfPayloadRequest(cmd_id, legacy_msg);
-  return createWifiStatusFromLegacyError(legacy_status);
-}
 
 }  // namespace implementation
 }  // namespace V1_0
diff --git a/wifi/1.0/default/wifi_nan_iface.h b/wifi/1.0/default/wifi_nan_iface.h
index 4fae3df..d1da60e 100644
--- a/wifi/1.0/default/wifi_nan_iface.h
+++ b/wifi/1.0/default/wifi_nan_iface.h
@@ -60,13 +60,13 @@
                                    const NanPublishRequest& msg,
                                    startPublishRequest_cb hidl_status_cb) override;
   Return<void> stopPublishRequest(uint16_t cmd_id,
-                                  uint16_t sessionId,
+                                  uint8_t sessionId,
                                   stopPublishRequest_cb hidl_status_cb) override;
   Return<void> startSubscribeRequest(uint16_t cmd_id,
                                      const NanSubscribeRequest& msg,
                                     startSubscribeRequest_cb hidl_status_cb) override;
   Return<void> stopSubscribeRequest(uint16_t cmd_id,
-                                    uint16_t sessionId,
+                                    uint8_t sessionId,
                                     stopSubscribeRequest_cb hidl_status_cb) override;
   Return<void> transmitFollowupRequest(uint16_t cmd_id,
                                        const NanTransmitFollowupRequest& msg,
@@ -87,9 +87,6 @@
   Return<void> terminateDataPathRequest(uint16_t cmd_id,
                                         uint32_t ndpInstanceId,
                                         terminateDataPathRequest_cb hidl_status_cb) override;
-  Return<void> beaconSdfPayloadRequest(uint16_t cmd_id,
-                                       const NanBeaconSdfPayloadRequest& msg,
-                                       beaconSdfPayloadRequest_cb hidl_status_cb) override;
 
  private:
   // Corresponding worker functions for the HIDL methods.
@@ -105,10 +102,10 @@
   WifiStatus disableRequestInternal(uint16_t cmd_id);
   WifiStatus startPublishRequestInternal(uint16_t cmd_id,
                                          const NanPublishRequest& msg);
-  WifiStatus stopPublishRequestInternal(uint16_t cmd_id, uint16_t sessionId);
+  WifiStatus stopPublishRequestInternal(uint16_t cmd_id, uint8_t sessionId);
   WifiStatus startSubscribeRequestInternal(uint16_t cmd_id,
                                            const NanSubscribeRequest& msg);
-  WifiStatus stopSubscribeRequestInternal(uint16_t cmd_id, uint16_t sessionId);
+  WifiStatus stopSubscribeRequestInternal(uint16_t cmd_id, uint8_t sessionId);
   WifiStatus transmitFollowupRequestInternal(
       uint16_t cmd_id, const NanTransmitFollowupRequest& msg);
   WifiStatus createDataInterfaceRequestInternal(uint16_t cmd_id,
@@ -121,8 +118,6 @@
       uint16_t cmd_id, const NanRespondToDataPathIndicationRequest& msg);
   WifiStatus terminateDataPathRequestInternal(
       uint16_t cmd_id, uint32_t ndpInstanceId);
-  WifiStatus beaconSdfPayloadRequestInternal(
-      uint16_t cmd_id, const NanBeaconSdfPayloadRequest& msg);
 
   std::string ifname_;
   std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal_;
diff --git a/wifi/1.0/types.hal b/wifi/1.0/types.hal
index 1ec1357..c4bdc23 100644
--- a/wifi/1.0/types.hal
+++ b/wifi/1.0/types.hal
@@ -867,7 +867,7 @@
    * The ID of the discovery session being configured. A value of 0 specifies a request to create
    * a new discovery session.
    */
-  uint16_t sessionId;
+  uint8_t sessionId;
   /**
    * The lifetime of the discovery session in seconds. A value of 0 means run forever or until
    * canceled.
@@ -1042,7 +1042,7 @@
    * ID of an active publish or subscribe discovery session. Follow-up message is transmitted in the
    * context of the discovery session.
    */
-  uint16_t discoverySessionId;
+  uint8_t discoverySessionId;
   /**
    * ID of the peer. Obtained as part of an earlier |eventMatch| or |eventFollowupReceived|.
    */
@@ -1159,31 +1159,6 @@
 };
 
 /**
- * Specifies vendor-specific information fields to be included in NAN management frames.
- */
-struct NanBeaconSdfPayloadRequest {
-  /**
-   * If true information is transmitted in next 16 DWs, else only in the next (1) DW.
-   */
-  bool transmitInNext16dws;
-  /**
-   * Specify the management frames in which the vendor-specific information is included.
-   */
-  bool transmitInDiscoveryBeacon;
-  bool transmitInSyncBeacon;
-  bool transmitInServiceDiscoveryFrame;
-  /**
-   * Organizationally Unique Identifier (OUI).
-   */
-  uint32_t vendorOui;
-  /**
-   * Vendor specific attribute to be transmitted.
-   * Max length: |NanCapabilities.maxVsaDataLen|.
-   */
-  vec<uint8_t> vsa;
-};
-
-/**
  * NDP Capabilities response.
  */
 struct NanCapabilities {
@@ -1253,7 +1228,7 @@
   /**
    * Publish or subscribe discovery session ID of an existing discovery session.
    */
-  uint16_t discoverySessionId;
+  uint8_t discoverySessionId;
   /**
    * A unique ID of the peer. Can be subsequently used in |transmitFollowupRequest|.
    */
@@ -1338,7 +1313,7 @@
    * Discovery session (publish or subscribe) ID of a previously created discovery session. The
    * message is received in the context of this discovery session.
    */
-  uint16_t discoverySessionId;
+  uint8_t discoverySessionId;
   /**
    * A unique ID of the peer. Can be subsequently used in |transmitFollowupRequest|.
    */
@@ -1394,54 +1369,6 @@
 };
 
 /**
- * Mask to determine on which frames the vendor-specific attribute (VSA) was received on.
- */
-enum NanVsaRxFrameMask: uint32_t {
-  DISCOVERY_BEACON_MASK = 1 << 0,
-  SYNC_BEACON_MASK = 1 << 1,
-  SERVICE_DISCOVERY_MASK = 1 << 2
-};
-
-/**
- * NAN Beacon or SDF Payload Indication Message structure.
- * The BeaconSdfPayloadInd message indicates to the upper layers that information
- * elements were received either in a Beacon or SDF which needs to be delivered
- * outside of a Publish/Subscribe Handle.
- */
-struct NanBeaconSdfPayloadInd {
-  /**
-   * The MAC address of the peer which sent the attributes.
-   */
-  MacAddress addr;
-  /**
-   * A flag indicating whether a vendor-specific attribute (VSA) has been received.
-   */
-  bool isVsaReceived;
-  /**
-   * Frames on which this vendor specific attribute was received.
-   * Mask |NanVsaRxFrameMask| defined above.
-   */
-  bitfield<NanVsaRxFrameMask> vsaReceivedOnFrames;
-  /**
-   * Organizationally Unique Identifier (OUI) of the vendor-specific attribute.
-   */
-  uint32_t vsaVendorOui;
-  /**
-   * Contents of the vendor specific attribute.
-   * Max length: |NanCapabilities.maxVsaDataLen|.
-   */
-  vec<uint8_t> vsa;
-  /**
-   * A flag indicating whether a NAN beacon or SDF payload has been received.
-   */
-  bool isBeaconSdfPayloadReceived;
-  /**
-   * The contents of the NAN beacon or SDF payload.
-   */
-  vec<uint8_t> beaconSdfPayloadData;
-};
-
-/**
  * NAN Data path request Indication Message structure.
  * Event indication received by an intended Responder when a Nan Data request initiated by an
  * Initiator.
@@ -1451,7 +1378,7 @@
    * ID of an active publish or subscribe discovery session - the data-path request is in the
    * context of this discovery session.
    */
-  uint16_t discoverySessionId;
+  uint8_t discoverySessionId;
   /**
    * MAC address of the Initiator peer. This is the MAC address of the peer's management/discovery
    * NAN interface.
diff --git a/wifi/1.0/vts/WifiNanIface.vts b/wifi/1.0/vts/WifiNanIface.vts
index 663b526..c06f985 100644
--- a/wifi/1.0/vts/WifiNanIface.vts
+++ b/wifi/1.0/vts/WifiNanIface.vts
@@ -259,20 +259,4 @@
         }
     }
 
-    api: {
-        name: "beaconSdfPayloadRequest"
-        return_type_hidl: {
-            type: TYPE_STRUCT
-            predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
-        }
-        arg: {
-            type: TYPE_SCALAR
-            scalar_type: "uint16_t"
-        }
-        arg: {
-            type: TYPE_STRUCT
-            predefined_type: "::android::hardware::wifi::V1_0::NanBeaconSdfPayloadRequest"
-        }
-    }
-
 }
diff --git a/wifi/1.0/vts/WifiNanIfaceEventCallback.vts b/wifi/1.0/vts/WifiNanIfaceEventCallback.vts
index 30ca88a..02d04ac 100644
--- a/wifi/1.0/vts/WifiNanIfaceEventCallback.vts
+++ b/wifi/1.0/vts/WifiNanIfaceEventCallback.vts
@@ -192,18 +192,6 @@
     }
 
     api: {
-        name: "notifyBeaconSdfPayloadResponse"
-        arg: {
-            type: TYPE_SCALAR
-            scalar_type: "uint16_t"
-        }
-        arg: {
-            type: TYPE_STRUCT
-            predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
-        }
-    }
-
-    api: {
         name: "eventClusterEvent"
         arg: {
             type: TYPE_STRUCT
@@ -307,12 +295,4 @@
         }
     }
 
-    api: {
-        name: "eventBeaconSdfPayload"
-        arg: {
-            type: TYPE_STRUCT
-            predefined_type: "::android::hardware::wifi::V1_0::NanBeaconSdfPayloadInd"
-        }
-    }
-
 }
diff --git a/wifi/1.0/vts/types.vts b/wifi/1.0/vts/types.vts
index fd60d4e..fc52b69 100644
--- a/wifi/1.0/vts/types.vts
+++ b/wifi/1.0/vts/types.vts
@@ -1513,44 +1513,6 @@
 }
 
 attribute: {
-    name: "::android::hardware::wifi::V1_0::NanBeaconSdfPayloadRequest"
-    type: TYPE_STRUCT
-    struct_value: {
-        name: "transmitInNext16dws"
-        type: TYPE_SCALAR
-        scalar_type: "bool_t"
-    }
-    struct_value: {
-        name: "transmitInDiscoveryBeacon"
-        type: TYPE_SCALAR
-        scalar_type: "bool_t"
-    }
-    struct_value: {
-        name: "transmitInSyncBeacon"
-        type: TYPE_SCALAR
-        scalar_type: "bool_t"
-    }
-    struct_value: {
-        name: "transmitInServiceDiscoveryFrame"
-        type: TYPE_SCALAR
-        scalar_type: "bool_t"
-    }
-    struct_value: {
-        name: "vendorOui"
-        type: TYPE_SCALAR
-        scalar_type: "uint32_t"
-    }
-    struct_value: {
-        name: "vsa"
-        type: TYPE_VECTOR
-        vector_value: {
-            type: TYPE_SCALAR
-            scalar_type: "uint8_t"
-        }
-    }
-}
-
-attribute: {
     name: "::android::hardware::wifi::V1_0::NanCapabilities"
     type: TYPE_STRUCT
     struct_value: {
@@ -1804,56 +1766,6 @@
 }
 
 attribute: {
-    name: "::android::hardware::wifi::V1_0::NanBeaconSdfPayloadInd"
-    type: TYPE_STRUCT
-    struct_value: {
-        name: "addr"
-        type: TYPE_ARRAY
-        vector_value: {
-            vector_size: 6
-            type: TYPE_SCALAR
-            scalar_type: "uint8_t"
-        }
-    }
-    struct_value: {
-        name: "isVsaReceived"
-        type: TYPE_SCALAR
-        scalar_type: "bool_t"
-    }
-    struct_value: {
-        name: "vsaReceivedOnFrames"
-        type: TYPE_MASK
-        predefined_type: "::android::hardware::wifi::V1_0::NanVsaRxFrameMask"
-    }
-    struct_value: {
-        name: "vsaVendorOui"
-        type: TYPE_SCALAR
-        scalar_type: "uint32_t"
-    }
-    struct_value: {
-        name: "vsa"
-        type: TYPE_VECTOR
-        vector_value: {
-            type: TYPE_SCALAR
-            scalar_type: "uint8_t"
-        }
-    }
-    struct_value: {
-        name: "isBeaconSdfPayloadReceived"
-        type: TYPE_SCALAR
-        scalar_type: "bool_t"
-    }
-    struct_value: {
-        name: "beaconSdfPayloadData"
-        type: TYPE_VECTOR
-        vector_value: {
-            type: TYPE_SCALAR
-            scalar_type: "uint8_t"
-        }
-    }
-}
-
-attribute: {
     name: "::android::hardware::wifi::V1_0::NanDataPathRequestInd"
     type: TYPE_STRUCT
     struct_value: {
diff --git a/wifi/supplicant/1.0/Android.bp b/wifi/supplicant/1.0/Android.bp
index 565c3d2..a6c2758 100644
--- a/wifi/supplicant/1.0/Android.bp
+++ b/wifi/supplicant/1.0/Android.bp
@@ -1,9 +1,7 @@
 // This file is autogenerated by hidl-gen. Do not edit manually.
 
-genrule {
-    name: "android.hardware.wifi.supplicant@1.0_genc++",
-    tools: ["hidl-gen"],
-    cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.wifi.supplicant@1.0",
+filegroup {
+    name: "android.hardware.wifi.supplicant@1.0_hal",
     srcs: [
         "types.hal",
         "ISupplicant.hal",
@@ -19,6 +17,15 @@
         "ISupplicantStaNetwork.hal",
         "ISupplicantStaNetworkCallback.hal",
     ],
+}
+
+genrule {
+    name: "android.hardware.wifi.supplicant@1.0_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.wifi.supplicant@1.0",
+    srcs: [
+        ":android.hardware.wifi.supplicant@1.0_hal",
+    ],
     out: [
         "android/hardware/wifi/supplicant/1.0/types.cpp",
         "android/hardware/wifi/supplicant/1.0/SupplicantAll.cpp",
@@ -41,19 +48,7 @@
     tools: ["hidl-gen"],
     cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.wifi.supplicant@1.0",
     srcs: [
-        "types.hal",
-        "ISupplicant.hal",
-        "ISupplicantCallback.hal",
-        "ISupplicantIface.hal",
-        "ISupplicantNetwork.hal",
-        "ISupplicantP2pIface.hal",
-        "ISupplicantP2pIfaceCallback.hal",
-        "ISupplicantP2pNetwork.hal",
-        "ISupplicantP2pNetworkCallback.hal",
-        "ISupplicantStaIface.hal",
-        "ISupplicantStaIfaceCallback.hal",
-        "ISupplicantStaNetwork.hal",
-        "ISupplicantStaNetworkCallback.hal",
+        ":android.hardware.wifi.supplicant@1.0_hal",
     ],
     out: [
         "android/hardware/wifi/supplicant/1.0/types.h",
@@ -142,194 +137,3 @@
         "android.hidl.base@1.0",
     ],
 }
-
-genrule {
-    name: "android.hardware.wifi.supplicant.vts.driver@1.0_genc++",
-    tools: ["hidl-gen", "vtsc"],
-    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.wifi.supplicant@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/wifi/supplicant/1.0/ $(genDir)/android/hardware/wifi/supplicant/1.0/",
-    srcs: [
-        "types.hal",
-        "ISupplicant.hal",
-        "ISupplicantCallback.hal",
-        "ISupplicantIface.hal",
-        "ISupplicantNetwork.hal",
-        "ISupplicantP2pIface.hal",
-        "ISupplicantP2pIfaceCallback.hal",
-        "ISupplicantP2pNetwork.hal",
-        "ISupplicantP2pNetworkCallback.hal",
-        "ISupplicantStaIface.hal",
-        "ISupplicantStaIfaceCallback.hal",
-        "ISupplicantStaNetwork.hal",
-        "ISupplicantStaNetworkCallback.hal",
-    ],
-    out: [
-        "android/hardware/wifi/supplicant/1.0/types.vts.cpp",
-        "android/hardware/wifi/supplicant/1.0/Supplicant.vts.cpp",
-        "android/hardware/wifi/supplicant/1.0/SupplicantCallback.vts.cpp",
-        "android/hardware/wifi/supplicant/1.0/SupplicantIface.vts.cpp",
-        "android/hardware/wifi/supplicant/1.0/SupplicantNetwork.vts.cpp",
-        "android/hardware/wifi/supplicant/1.0/SupplicantP2pIface.vts.cpp",
-        "android/hardware/wifi/supplicant/1.0/SupplicantP2pIfaceCallback.vts.cpp",
-        "android/hardware/wifi/supplicant/1.0/SupplicantP2pNetwork.vts.cpp",
-        "android/hardware/wifi/supplicant/1.0/SupplicantP2pNetworkCallback.vts.cpp",
-        "android/hardware/wifi/supplicant/1.0/SupplicantStaIface.vts.cpp",
-        "android/hardware/wifi/supplicant/1.0/SupplicantStaIfaceCallback.vts.cpp",
-        "android/hardware/wifi/supplicant/1.0/SupplicantStaNetwork.vts.cpp",
-        "android/hardware/wifi/supplicant/1.0/SupplicantStaNetworkCallback.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.wifi.supplicant.vts.driver@1.0_genc++_headers",
-    tools: ["hidl-gen", "vtsc"],
-    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.wifi.supplicant@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/wifi/supplicant/1.0/ $(genDir)/android/hardware/wifi/supplicant/1.0/",
-    srcs: [
-        "types.hal",
-        "ISupplicant.hal",
-        "ISupplicantCallback.hal",
-        "ISupplicantIface.hal",
-        "ISupplicantNetwork.hal",
-        "ISupplicantP2pIface.hal",
-        "ISupplicantP2pIfaceCallback.hal",
-        "ISupplicantP2pNetwork.hal",
-        "ISupplicantP2pNetworkCallback.hal",
-        "ISupplicantStaIface.hal",
-        "ISupplicantStaIfaceCallback.hal",
-        "ISupplicantStaNetwork.hal",
-        "ISupplicantStaNetworkCallback.hal",
-    ],
-    out: [
-        "android/hardware/wifi/supplicant/1.0/types.vts.h",
-        "android/hardware/wifi/supplicant/1.0/Supplicant.vts.h",
-        "android/hardware/wifi/supplicant/1.0/SupplicantCallback.vts.h",
-        "android/hardware/wifi/supplicant/1.0/SupplicantIface.vts.h",
-        "android/hardware/wifi/supplicant/1.0/SupplicantNetwork.vts.h",
-        "android/hardware/wifi/supplicant/1.0/SupplicantP2pIface.vts.h",
-        "android/hardware/wifi/supplicant/1.0/SupplicantP2pIfaceCallback.vts.h",
-        "android/hardware/wifi/supplicant/1.0/SupplicantP2pNetwork.vts.h",
-        "android/hardware/wifi/supplicant/1.0/SupplicantP2pNetworkCallback.vts.h",
-        "android/hardware/wifi/supplicant/1.0/SupplicantStaIface.vts.h",
-        "android/hardware/wifi/supplicant/1.0/SupplicantStaIfaceCallback.vts.h",
-        "android/hardware/wifi/supplicant/1.0/SupplicantStaNetwork.vts.h",
-        "android/hardware/wifi/supplicant/1.0/SupplicantStaNetworkCallback.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.wifi.supplicant.vts.driver@1.0",
-    generated_sources: ["android.hardware.wifi.supplicant.vts.driver@1.0_genc++"],
-    generated_headers: ["android.hardware.wifi.supplicant.vts.driver@1.0_genc++_headers"],
-    export_generated_headers: ["android.hardware.wifi.supplicant.vts.driver@1.0_genc++_headers"],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "libcutils",
-        "libvts_common",
-        "libvts_datatype",
-        "libvts_measurement",
-        "libvts_multidevice_proto",
-        "libcamera_metadata",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.wifi.supplicant@1.0",
-    ],
-    export_shared_lib_headers: [
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "libutils",
-        "android.hidl.base@1.0",
-    ],
-}
-
-genrule {
-    name: "android.hardware.wifi.supplicant@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.wifi.supplicant@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/wifi/supplicant/1.0/ $(genDir)/android/hardware/wifi/supplicant/1.0/",
-    srcs: [
-        "types.hal",
-        "ISupplicant.hal",
-        "ISupplicantCallback.hal",
-        "ISupplicantIface.hal",
-        "ISupplicantNetwork.hal",
-        "ISupplicantP2pIface.hal",
-        "ISupplicantP2pIfaceCallback.hal",
-        "ISupplicantP2pNetwork.hal",
-        "ISupplicantP2pNetworkCallback.hal",
-        "ISupplicantStaIface.hal",
-        "ISupplicantStaIfaceCallback.hal",
-        "ISupplicantStaNetwork.hal",
-        "ISupplicantStaNetworkCallback.hal",
-    ],
-    out: [
-        "android/hardware/wifi/supplicant/1.0/types.vts.cpp",
-        "android/hardware/wifi/supplicant/1.0/Supplicant.vts.cpp",
-        "android/hardware/wifi/supplicant/1.0/SupplicantCallback.vts.cpp",
-        "android/hardware/wifi/supplicant/1.0/SupplicantIface.vts.cpp",
-        "android/hardware/wifi/supplicant/1.0/SupplicantNetwork.vts.cpp",
-        "android/hardware/wifi/supplicant/1.0/SupplicantP2pIface.vts.cpp",
-        "android/hardware/wifi/supplicant/1.0/SupplicantP2pIfaceCallback.vts.cpp",
-        "android/hardware/wifi/supplicant/1.0/SupplicantP2pNetwork.vts.cpp",
-        "android/hardware/wifi/supplicant/1.0/SupplicantP2pNetworkCallback.vts.cpp",
-        "android/hardware/wifi/supplicant/1.0/SupplicantStaIface.vts.cpp",
-        "android/hardware/wifi/supplicant/1.0/SupplicantStaIfaceCallback.vts.cpp",
-        "android/hardware/wifi/supplicant/1.0/SupplicantStaNetwork.vts.cpp",
-        "android/hardware/wifi/supplicant/1.0/SupplicantStaNetworkCallback.vts.cpp",
-    ],
-}
-
-genrule {
-    name: "android.hardware.wifi.supplicant@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.wifi.supplicant@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/wifi/supplicant/1.0/ $(genDir)/android/hardware/wifi/supplicant/1.0/",
-    srcs: [
-        "types.hal",
-        "ISupplicant.hal",
-        "ISupplicantCallback.hal",
-        "ISupplicantIface.hal",
-        "ISupplicantNetwork.hal",
-        "ISupplicantP2pIface.hal",
-        "ISupplicantP2pIfaceCallback.hal",
-        "ISupplicantP2pNetwork.hal",
-        "ISupplicantP2pNetworkCallback.hal",
-        "ISupplicantStaIface.hal",
-        "ISupplicantStaIfaceCallback.hal",
-        "ISupplicantStaNetwork.hal",
-        "ISupplicantStaNetworkCallback.hal",
-    ],
-    out: [
-        "android/hardware/wifi/supplicant/1.0/types.vts.h",
-        "android/hardware/wifi/supplicant/1.0/Supplicant.vts.h",
-        "android/hardware/wifi/supplicant/1.0/SupplicantCallback.vts.h",
-        "android/hardware/wifi/supplicant/1.0/SupplicantIface.vts.h",
-        "android/hardware/wifi/supplicant/1.0/SupplicantNetwork.vts.h",
-        "android/hardware/wifi/supplicant/1.0/SupplicantP2pIface.vts.h",
-        "android/hardware/wifi/supplicant/1.0/SupplicantP2pIfaceCallback.vts.h",
-        "android/hardware/wifi/supplicant/1.0/SupplicantP2pNetwork.vts.h",
-        "android/hardware/wifi/supplicant/1.0/SupplicantP2pNetworkCallback.vts.h",
-        "android/hardware/wifi/supplicant/1.0/SupplicantStaIface.vts.h",
-        "android/hardware/wifi/supplicant/1.0/SupplicantStaIfaceCallback.vts.h",
-        "android/hardware/wifi/supplicant/1.0/SupplicantStaNetwork.vts.h",
-        "android/hardware/wifi/supplicant/1.0/SupplicantStaNetworkCallback.vts.h",
-    ],
-}
-
-cc_library_shared {
-    name: "android.hardware.wifi.supplicant@1.0-vts.profiler",
-    generated_sources: ["android.hardware.wifi.supplicant@1.0-vts.profiler_genc++"],
-    generated_headers: ["android.hardware.wifi.supplicant@1.0-vts.profiler_genc++_headers"],
-    export_generated_headers: ["android.hardware.wifi.supplicant@1.0-vts.profiler_genc++_headers"],
-    shared_libs: [
-        "libbase",
-        "libhidlbase",
-        "libhidltransport",
-        "libvts_profiling",
-        "libvts_multidevice_proto",
-        "libprotobuf-cpp-full",
-        "android.hidl.base@1.0",
-        "android.hardware.wifi.supplicant@1.0",
-    ],
-}
diff --git a/wifi/supplicant/1.0/Android.mk b/wifi/supplicant/1.0/Android.mk
index ad49b0a..dd210d0 100644
--- a/wifi/supplicant/1.0/Android.mk
+++ b/wifi/supplicant/1.0/Android.mk
@@ -8,7 +8,7 @@
 LOCAL_MODULE := android.hardware.wifi.supplicant@1.0-java
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
@@ -387,7 +387,7 @@
 LOCAL_MODULE := android.hardware.wifi.supplicant@1.0-java-static
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
 
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)