Merge "gatekeeper vts tests"
diff --git a/audio/2.0/IDevicesFactory.hal b/audio/2.0/IDevicesFactory.hal
index a4e6956..f1dc7d3 100644
--- a/audio/2.0/IDevicesFactory.hal
+++ b/audio/2.0/IDevicesFactory.hal
@@ -22,7 +22,7 @@
 interface IDevicesFactory {
     typedef android.hardware.audio@2.0::Result Result;
 
-    enum Device {
+    enum Device : int32_t {
         PRIMARY,
         A2DP,
         USB,
diff --git a/audio/2.0/IPrimaryDevice.hal b/audio/2.0/IPrimaryDevice.hal
index 6beddfe..f1dd56e 100644
--- a/audio/2.0/IPrimaryDevice.hal
+++ b/audio/2.0/IPrimaryDevice.hal
@@ -76,7 +76,7 @@
      */
     setBtScoWidebandEnabled(bool enabled) generates (Result retval);
 
-    enum TtyMode {
+    enum TtyMode : int32_t {
         OFF,
         VCO,
         HCO,
diff --git a/audio/2.0/default/Device.h b/audio/2.0/default/Device.h
index 3fd67e3..49d6b2c 100644
--- a/audio/2.0/default/Device.h
+++ b/audio/2.0/default/Device.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef HIDL_GENERATED_android_hardware_audio_V2_0_Device_H_
-#define HIDL_GENERATED_android_hardware_audio_V2_0_Device_H_
+#ifndef ANDROID_HARDWARE_AUDIO_V2_0_DEVICE_H
+#define ANDROID_HARDWARE_AUDIO_V2_0_DEVICE_H
 
 #include <memory>
 
@@ -144,4 +144,4 @@
 }  // namespace hardware
 }  // namespace android
 
-#endif  // HIDL_GENERATED_android_hardware_audio_V2_0_Device_H_
+#endif  // ANDROID_HARDWARE_AUDIO_V2_0_DEVICE_H
diff --git a/audio/2.0/default/DevicesFactory.h b/audio/2.0/default/DevicesFactory.h
index 0ea9859..b046f9f 100644
--- a/audio/2.0/default/DevicesFactory.h
+++ b/audio/2.0/default/DevicesFactory.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef HIDL_GENERATED_android_hardware_audio_V2_0_DevicesFactory_H_
-#define HIDL_GENERATED_android_hardware_audio_V2_0_DevicesFactory_H_
+#ifndef ANDROID_HARDWARE_AUDIO_V2_0_DEVICESFACTORY_H
+#define ANDROID_HARDWARE_AUDIO_V2_0_DEVICESFACTORY_H
 
 #include <hardware/audio.h>
 
@@ -56,4 +56,4 @@
 }  // namespace hardware
 }  // namespace android
 
-#endif  // HIDL_GENERATED_android_hardware_audio_V2_0_DevicesFactory_H_
+#endif  // ANDROID_HARDWARE_AUDIO_V2_0_DEVICESFACTORY_H
diff --git a/audio/2.0/default/PrimaryDevice.h b/audio/2.0/default/PrimaryDevice.h
index 968c208..8177b68 100644
--- a/audio/2.0/default/PrimaryDevice.h
+++ b/audio/2.0/default/PrimaryDevice.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef HIDL_GENERATED_android_hardware_audio_V2_0_PrimaryDevice_H_
-#define HIDL_GENERATED_android_hardware_audio_V2_0_PrimaryDevice_H_
+#ifndef ANDROID_HARDWARE_AUDIO_V2_0_PRIMARYDEVICE_H
+#define ANDROID_HARDWARE_AUDIO_V2_0_PRIMARYDEVICE_H
 
 #include <android/hardware/audio/2.0/IPrimaryDevice.h>
 #include <hidl/Status.h>
@@ -114,4 +114,4 @@
 }  // namespace hardware
 }  // namespace android
 
-#endif  // HIDL_GENERATED_android_hardware_audio_V2_0_PrimaryDevice_H_
+#endif  // ANDROID_HARDWARE_AUDIO_V2_0_PRIMARYDEVICE_H
diff --git a/audio/2.0/default/Stream.h b/audio/2.0/default/Stream.h
index 3893af4..2e641d6 100644
--- a/audio/2.0/default/Stream.h
+++ b/audio/2.0/default/Stream.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef HIDL_GENERATED_android_hardware_audio_V2_0_Stream_H_
-#define HIDL_GENERATED_android_hardware_audio_V2_0_Stream_H_
+#ifndef ANDROID_HARDWARE_AUDIO_V2_0_STREAM_H
+#define ANDROID_HARDWARE_AUDIO_V2_0_STREAM_H
 
 #include <android/hardware/audio/2.0/IStream.h>
 #include <hidl/Status.h>
@@ -91,4 +91,4 @@
 }  // namespace hardware
 }  // namespace android
 
-#endif  // HIDL_GENERATED_android_hardware_audio_V2_0_Stream_H_
+#endif  // ANDROID_HARDWARE_AUDIO_V2_0_STREAM_H
diff --git a/audio/2.0/default/StreamIn.h b/audio/2.0/default/StreamIn.h
index c2a7ea2..f7c17b7 100644
--- a/audio/2.0/default/StreamIn.h
+++ b/audio/2.0/default/StreamIn.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef HIDL_GENERATED_android_hardware_audio_V2_0_StreamIn_H_
-#define HIDL_GENERATED_android_hardware_audio_V2_0_StreamIn_H_
+#ifndef ANDROID_HARDWARE_AUDIO_V2_0_STREAMIN_H
+#define ANDROID_HARDWARE_AUDIO_V2_0_STREAMIN_H
 
 #include <android/hardware/audio/2.0/IStreamIn.h>
 #include <hidl/Status.h>
@@ -95,4 +95,4 @@
 }  // namespace hardware
 }  // namespace android
 
-#endif  // HIDL_GENERATED_android_hardware_audio_V2_0_StreamIn_H_
+#endif  // ANDROID_HARDWARE_AUDIO_V2_0_STREAMIN_H
diff --git a/audio/2.0/default/StreamOut.h b/audio/2.0/default/StreamOut.h
index ca33b2d..d51fc66 100644
--- a/audio/2.0/default/StreamOut.h
+++ b/audio/2.0/default/StreamOut.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef HIDL_GENERATED_android_hardware_audio_V2_0_StreamOut_H_
-#define HIDL_GENERATED_android_hardware_audio_V2_0_StreamOut_H_
+#ifndef ANDROID_HARDWARE_AUDIO_V2_0_STREAMOUT_H
+#define ANDROID_HARDWARE_AUDIO_V2_0_STREAMOUT_H
 
 #include <android/hardware/audio/2.0/IStreamOut.h>
 #include <hidl/Status.h>
@@ -110,4 +110,4 @@
 }  // namespace hardware
 }  // namespace android
 
-#endif  // HIDL_GENERATED_android_hardware_audio_V2_0_StreamOut_H_
+#endif  // ANDROID_HARDWARE_AUDIO_V2_0_STREAMOUT_H
diff --git a/audio/2.0/types.hal b/audio/2.0/types.hal
index 9a5e4f1..7002f38 100644
--- a/audio/2.0/types.hal
+++ b/audio/2.0/types.hal
@@ -18,7 +18,7 @@
 
 import android.hardware.audio.common@2.0;
 
-enum Result {
+enum Result : int32_t {
     OK,
     NOT_INITIALIZED,
     INVALID_ARGUMENTS,
@@ -27,7 +27,7 @@
 };
 
 @export(name="audio_drain_type_t", value_prefix="AUDIO_DRAIN_")
-enum AudioDrain {
+enum AudioDrain : int32_t {
     /* drain() returns when all data has been played. */
     ALL,
     /* drain() returns a short time before all data from the current track has
diff --git a/audio/common/2.0/types.hal b/audio/common/2.0/types.hal
index 75fdb52..4e969a7 100644
--- a/audio/common/2.0/types.hal
+++ b/audio/common/2.0/types.hal
@@ -56,7 +56,7 @@
  * Each port has a unique ID or handle allocated by policy manager.
  */
 @export(name="")
-enum AudioHandleConsts {
+enum AudioHandleConsts : int32_t {
     AUDIO_IO_HANDLE_NONE = 0,
     AUDIO_MODULE_HANDLE_NONE = 0,
     AUDIO_PORT_HANDLE_NONE = 0,
@@ -114,7 +114,7 @@
 };
 
 @export(name="audio_source_t", value_prefix="AUDIO_SOURCE_")
-enum AudioSource {
+enum AudioSource : int32_t {
     // These values must kept in sync with
     //  frameworks/base/media/java/android/media/MediaRecorder.java,
     //  frameworks/av/services/audiopolicy/AudioPolicyService.cpp,
@@ -269,7 +269,7 @@
  * assumptions.
  */
 @export(name="")
-enum FixedChannelCount {
+enum FixedChannelCount : int32_t {
     FCC_2 = 2, // This is typically due to legacy implementation of stereo I/O
     FCC_8 = 8  // This is typically due to audio mixer and resampler limitations
 };
@@ -425,7 +425,7 @@
  * to this convention will be noted at the appropriate API.
  */
 @export(name="", value_prefix="AUDIO_INTERLEAVE_")
-enum AudioInterleave {
+enum AudioInterleave : int32_t {
     LEFT   = 0,
     RIGHT  = 1,
 };
@@ -435,7 +435,7 @@
  * routing.
  */
 @export(name="audio_mode_t", value_prefix="AUDIO_MODE_")
-enum AudioMode {
+enum AudioMode : int32_t {
     INVALID          = -2,
     CURRENT          = -1,
     NORMAL           = 0,
@@ -597,7 +597,7 @@
  * (when getOuput() is called) to an available output stream.
  */
 @export(name="audio_output_flags_t", value_prefix="AUDIO_OUTPUT_FLAG_")
-enum AudioOutputFlag {
+enum AudioOutputFlag : int32_t {
     NONE    = 0x0, // no attributes
     DIRECT  = 0x1, // this output directly connects a track
                    // to one output stream: no software mixer
@@ -627,7 +627,7 @@
  * attributes corresponding to the specified flags.
  */
 @export(name="audio_input_flags_t", value_prefix="AUDIO_INPUT_FLAG_")
-enum AudioInputFlag {
+enum AudioInputFlag : int32_t {
     NONE       = 0x0,  // no attributes
     FAST       = 0x1,  // prefer an input that supports "fast tracks"
     HW_HOTWORD = 0x2,  // prefer an input that captures from hw hotword source
@@ -728,7 +728,7 @@
 
 /* Audio port role: either source or sink */
 @export(name="audio_port_role_t", value_prefix="AUDIO_PORT_ROLE_")
-enum AudioPortRole {
+enum AudioPortRole : int32_t {
     NONE,
     SOURCE,
     SINK,
@@ -739,7 +739,7 @@
  * PlaybackThread output) or a physical device (e.g OUT_SPEAKER)
  */
 @export(name="audio_port_type_t", value_prefix="AUDIO_PORT_TYPE_")
-enum AudioPortType {
+enum AudioPortType : int32_t {
     NONE,
     DEVICE,
     MIX,
@@ -816,7 +816,7 @@
  * Latency class of the audio mix.
  */
 @export(name="audio_mix_latency_class_t", value_prefix="AUDIO_LATENCY_")
-enum AudioMixLatencyClass {
+enum AudioMixLatencyClass : int32_t {
     LOW,
     NORMAL
 } ;
diff --git a/audio/effect/2.0/IDownmixEffect.hal b/audio/effect/2.0/IDownmixEffect.hal
index 817e14c..06409a3 100644
--- a/audio/effect/2.0/IDownmixEffect.hal
+++ b/audio/effect/2.0/IDownmixEffect.hal
@@ -20,7 +20,7 @@
 import IEffect;
 
 interface IDownmixEffect extends IEffect {
-    enum Type {
+    enum Type : int32_t {
         STRIP, // throw away the extra channels
         FOLD   // mix the extra channels with FL/FR
     };
diff --git a/audio/effect/2.0/INoiseSuppressionEffect.hal b/audio/effect/2.0/INoiseSuppressionEffect.hal
index 58e439f..ae2bfb5 100644
--- a/audio/effect/2.0/INoiseSuppressionEffect.hal
+++ b/audio/effect/2.0/INoiseSuppressionEffect.hal
@@ -20,7 +20,7 @@
 import IEffect;
 
 interface INoiseSuppressionEffect extends IEffect {
-    enum Level {
+    enum Level : int32_t {
         LOW,
         MEDIUM,
         HIGH
@@ -36,7 +36,7 @@
      */
     getSuppressionLevel() generates (Result retval, Level level);
 
-    enum Type {
+    enum Type : int32_t {
         SINGLE_CHANNEL,
         MULTI_CHANNEL
     };
diff --git a/audio/effect/2.0/IPresetReverbEffect.hal b/audio/effect/2.0/IPresetReverbEffect.hal
index 58dfd40..2237bc4 100644
--- a/audio/effect/2.0/IPresetReverbEffect.hal
+++ b/audio/effect/2.0/IPresetReverbEffect.hal
@@ -20,7 +20,7 @@
 import IEffect;
 
 interface IPresetReverbEffect extends IEffect {
-    enum Preset {
+    enum Preset : int32_t {
         NONE,        // no reverb or reflections
         SMALLROOM,   // a small room less than five meters in length
         MEDIUMROOM,  // a medium room with a length of ten meters or less
diff --git a/audio/effect/2.0/IVisualizerEffect.hal b/audio/effect/2.0/IVisualizerEffect.hal
index 70dabf9..79dc9ee 100644
--- a/audio/effect/2.0/IVisualizerEffect.hal
+++ b/audio/effect/2.0/IVisualizerEffect.hal
@@ -20,7 +20,7 @@
 import IEffect;
 
 interface IVisualizerEffect extends IEffect {
-    enum CaptureSizeRange {
+    enum CaptureSizeRange : int32_t {
         MAX = 1024,  // maximum capture size in samples
         MIN = 128    // minimum capture size in samples
     };
@@ -35,7 +35,7 @@
      */
     getCaptureSize() generates (Result retval, uint16_t captureSize);
 
-    enum ScalingMode {
+    enum ScalingMode : int32_t {
         // Keep in sync with SCALING_MODE_... in
         // frameworks/base/media/java/android/media/audiofx/Visualizer.java
         NORMALIZED = 0,
@@ -62,7 +62,7 @@
      */
     getLatency() generates (Result retval, uint32_t latencyMs);
 
-    enum MeasurementMode {
+    enum MeasurementMode : int32_t {
         // Keep in sync with MEASUREMENT_MODE_... in
         // frameworks/base/media/java/android/media/audiofx/Visualizer.java
         NONE = 0x0,
diff --git a/audio/effect/2.0/default/AcousticEchoCancelerEffect.h b/audio/effect/2.0/default/AcousticEchoCancelerEffect.h
index cebc2d4..71fcc97 100644
--- a/audio/effect/2.0/default/AcousticEchoCancelerEffect.h
+++ b/audio/effect/2.0/default/AcousticEchoCancelerEffect.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef HIDL_GENERATED_android_hardware_audio_effect_V2_0_AcousticEchoCancelerEffect_H_
-#define HIDL_GENERATED_android_hardware_audio_effect_V2_0_AcousticEchoCancelerEffect_H_
+#ifndef ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_ACOUSTICECHOCANCELEREFFECT_H
+#define ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_ACOUSTICECHOCANCELEREFFECT_H
 
 #include <android/hardware/audio/effect/2.0/IAcousticEchoCancelerEffect.h>
 #include <hidl/Status.h>
@@ -115,4 +115,4 @@
 }  // namespace hardware
 }  // namespace android
 
-#endif  // HIDL_GENERATED_android_hardware_audio_effect_V2_0_AcousticEchoCancelerEffect_H_
+#endif  // ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_ACOUSTICECHOCANCELEREFFECT_H
diff --git a/audio/effect/2.0/default/AutomaticGainControlEffect.h b/audio/effect/2.0/default/AutomaticGainControlEffect.h
index f4b228c..1696d3c 100644
--- a/audio/effect/2.0/default/AutomaticGainControlEffect.h
+++ b/audio/effect/2.0/default/AutomaticGainControlEffect.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef HIDL_GENERATED_android_hardware_audio_effect_V2_0_AutomaticGainControlEffect_H_
-#define HIDL_GENERATED_android_hardware_audio_effect_V2_0_AutomaticGainControlEffect_H_
+#ifndef ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_AUTOMATICGAINCONTROLEFFECT_H
+#define ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_AUTOMATICGAINCONTROLEFFECT_H
 
 #include <system/audio_effects/effect_agc.h>
 
@@ -131,4 +131,4 @@
 }  // namespace hardware
 }  // namespace android
 
-#endif  // HIDL_GENERATED_android_hardware_audio_effect_V2_0_AutomaticGainControlEffect_H_
+#endif  // ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_AUTOMATICGAINCONTROLEFFECT_H
diff --git a/audio/effect/2.0/default/BassBoostEffect.h b/audio/effect/2.0/default/BassBoostEffect.h
index 23377e1..6636717 100644
--- a/audio/effect/2.0/default/BassBoostEffect.h
+++ b/audio/effect/2.0/default/BassBoostEffect.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef HIDL_GENERATED_android_hardware_audio_effect_V2_0_BassBoostEffect_H_
-#define HIDL_GENERATED_android_hardware_audio_effect_V2_0_BassBoostEffect_H_
+#ifndef ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_BASSBOOSTEFFECT_H
+#define ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_BASSBOOSTEFFECT_H
 
 #include <android/hardware/audio/effect/2.0/IBassBoostEffect.h>
 #include <hidl/Status.h>
@@ -116,4 +116,4 @@
 }  // namespace hardware
 }  // namespace android
 
-#endif  // HIDL_GENERATED_android_hardware_audio_effect_V2_0_BassBoostEffect_H_
+#endif  // ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_BASSBOOSTEFFECT_H
diff --git a/audio/effect/2.0/default/DownmixEffect.h b/audio/effect/2.0/default/DownmixEffect.h
index 5ed4ffd..c7e1b9b 100644
--- a/audio/effect/2.0/default/DownmixEffect.h
+++ b/audio/effect/2.0/default/DownmixEffect.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef HIDL_GENERATED_android_hardware_audio_effect_V2_0_DownmixEffect_H_
-#define HIDL_GENERATED_android_hardware_audio_effect_V2_0_DownmixEffect_H_
+#ifndef ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_DOWNMIXEFFECT_H
+#define ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_DOWNMIXEFFECT_H
 
 #include <android/hardware/audio/effect/2.0/IDownmixEffect.h>
 #include <hidl/Status.h>
@@ -115,4 +115,4 @@
 }  // namespace hardware
 }  // namespace android
 
-#endif  // HIDL_GENERATED_android_hardware_audio_effect_V2_0_DownmixEffect_H_
+#endif  // ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_DOWNMIXEFFECT_H
diff --git a/audio/effect/2.0/default/Effect.h b/audio/effect/2.0/default/Effect.h
index e27a7e4..82eb1f2 100644
--- a/audio/effect/2.0/default/Effect.h
+++ b/audio/effect/2.0/default/Effect.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef HIDL_GENERATED_android_hardware_audio_effect_V2_0_Effect_H_
-#define HIDL_GENERATED_android_hardware_audio_effect_V2_0_Effect_H_
+#ifndef ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_EFFECT_H
+#define ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_EFFECT_H
 
 #include <vector>
 
@@ -256,4 +256,4 @@
 }  // namespace hardware
 }  // namespace android
 
-#endif  // HIDL_GENERATED_android_hardware_audio_effect_V2_0_Effect_H_
+#endif  // ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_EFFECT_H
diff --git a/audio/effect/2.0/default/EffectsFactory.h b/audio/effect/2.0/default/EffectsFactory.h
index d934c93..829a534 100644
--- a/audio/effect/2.0/default/EffectsFactory.h
+++ b/audio/effect/2.0/default/EffectsFactory.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef HIDL_GENERATED_android_hardware_audio_effect_V2_0_EffectsFactory_H_
-#define HIDL_GENERATED_android_hardware_audio_effect_V2_0_EffectsFactory_H_
+#ifndef ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_EFFECTSFACTORY_H
+#define ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_EFFECTSFACTORY_H
 
 #include <system/audio_effect.h>
 
@@ -63,4 +63,4 @@
 }  // namespace hardware
 }  // namespace android
 
-#endif  // HIDL_GENERATED_android_hardware_audio_effect_V2_0_EffectsFactory_H_
+#endif  // ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_EFFECTSFACTORY_H
diff --git a/audio/effect/2.0/default/EnvironmentalReverbEffect.h b/audio/effect/2.0/default/EnvironmentalReverbEffect.h
index c97c51c..edb5747 100644
--- a/audio/effect/2.0/default/EnvironmentalReverbEffect.h
+++ b/audio/effect/2.0/default/EnvironmentalReverbEffect.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef HIDL_GENERATED_android_hardware_audio_effect_V2_0_EnvironmentalReverbEffect_H_
-#define HIDL_GENERATED_android_hardware_audio_effect_V2_0_EnvironmentalReverbEffect_H_
+#ifndef ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_ENVIRONMENTALREVERBEFFECT_H
+#define ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_ENVIRONMENTALREVERBEFFECT_H
 
 #include <system/audio_effects/effect_environmentalreverb.h>
 
@@ -157,4 +157,4 @@
 }  // namespace hardware
 }  // namespace android
 
-#endif  // HIDL_GENERATED_android_hardware_audio_effect_V2_0_EnvironmentalReverbEffect_H_
+#endif  // ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_ENVIRONMENTALREVERBEFFECT_H
diff --git a/audio/effect/2.0/default/EqualizerEffect.h b/audio/effect/2.0/default/EqualizerEffect.h
index 5665e9c..ba99e2b 100644
--- a/audio/effect/2.0/default/EqualizerEffect.h
+++ b/audio/effect/2.0/default/EqualizerEffect.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef HIDL_GENERATED_android_hardware_audio_effect_V2_0_EqualizerEffect_H_
-#define HIDL_GENERATED_android_hardware_audio_effect_V2_0_EqualizerEffect_H_
+#ifndef ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_EQUALIZEREFFECT_H
+#define ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_EQUALIZEREFFECT_H
 
 #include <vector>
 
@@ -147,4 +147,4 @@
 }  // namespace hardware
 }  // namespace android
 
-#endif  // HIDL_GENERATED_android_hardware_audio_effect_V2_0_EqualizerEffect_H_
+#endif  // ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_EQUALIZEREFFECT_H
diff --git a/audio/effect/2.0/default/LoudnessEnhancerEffect.h b/audio/effect/2.0/default/LoudnessEnhancerEffect.h
index e68b038..8ca6e94 100644
--- a/audio/effect/2.0/default/LoudnessEnhancerEffect.h
+++ b/audio/effect/2.0/default/LoudnessEnhancerEffect.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef HIDL_GENERATED_android_hardware_audio_effect_V2_0_LoudnessEnhancerEffect_H_
-#define HIDL_GENERATED_android_hardware_audio_effect_V2_0_LoudnessEnhancerEffect_H_
+#ifndef ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_LOUDNESSENHANCEREFFECT_H
+#define ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_LOUDNESSENHANCEREFFECT_H
 
 #include <android/hardware/audio/effect/2.0/ILoudnessEnhancerEffect.h>
 #include <hidl/Status.h>
@@ -125,4 +125,4 @@
 }  // namespace hardware
 }  // namespace android
 
-#endif  // HIDL_GENERATED_android_hardware_audio_effect_V2_0_LoudnessEnhancerEffect_H_
+#endif  // ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_LOUDNESSENHANCEREFFECT_H
diff --git a/audio/effect/2.0/default/NoiseSuppressionEffect.h b/audio/effect/2.0/default/NoiseSuppressionEffect.h
index 83e513e..b73727e 100644
--- a/audio/effect/2.0/default/NoiseSuppressionEffect.h
+++ b/audio/effect/2.0/default/NoiseSuppressionEffect.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef HIDL_GENERATED_android_hardware_audio_effect_V2_0_NoiseSuppressionEffect_H_
-#define HIDL_GENERATED_android_hardware_audio_effect_V2_0_NoiseSuppressionEffect_H_
+#ifndef ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_NOISESUPPRESSIONEFFECT_H
+#define ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_NOISESUPPRESSIONEFFECT_H
 
 #include <system/audio_effects/effect_ns.h>
 
@@ -139,4 +139,4 @@
 }  // namespace hardware
 }  // namespace android
 
-#endif  // HIDL_GENERATED_android_hardware_audio_effect_V2_0_NoiseSuppressionEffect_H_
+#endif  // ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_NOISESUPPRESSIONEFFECT_H
diff --git a/audio/effect/2.0/default/PresetReverbEffect.h b/audio/effect/2.0/default/PresetReverbEffect.h
index 3d98102..4d39569 100644
--- a/audio/effect/2.0/default/PresetReverbEffect.h
+++ b/audio/effect/2.0/default/PresetReverbEffect.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef HIDL_GENERATED_android_hardware_audio_effect_V2_0_PresetReverbEffect_H_
-#define HIDL_GENERATED_android_hardware_audio_effect_V2_0_PresetReverbEffect_H_
+#ifndef ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_PRESETREVERBEFFECT_H
+#define ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_PRESETREVERBEFFECT_H
 
 #include <android/hardware/audio/effect/2.0/IPresetReverbEffect.h>
 #include <hidl/Status.h>
@@ -125,4 +125,4 @@
 }  // namespace hardware
 }  // namespace android
 
-#endif  // HIDL_GENERATED_android_hardware_audio_effect_V2_0_PresetReverbEffect_H_
+#endif  // ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_PRESETREVERBEFFECT_H
diff --git a/audio/effect/2.0/default/VirtualizerEffect.h b/audio/effect/2.0/default/VirtualizerEffect.h
index 2731c4e..ba89a61 100644
--- a/audio/effect/2.0/default/VirtualizerEffect.h
+++ b/audio/effect/2.0/default/VirtualizerEffect.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef HIDL_GENERATED_android_hardware_audio_effect_V2_0_VirtualizerEffect_H_
-#define HIDL_GENERATED_android_hardware_audio_effect_V2_0_VirtualizerEffect_H_
+#ifndef ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_VIRTUALIZEREFFECT_H
+#define ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_VIRTUALIZEREFFECT_H
 
 #include <android/hardware/audio/effect/2.0/IVirtualizerEffect.h>
 #include <hidl/Status.h>
@@ -136,4 +136,4 @@
 }  // namespace hardware
 }  // namespace android
 
-#endif  // HIDL_GENERATED_android_hardware_audio_effect_V2_0_VirtualizerEffect_H_
+#endif  // ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_VIRTUALIZEREFFECT_H
diff --git a/audio/effect/2.0/default/VisualizerEffect.h b/audio/effect/2.0/default/VisualizerEffect.h
index 505b16f..ae0b05c 100644
--- a/audio/effect/2.0/default/VisualizerEffect.h
+++ b/audio/effect/2.0/default/VisualizerEffect.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef HIDL_GENERATED_android_hardware_audio_effect_V2_0_VisualizerEffect_H_
-#define HIDL_GENERATED_android_hardware_audio_effect_V2_0_VisualizerEffect_H_
+#ifndef ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_VISUALIZEREFFECT_H
+#define ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_VISUALIZEREFFECT_H
 
 #include <android/hardware/audio/effect/2.0/IVisualizerEffect.h>
 #include <hidl/Status.h>
@@ -135,4 +135,4 @@
 }  // namespace hardware
 }  // namespace android
 
-#endif  // HIDL_GENERATED_android_hardware_audio_effect_V2_0_VisualizerEffect_H_
+#endif  // ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_VISUALIZEREFFECT_H
diff --git a/audio/effect/2.0/types.hal b/audio/effect/2.0/types.hal
index 35015b2..ad7f4ce 100644
--- a/audio/effect/2.0/types.hal
+++ b/audio/effect/2.0/types.hal
@@ -18,7 +18,7 @@
 
 import android.hardware.audio.common@2.0;
 
-enum Result {
+enum Result : int32_t {
     OK,
     NOT_INITIALIZED,
     INVALID_ARGUMENTS,
@@ -110,7 +110,7 @@
  * +----------------+--------+--------------------------------------------------
  */
 @export(name="", value_prefix="EFFECT_FLAG_")
-enum EffectFlags {
+enum EffectFlags : int32_t {
     // Insert mode
     TYPE_SHIFT = 0,
     TYPE_SIZE = 3,
@@ -229,7 +229,7 @@
 };
 
 @export(name="effect_buffer_access_e", value_prefix="EFFECT_BUFFER_")
-enum EffectBufferAccess {
+enum EffectBufferAccess : int32_t {
     ACCESS_WRITE,
     ACCESS_READ,
     ACCESS_ACCUMULATE
@@ -239,7 +239,7 @@
  * Determines what fields of EffectBufferConfig need to be considered.
  */
 @export(name="", value_prefix="EFFECT_CONFIG_")
-enum EffectConfigParameters {
+enum EffectConfigParameters : int32_t {
     BUFFER = 0x0001,    // buffer field
     SMP_RATE = 0x0002,  // samplingRate
     CHANNELS = 0x0004,  // channels
@@ -267,7 +267,7 @@
 };
 
 @export(name="effect_feature_e", value_prefix="EFFECT_FEATURE_")
-enum EffectFeature {
+enum EffectFeature : int32_t {
     AUX_CHANNELS, // supports auxiliary channels
                   // (e.g. dual mic noise suppressor)
     CNT
diff --git a/boot/1.0/default/BootControl.cpp b/boot/1.0/default/BootControl.cpp
index 4c34168..56d7b33 100644
--- a/boot/1.0/default/BootControl.cpp
+++ b/boot/1.0/default/BootControl.cpp
@@ -1,3 +1,18 @@
+/*
+ * 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 "android.hardware.boot@1.0-impl"
 #include <utils/Log.h>
 
diff --git a/boot/1.0/default/BootControl.h b/boot/1.0/default/BootControl.h
index be8a814..3d668dc 100644
--- a/boot/1.0/default/BootControl.h
+++ b/boot/1.0/default/BootControl.h
@@ -1,3 +1,18 @@
+/*
+ * 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_BOOT_V1_0_BOOTCONTROL_H
 #define ANDROID_HARDWARE_BOOT_V1_0_BOOTCONTROL_H
 
diff --git a/boot/1.0/default/service.cpp b/boot/1.0/default/service.cpp
index a594db6..0dc56bf 100644
--- a/boot/1.0/default/service.cpp
+++ b/boot/1.0/default/service.cpp
@@ -1,3 +1,18 @@
+/*
+ * 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 "android.hardware.boot@1.0-service"
 
 #include <android/hardware/boot/1.0/IBootControl.h>
diff --git a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp b/broadcastradio/1.0/Android.mk
similarity index 65%
copy from vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
copy to broadcastradio/1.0/Android.mk
index b6ee3a3..f9e3276 100644
--- a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
+++ b/broadcastradio/1.0/Android.mk
@@ -17,17 +17,3 @@
 LOCAL_PATH := $(call my-dir)
 
 include $(call all-subdir-makefiles)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := VibratorHidlTargetTest
-VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/hidl/target
-LOCAL_MODULE_CLASS := FAKE
-LOCAL_IS_HOST_MODULE := true
-LOCAL_COMPATIBILITY_SUITE := vts
-
-include $(BUILD_SYSTEM)/base_rules.mk
-
-$(LOCAL_BUILT_MODULE):
-  @echo "VTS host-driven test target: $(LOCAL_MODULE)"
-  $(hide) touch $@
diff --git a/broadcastradio/1.0/default/BroadcastRadio.h b/broadcastradio/1.0/default/BroadcastRadio.h
index dbd6e07..6764d82 100644
--- a/broadcastradio/1.0/default/BroadcastRadio.h
+++ b/broadcastradio/1.0/default/BroadcastRadio.h
@@ -13,8 +13,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#ifndef HIDL_GENERATED_android_hardware_broadcastradio_V1_0_BroadcastRadio_H_
-#define HIDL_GENERATED_android_hardware_broadcastradio_V1_0_BroadcastRadio_H_
+#ifndef ANDROID_HARDWARE_BROADCASTRADIO_V1_0_BROADCASTRADIO_H
+#define ANDROID_HARDWARE_BROADCASTRADIO_V1_0_BROADCASTRADIO_H
 
 #include <android/hardware/broadcastradio/1.0/IBroadcastRadio.h>
 #include <hidl/Status.h>
@@ -68,4 +68,4 @@
 }  // namespace hardware
 }  // namespace android
 
-#endif  // HIDL_GENERATED_android_hardware_broadcastradio_V1_0_BroadcastRadio_H_
+#endif  // ANDROID_HARDWARE_BROADCASTRADIO_V1_0_BROADCASTRADIO_H
diff --git a/broadcastradio/1.0/default/BroadcastRadioFactory.h b/broadcastradio/1.0/default/BroadcastRadioFactory.h
index 9b2ca17..97f7f55 100644
--- a/broadcastradio/1.0/default/BroadcastRadioFactory.h
+++ b/broadcastradio/1.0/default/BroadcastRadioFactory.h
@@ -13,8 +13,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#ifndef HIDL_GENERATED_android_hardware_broadcastradio_V1_0_BroadcastRadioFactory_H_
-#define HIDL_GENERATED_android_hardware_broadcastradio_V1_0_BroadcastRadioFactory_H_
+#ifndef ANDROID_HARDWARE_BROADCASTRADIO_V1_0_BROADCASTRADIOFACTORY_H
+#define ANDROID_HARDWARE_BROADCASTRADIO_V1_0_BROADCASTRADIOFACTORY_H
 
 #include <android/hardware/broadcastradio/1.0/IBroadcastRadioFactory.h>
 #include <hidl/Status.h>
@@ -40,4 +40,4 @@
 }  // namespace hardware
 }  // namespace android
 
-#endif  // HIDL_GENERATED_android_hardware_broadcastradio_V1_0_BroadcastRadioFactory_H_
+#endif  // ANDROID_HARDWARE_BROADCASTRADIO_V1_0_BROADCASTRADIOFACTORY_H
diff --git a/broadcastradio/1.0/default/Tuner.h b/broadcastradio/1.0/default/Tuner.h
index 94e216e..a621d97 100644
--- a/broadcastradio/1.0/default/Tuner.h
+++ b/broadcastradio/1.0/default/Tuner.h
@@ -13,8 +13,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#ifndef HIDL_GENERATED_android_hardware_broadcastradio_V1_0_Tuner_H_
-#define HIDL_GENERATED_android_hardware_broadcastradio_V1_0_Tuner_H_
+#ifndef ANDROID_HARDWARE_BROADCASTRADIO_V1_0_TUNER_H
+#define ANDROID_HARDWARE_BROADCASTRADIO_V1_0_TUNER_H
 
 #include <android/hardware/broadcastradio/1.0/ITuner.h>
 #include <android/hardware/broadcastradio/1.0/ITunerCallback.h>
@@ -64,4 +64,4 @@
 }  // namespace hardware
 }  // namespace android
 
-#endif  // HIDL_GENERATED_android_hardware_broadcastradio_V1_0_Tuner_H_
+#endif  // ANDROID_HARDWARE_BROADCASTRADIO_V1_0_TUNER_H
diff --git a/broadcastradio/1.0/types.hal b/broadcastradio/1.0/types.hal
index d04359c..d8b2da3 100644
--- a/broadcastradio/1.0/types.hal
+++ b/broadcastradio/1.0/types.hal
@@ -16,7 +16,7 @@
 
 package android.hardware.broadcastradio@1.0;
 
-enum Result {
+enum Result : int32_t {
     OK,
     NOT_INITIALIZED,
     INVALID_ARGUMENTS,
@@ -139,7 +139,7 @@
     vec<BandConfig> bands; /* band descriptors */
 };
 
-enum MetadataType {
+enum MetadataType : int32_t {
     INVALID    = -1,
     /* Signed 32 bit integer  */
     INT        = 0,
@@ -152,7 +152,7 @@
     CLOCK      = 3,
 };
 
-enum MetadataKey {
+enum MetadataKey : int32_t {
     INVALID      = -1,
     /* RDS PI                 - string  */
     RDS_PI       = 0,
diff --git a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp b/broadcastradio/1.0/vts/Android.mk
similarity index 65%
copy from vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
copy to broadcastradio/1.0/vts/Android.mk
index b6ee3a3..f9e3276 100644
--- a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
+++ b/broadcastradio/1.0/vts/Android.mk
@@ -17,17 +17,3 @@
 LOCAL_PATH := $(call my-dir)
 
 include $(call all-subdir-makefiles)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := VibratorHidlTargetTest
-VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/hidl/target
-LOCAL_MODULE_CLASS := FAKE
-LOCAL_IS_HOST_MODULE := true
-LOCAL_COMPATIBILITY_SUITE := vts
-
-include $(BUILD_SYSTEM)/base_rules.mk
-
-$(LOCAL_BUILT_MODULE):
-  @echo "VTS host-driven test target: $(LOCAL_MODULE)"
-  $(hide) touch $@
diff --git a/broadcastradio/1.0/vts/functional/Android.bp b/broadcastradio/1.0/vts/functional/Android.bp
new file mode 100644
index 0000000..0edfcab
--- /dev/null
+++ b/broadcastradio/1.0/vts/functional/Android.bp
@@ -0,0 +1,37 @@
+//
+// 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.
+//
+
+cc_test {
+    name: "broadcastradio_hidl_hal_test",
+    gtest: true,
+    srcs: ["broadcastradio_hidl_hal_test.cpp"],
+    shared_libs: [
+        "libbase",
+        "liblog",
+        "libcutils",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libnativehelper",
+        "libutils",
+        "android.hardware.broadcastradio@1.0",
+    ],
+    static_libs: ["libgtest"],
+    cflags: [
+        "-O0",
+        "-g",
+    ],
+}
diff --git a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp b/broadcastradio/1.0/vts/functional/Android.mk
similarity index 65%
copy from vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
copy to broadcastradio/1.0/vts/functional/Android.mk
index b6ee3a3..f9e3276 100644
--- a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
+++ b/broadcastradio/1.0/vts/functional/Android.mk
@@ -17,17 +17,3 @@
 LOCAL_PATH := $(call my-dir)
 
 include $(call all-subdir-makefiles)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := VibratorHidlTargetTest
-VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/hidl/target
-LOCAL_MODULE_CLASS := FAKE
-LOCAL_IS_HOST_MODULE := true
-LOCAL_COMPATIBILITY_SUITE := vts
-
-include $(BUILD_SYSTEM)/base_rules.mk
-
-$(LOCAL_BUILT_MODULE):
-  @echo "VTS host-driven test target: $(LOCAL_MODULE)"
-  $(hide) touch $@
diff --git a/broadcastradio/1.0/vts/functional/broadcastradio_hidl_hal_test.cpp b/broadcastradio/1.0/vts/functional/broadcastradio_hidl_hal_test.cpp
new file mode 100644
index 0000000..26666d6
--- /dev/null
+++ b/broadcastradio/1.0/vts/functional/broadcastradio_hidl_hal_test.cpp
@@ -0,0 +1,471 @@
+/*
+ * 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 "BroadcastRadioHidlHalTest"
+#include <gtest/gtest.h>
+#include <android-base/logging.h>
+#include <cutils/native_handle.h>
+#include <cutils/properties.h>
+#include <utils/threads.h>
+#include <hwbinder/IPCThreadState.h>
+#include <hwbinder/ProcessState.h>
+
+#include <android/hardware/broadcastradio/1.0/IBroadcastRadioFactory.h>
+#include <android/hardware/broadcastradio/1.0/IBroadcastRadio.h>
+#include <android/hardware/broadcastradio/1.0/ITuner.h>
+#include <android/hardware/broadcastradio/1.0/ITunerCallback.h>
+#include <android/hardware/broadcastradio/1.0/types.h>
+
+
+using ::android::sp;
+using ::android::Mutex;
+using ::android::Condition;
+using ::android::hardware::ProcessState;
+using ::android::hardware::Return;
+using ::android::hardware::Status;
+using ::android::hardware::Void;
+using ::android::hardware::broadcastradio::V1_0::IBroadcastRadioFactory;
+using ::android::hardware::broadcastradio::V1_0::IBroadcastRadio;
+using ::android::hardware::broadcastradio::V1_0::ITuner;
+using ::android::hardware::broadcastradio::V1_0::ITunerCallback;
+using ::android::hardware::broadcastradio::V1_0::Result;
+using ::android::hardware::broadcastradio::V1_0::Class;
+using ::android::hardware::broadcastradio::V1_0::Properties;
+using ::android::hardware::broadcastradio::V1_0::BandConfig;
+using ::android::hardware::broadcastradio::V1_0::Direction;
+using ::android::hardware::broadcastradio::V1_0::ProgramInfo;
+using ::android::hardware::broadcastradio::V1_0::MetaData;
+
+
+// The main test class for Sound Trigger HIDL HAL.
+
+class BroadcastRadioHidlTest : public ::testing::Test {
+ protected:
+    virtual void SetUp() override {
+        bool getStub = false;
+        char getsubProperty[PROPERTY_VALUE_MAX];
+        if (property_get("vts.hidl.get_stub", getsubProperty, "") > 0) {
+            if (!strcmp(getsubProperty, "true") ||
+                    !strcmp(getsubProperty, "True") ||
+                    !strcmp(getsubProperty, "1")) {
+                getStub = true;
+            }
+        }
+        sp<IBroadcastRadioFactory> factory =
+              IBroadcastRadioFactory::getService("broadcastradio", getStub);
+        if (factory != 0) {
+            factory->connectModule(Class::AM_FM,
+                             [&](Result retval, const ::android::sp<IBroadcastRadio>& result) {
+                if (retval == Result::OK) {
+                  mRadio = result;
+                }
+            });
+        }
+        mTunerCallback = new MyCallback(this);
+        ASSERT_NE(nullptr, mRadio.get());
+        ASSERT_EQ(!getStub, mRadio->isRemote());
+        ASSERT_NE(nullptr, mTunerCallback.get());
+    }
+
+    virtual void TearDown() override {
+        mTuner.clear();
+        mRadio.clear();
+    }
+
+    class MyCallback : public ITunerCallback {
+     public:
+
+        // ITunerCallback methods (see doc in ITunerCallback.hal)
+        virtual Return<void> hardwareFailure() {
+            ALOGI("%s", __FUNCTION__);
+            mParentTest->onHwFailureCallback();
+            return Void();
+        }
+
+        virtual Return<void> configChange(Result result, const BandConfig& config __unused) {
+            ALOGI("%s result %d", __FUNCTION__, result);
+            mParentTest->onResultCallback(result);
+            return Void();
+        }
+
+        virtual Return<void> tuneComplete(Result result, const ProgramInfo& info __unused) {
+            ALOGI("%s result %d", __FUNCTION__, result);
+            mParentTest->onResultCallback(result);
+            return Void();
+        }
+
+        virtual Return<void> afSwitch(const ProgramInfo& info __unused) {
+            return Void();
+        }
+
+        virtual Return<void> antennaStateChange(bool connected) {
+            ALOGI("%s connected %d", __FUNCTION__, connected);
+            return Void();
+        }
+
+        virtual Return<void> trafficAnnouncement(bool active) {
+            ALOGI("%s active %d", __FUNCTION__, active);
+            return Void();
+        }
+
+        virtual Return<void> emergencyAnnouncement(bool active) {
+            ALOGI("%s active %d", __FUNCTION__, active);
+            return Void();
+        }
+
+        virtual Return<void> newMetadata(uint32_t channel __unused, uint32_t subChannel __unused,
+                           const ::android::hardware::hidl_vec<MetaData>& metadata __unused) {
+            ALOGI("%s", __FUNCTION__);
+            return Void();
+        }
+
+                MyCallback(BroadcastRadioHidlTest *parentTest) : mParentTest(parentTest) {}
+
+     private:
+        // BroadcastRadioHidlTest instance to which callbacks will be notified.
+        BroadcastRadioHidlTest *mParentTest;
+    };
+
+
+    /**
+     * Method called by MyCallback when a callback with no status or boolean value is received
+     */
+    void onCallback() {
+        Mutex::Autolock _l(mLock);
+        onCallback_l();
+    }
+
+    /**
+     * Method called by MyCallback when hardwareFailure() callback is received
+     */
+    void onHwFailureCallback() {
+        Mutex::Autolock _l(mLock);
+        mHwFailure = true;
+        onCallback_l();
+    }
+
+    /**
+     * Method called by MyCallback when a callback with status is received
+     */
+    void onResultCallback(Result result) {
+        Mutex::Autolock _l(mLock);
+        mResultCallbackData = result;
+        onCallback_l();
+    }
+
+    /**
+     * Method called by MyCallback when a boolean indication is received
+     */
+    void onBoolCallback(bool result) {
+        Mutex::Autolock _l(mLock);
+        mBoolCallbackData = result;
+        onCallback_l();
+    }
+
+
+        BroadcastRadioHidlTest() :
+            mCallbackCalled(false), mBoolCallbackData(false),
+            mResultCallbackData(Result::OK), mHwFailure(false) {}
+
+    void onCallback_l() {
+        if (!mCallbackCalled) {
+            mCallbackCalled = true;
+            mCallbackCond.broadcast();
+        }
+    }
+
+
+    bool waitForCallback(nsecs_t reltime = 0) {
+        Mutex::Autolock _l(mLock);
+        nsecs_t endTime = systemTime() + reltime;
+        while (!mCallbackCalled) {
+            if (reltime == 0) {
+                mCallbackCond.wait(mLock);
+            } else {
+                nsecs_t now = systemTime();
+                if (now > endTime) {
+                    return false;
+                }
+                mCallbackCond.waitRelative(mLock, endTime - now);
+            }
+        }
+        return true;
+    }
+
+    bool getProperties();
+    bool openTuner();
+    bool checkAntenna();
+
+    static const nsecs_t kConfigCallbacktimeoutNs = seconds_to_nanoseconds(10);
+    static const nsecs_t kTuneCallbacktimeoutNs = seconds_to_nanoseconds(30);
+
+    sp<IBroadcastRadio> mRadio;
+    Properties mHalProperties;
+    sp<ITuner> mTuner;
+    sp<MyCallback> mTunerCallback;
+    Mutex mLock;
+    Condition mCallbackCond;
+    bool mCallbackCalled;
+    bool mBoolCallbackData;
+    Result mResultCallbackData;
+    bool mHwFailure;
+};
+
+// A class for test environment setup (kept since this file is a template).
+class BroadcastRadioHidlEnvironment : public ::testing::Environment {
+ public:
+    virtual void SetUp() {}
+    virtual void TearDown() {}
+};
+
+bool BroadcastRadioHidlTest::getProperties()
+{
+    if (mHalProperties.bands.size() == 0) {
+        Result halResult = Result::NOT_INITIALIZED;
+        Return<void> hidlReturn =
+                mRadio->getProperties([&](Result result, const Properties& properties) {
+                        halResult = result;
+                        if (result == Result::OK) {
+                            mHalProperties = properties;
+                        }
+                    });
+
+        EXPECT_EQ(Status::EX_NONE, hidlReturn.getStatus().exceptionCode());
+        EXPECT_EQ(Result::OK, halResult);
+        EXPECT_EQ(Class::AM_FM, mHalProperties.classId);
+        EXPECT_GT(mHalProperties.numTuners, 0u);
+        EXPECT_GT(mHalProperties.bands.size(), 0u);
+    }
+    return mHalProperties.bands.size() > 0;
+}
+
+bool BroadcastRadioHidlTest::openTuner()
+{
+    if (!getProperties()) {
+        return false;
+    }
+    if (mTuner.get() == nullptr) {
+        Result halResult = Result::NOT_INITIALIZED;
+        Return<void> hidlReturn =
+                mRadio->openTuner(mHalProperties.bands[0], true, mTunerCallback,
+                                  [&](Result result, const sp<ITuner>& tuner) {
+                        halResult = result;
+                        if (result == Result::OK) {
+                            mTuner = tuner;
+                        }
+                    });
+        EXPECT_EQ(Status::EX_NONE, hidlReturn.getStatus().exceptionCode());
+        EXPECT_EQ(Result::OK, halResult);
+        EXPECT_EQ(true, waitForCallback(kConfigCallbacktimeoutNs));
+    }
+    EXPECT_NE(nullptr, mTuner.get());
+    return nullptr != mTuner.get();
+}
+
+bool BroadcastRadioHidlTest::checkAntenna()
+{
+    BandConfig halConfig;
+    Result halResult = Result::NOT_INITIALIZED;
+    Return<void> hidlReturn =
+            mTuner->getConfiguration([&](Result result, const BandConfig& config) {
+                halResult = result;
+                if (result == Result::OK) {
+                    halConfig = config;
+                }
+            });
+
+    return ((halResult == Result::OK) && (halConfig.antennaConnected == true));
+}
+
+
+/**
+ * Test IBroadcastRadio::getProperties() method
+ *
+ * Verifies that:
+ *  - the HAL implements the method
+ *  - the method returns 0 (no error)
+ *  - the implementation class is AM_FM
+ *  - the implementation supports at least one tuner
+ *  - the implementation supports at one band
+ */
+TEST_F(BroadcastRadioHidlTest, GetProperties) {
+    EXPECT_EQ(true, getProperties());
+}
+
+/**
+ * Test IBroadcastRadio::openTuner() method
+ *
+ * Verifies that:
+ *  - the HAL implements the method
+ *  - the method returns 0 (no error) and a valid ITuner interface
+ */
+TEST_F(BroadcastRadioHidlTest, OpenTuner) {
+    EXPECT_EQ(true, openTuner());
+}
+
+/**
+ * Test ITuner::setConfiguration() and getConfiguration methods
+ *
+ * Verifies that:
+ *  - the HAL implements both methods
+ *  - the methods return 0 (no error)
+ *  - the configuration callback is received within kConfigCallbacktimeoutNs ns
+ *  - the configuration read back from HAl has the same class Id
+ */
+TEST_F(BroadcastRadioHidlTest, SetAndGetConfiguration) {
+    ASSERT_EQ(true, openTuner());
+    // test setConfiguration
+    mCallbackCalled = false;
+    Return<Result> hidlResult = mTuner->setConfiguration(mHalProperties.bands[0]);
+    EXPECT_EQ(Status::EX_NONE, hidlResult.getStatus().exceptionCode());
+    EXPECT_EQ(Result::OK, hidlResult);
+    EXPECT_EQ(true, waitForCallback(kConfigCallbacktimeoutNs));
+    EXPECT_EQ(Result::OK, mResultCallbackData);
+
+    // test getConfiguration
+    BandConfig halConfig;
+    Result halResult;
+    Return<void> hidlReturn =
+            mTuner->getConfiguration([&](Result result, const BandConfig& config) {
+                halResult = result;
+                if (result == Result::OK) {
+                    halConfig = config;
+                }
+            });
+    EXPECT_EQ(Status::EX_NONE, hidlReturn.getStatus().exceptionCode());
+    EXPECT_EQ(Result::OK, halResult);
+    EXPECT_EQ(mHalProperties.bands[0].type, halConfig.type);
+}
+
+/**
+ * Test ITuner::scan
+ *
+ * Verifies that:
+ *  - the HAL implements the method
+ *  - the method returns 0 (no error)
+ *  - the tuned callback is received within kTuneCallbacktimeoutNs ns
+ */
+TEST_F(BroadcastRadioHidlTest, Scan) {
+    ASSERT_EQ(true, openTuner());
+    ASSERT_TRUE(checkAntenna());
+    // test scan UP
+    mCallbackCalled = false;
+    Return<Result> hidlResult = mTuner->scan(Direction::UP, true);
+    EXPECT_EQ(Status::EX_NONE, hidlResult.getStatus().exceptionCode());
+    EXPECT_EQ(Result::OK, hidlResult);
+    EXPECT_EQ(true, waitForCallback(kTuneCallbacktimeoutNs));
+
+    // test scan DOWN
+    mCallbackCalled = false;
+    hidlResult = mTuner->scan(Direction::DOWN, true);
+    EXPECT_EQ(Status::EX_NONE, hidlResult.getStatus().exceptionCode());
+    EXPECT_EQ(Result::OK, hidlResult);
+    EXPECT_EQ(true, waitForCallback(kTuneCallbacktimeoutNs));
+}
+
+/**
+ * Test ITuner::step
+ *
+ * Verifies that:
+ *  - the HAL implements the method
+ *  - the method returns 0 (no error)
+ *  - the tuned callback is received within kTuneCallbacktimeoutNs ns
+ */
+TEST_F(BroadcastRadioHidlTest, Step) {
+    ASSERT_EQ(true, openTuner());
+    ASSERT_TRUE(checkAntenna());
+    // test step UP
+    mCallbackCalled = false;
+    Return<Result> hidlResult = mTuner->step(Direction::UP, true);
+    EXPECT_EQ(Status::EX_NONE, hidlResult.getStatus().exceptionCode());
+    EXPECT_EQ(Result::OK, hidlResult);
+    EXPECT_EQ(true, waitForCallback(kTuneCallbacktimeoutNs));
+
+    // test step DOWN
+    mCallbackCalled = false;
+    hidlResult = mTuner->step(Direction::DOWN, true);
+    EXPECT_EQ(Status::EX_NONE, hidlResult.getStatus().exceptionCode());
+    EXPECT_EQ(Result::OK, hidlResult);
+    EXPECT_EQ(true, waitForCallback(kTuneCallbacktimeoutNs));
+}
+
+/**
+ * Test ITuner::tune,  getProgramInformation and cancel methods
+ *
+ * Verifies that:
+ *  - the HAL implements the methods
+ *  - the methods return 0 (no error)
+ *  - the tuned callback is received within kTuneCallbacktimeoutNs ns after tune()
+ */
+TEST_F(BroadcastRadioHidlTest, TuneAndGetProgramInformationAndCancel) {
+    ASSERT_EQ(true, openTuner());
+    ASSERT_TRUE(checkAntenna());
+
+    // test tune
+    ASSERT_GT(mHalProperties.bands[0].spacings.size(), 0u);
+    ASSERT_GT(mHalProperties.bands[0].upperLimit, mHalProperties.bands[0].lowerLimit);
+
+    // test scan UP
+    uint32_t lowerLimit = mHalProperties.bands[0].lowerLimit;
+    uint32_t upperLimit = mHalProperties.bands[0].upperLimit;
+    uint32_t spacing = mHalProperties.bands[0].spacings[0];
+
+    uint32_t channel =
+            lowerLimit + (((upperLimit - lowerLimit) / 2 + spacing - 1) / spacing) * spacing;
+    mCallbackCalled = false;
+    mResultCallbackData = Result::NOT_INITIALIZED;
+    Return<Result> hidlResult = mTuner->tune(channel, 0);
+    EXPECT_EQ(Status::EX_NONE, hidlResult.getStatus().exceptionCode());
+    EXPECT_EQ(Result::OK, hidlResult);
+    EXPECT_EQ(true, waitForCallback(kTuneCallbacktimeoutNs));
+
+    // test getProgramInformation
+    ProgramInfo halInfo;
+    Result halResult = Result::NOT_INITIALIZED;
+    Return<void> hidlReturn = mTuner->getProgramInformation(
+                    false, [&](Result result, const ProgramInfo& info) {
+                                halResult = result;
+                                if (result == Result::OK) {
+                                    halInfo = info;
+                                }
+        });
+    EXPECT_EQ(Status::EX_NONE, hidlReturn.getStatus().exceptionCode());
+    EXPECT_EQ(Result::OK, halResult);
+    if (mResultCallbackData == Result::OK) {
+        EXPECT_EQ(true, halInfo.tuned);
+        EXPECT_LE(halInfo.channel, upperLimit);
+        EXPECT_GE(halInfo.channel, lowerLimit);
+    } else {
+        EXPECT_EQ(false, halInfo.tuned);
+    }
+
+    // test cancel
+    mTuner->tune(lowerLimit, 0);
+    hidlResult = mTuner->cancel();
+    EXPECT_EQ(Status::EX_NONE, hidlResult.getStatus().exceptionCode());
+    EXPECT_EQ(Result::OK, hidlResult);
+}
+
+
+int main(int argc, char** argv) {
+  sp<ProcessState> proc(ProcessState::self());
+  ProcessState::self()->startThreadPool();
+  ::testing::AddGlobalTestEnvironment(new BroadcastRadioHidlEnvironment);
+  ::testing::InitGoogleTest(&argc, argv);
+  int status = RUN_ALL_TESTS();
+  ALOGI("Test result = %d", status);
+  return status;
+}
diff --git a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp b/broadcastradio/1.0/vts/functional/vts/Android.mk
similarity index 65%
copy from vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
copy to broadcastradio/1.0/vts/functional/vts/Android.mk
index b6ee3a3..f9e3276 100644
--- a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
+++ b/broadcastradio/1.0/vts/functional/vts/Android.mk
@@ -17,17 +17,3 @@
 LOCAL_PATH := $(call my-dir)
 
 include $(call all-subdir-makefiles)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := VibratorHidlTargetTest
-VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/hidl/target
-LOCAL_MODULE_CLASS := FAKE
-LOCAL_IS_HOST_MODULE := true
-LOCAL_COMPATIBILITY_SUITE := vts
-
-include $(BUILD_SYSTEM)/base_rules.mk
-
-$(LOCAL_BUILT_MODULE):
-  @echo "VTS host-driven test target: $(LOCAL_MODULE)"
-  $(hide) touch $@
diff --git a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp b/broadcastradio/1.0/vts/functional/vts/testcases/Android.mk
similarity index 65%
copy from vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
copy to broadcastradio/1.0/vts/functional/vts/testcases/Android.mk
index b6ee3a3..f9e3276 100644
--- a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
+++ b/broadcastradio/1.0/vts/functional/vts/testcases/Android.mk
@@ -17,17 +17,3 @@
 LOCAL_PATH := $(call my-dir)
 
 include $(call all-subdir-makefiles)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := VibratorHidlTargetTest
-VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/hidl/target
-LOCAL_MODULE_CLASS := FAKE
-LOCAL_IS_HOST_MODULE := true
-LOCAL_COMPATIBILITY_SUITE := vts
-
-include $(BUILD_SYSTEM)/base_rules.mk
-
-$(LOCAL_BUILT_MODULE):
-  @echo "VTS host-driven test target: $(LOCAL_MODULE)"
-  $(hide) touch $@
diff --git a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp b/broadcastradio/1.0/vts/functional/vts/testcases/hal/Android.mk
similarity index 65%
copy from vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
copy to broadcastradio/1.0/vts/functional/vts/testcases/hal/Android.mk
index b6ee3a3..f9e3276 100644
--- a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
+++ b/broadcastradio/1.0/vts/functional/vts/testcases/hal/Android.mk
@@ -17,17 +17,3 @@
 LOCAL_PATH := $(call my-dir)
 
 include $(call all-subdir-makefiles)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := VibratorHidlTargetTest
-VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/hidl/target
-LOCAL_MODULE_CLASS := FAKE
-LOCAL_IS_HOST_MODULE := true
-LOCAL_COMPATIBILITY_SUITE := vts
-
-include $(BUILD_SYSTEM)/base_rules.mk
-
-$(LOCAL_BUILT_MODULE):
-  @echo "VTS host-driven test target: $(LOCAL_MODULE)"
-  $(hide) touch $@
diff --git a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp b/broadcastradio/1.0/vts/functional/vts/testcases/hal/broadcastradio/Android.mk
similarity index 65%
copy from vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
copy to broadcastradio/1.0/vts/functional/vts/testcases/hal/broadcastradio/Android.mk
index b6ee3a3..f9e3276 100644
--- a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
+++ b/broadcastradio/1.0/vts/functional/vts/testcases/hal/broadcastradio/Android.mk
@@ -17,17 +17,3 @@
 LOCAL_PATH := $(call my-dir)
 
 include $(call all-subdir-makefiles)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := VibratorHidlTargetTest
-VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/hidl/target
-LOCAL_MODULE_CLASS := FAKE
-LOCAL_IS_HOST_MODULE := true
-LOCAL_COMPATIBILITY_SUITE := vts
-
-include $(BUILD_SYSTEM)/base_rules.mk
-
-$(LOCAL_BUILT_MODULE):
-  @echo "VTS host-driven test target: $(LOCAL_MODULE)"
-  $(hide) touch $@
diff --git a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp b/broadcastradio/1.0/vts/functional/vts/testcases/hal/broadcastradio/hidl/Android.mk
similarity index 65%
copy from vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
copy to broadcastradio/1.0/vts/functional/vts/testcases/hal/broadcastradio/hidl/Android.mk
index b6ee3a3..f9e3276 100644
--- a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
+++ b/broadcastradio/1.0/vts/functional/vts/testcases/hal/broadcastradio/hidl/Android.mk
@@ -17,17 +17,3 @@
 LOCAL_PATH := $(call my-dir)
 
 include $(call all-subdir-makefiles)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := VibratorHidlTargetTest
-VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/hidl/target
-LOCAL_MODULE_CLASS := FAKE
-LOCAL_IS_HOST_MODULE := true
-LOCAL_COMPATIBILITY_SUITE := vts
-
-include $(BUILD_SYSTEM)/base_rules.mk
-
-$(LOCAL_BUILT_MODULE):
-  @echo "VTS host-driven test target: $(LOCAL_MODULE)"
-  $(hide) touch $@
diff --git a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp b/broadcastradio/1.0/vts/functional/vts/testcases/hal/broadcastradio/hidl/target/Android.mk
similarity index 67%
copy from vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
copy to broadcastradio/1.0/vts/functional/vts/testcases/hal/broadcastradio/hidl/target/Android.mk
index b6ee3a3..153dcd6 100644
--- a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
+++ b/broadcastradio/1.0/vts/functional/vts/testcases/hal/broadcastradio/hidl/target/Android.mk
@@ -20,14 +20,6 @@
 
 include $(CLEAR_VARS)
 
-LOCAL_MODULE := VibratorHidlTargetTest
-VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/hidl/target
-LOCAL_MODULE_CLASS := FAKE
-LOCAL_IS_HOST_MODULE := true
-LOCAL_COMPATIBILITY_SUITE := vts
-
-include $(BUILD_SYSTEM)/base_rules.mk
-
-$(LOCAL_BUILT_MODULE):
-  @echo "VTS host-driven test target: $(LOCAL_MODULE)"
-  $(hide) touch $@
+LOCAL_MODULE := HalBroadcastRadioHidlTargetBasicTest
+VTS_CONFIG_SRC_DIR := testcases/hal/broadcastradio/hidl/target
+include test/vts/tools/build/Android.host_config.mk
diff --git a/broadcastradio/1.0/vts/functional/vts/testcases/hal/broadcastradio/hidl/target/AndroidTest.xml b/broadcastradio/1.0/vts/functional/vts/testcases/hal/broadcastradio/hidl/target/AndroidTest.xml
new file mode 100644
index 0000000..4c03855
--- /dev/null
+++ b/broadcastradio/1.0/vts/functional/vts/testcases/hal/broadcastradio/hidl/target/AndroidTest.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<configuration description="Config for VTS broadcast radio HIDL HAL's basic target-side test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="push-group" value="HidlHalTest.push" />
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer" />
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="HalBroadcastRadioHidlTargetBasicTest" />
+        <option name="binary-test-sources" value="
+            _32bit::DATA/nativetest/broadcastradio_hidl_hal_test/broadcastradio_hidl_hal_test,
+            _64bit::DATA/nativetest64/broadcastradio_hidl_hal_test/broadcastradio_hidl_hal_test,
+            "/>
+        <option name="binary-test-type" value="gtest" />
+        <option name="test-timeout" value="5m" />
+    </test>
+</configuration>
diff --git a/broadcastradio/Android.bp b/broadcastradio/Android.bp
index bbb3e4b..33f70eb 100644
--- a/broadcastradio/Android.bp
+++ b/broadcastradio/Android.bp
@@ -1,4 +1,5 @@
 // This is an autogenerated file, do not edit.
 subdirs = [
     "1.0",
+    "1.0/vts/functional",
 ]
diff --git a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp b/broadcastradio/Android.mk
similarity index 65%
copy from vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
copy to broadcastradio/Android.mk
index b6ee3a3..f9e3276 100644
--- a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
+++ b/broadcastradio/Android.mk
@@ -17,17 +17,3 @@
 LOCAL_PATH := $(call my-dir)
 
 include $(call all-subdir-makefiles)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := VibratorHidlTargetTest
-VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/hidl/target
-LOCAL_MODULE_CLASS := FAKE
-LOCAL_IS_HOST_MODULE := true
-LOCAL_COMPATIBILITY_SUITE := vts
-
-include $(BUILD_SYSTEM)/base_rules.mk
-
-$(LOCAL_BUILT_MODULE):
-  @echo "VTS host-driven test target: $(LOCAL_MODULE)"
-  $(hide) touch $@
diff --git a/contexthub/1.0/types.hal b/contexthub/1.0/types.hal
index 7d5a1ac..b9f014b 100644
--- a/contexthub/1.0/types.hal
+++ b/contexthub/1.0/types.hal
@@ -138,7 +138,7 @@
     RESTARTED = 1, // Hub restarted unexpectedly
 };
 
-enum TransactionResult {
+enum TransactionResult : int32_t {
     SUCCESS,      // successful completion of transaction
     FAILURE,      // failed transaction
 };
diff --git a/dumpstate/1.0/default/DumpstateDevice.cpp b/dumpstate/1.0/default/DumpstateDevice.cpp
index a279b89..4264235 100644
--- a/dumpstate/1.0/default/DumpstateDevice.cpp
+++ b/dumpstate/1.0/default/DumpstateDevice.cpp
@@ -1,3 +1,19 @@
+/*
+ * 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 "dumpstate"
 
 #include "DumpstateDevice.h"
@@ -28,11 +44,9 @@
     ALOGI("Dumpstate HIDL not provided by device\n");
     dprintf(fd, "Dumpstate HIDL not provided by device; providing bogus data.\n");
 
-    // Shows some examples on how to use the libdumpstateutils API.
-    dprintf(fd, "Time now is: ");
-    RunCommandToFd(fd, {"/system/bin/date"});
-    dprintf(fd, "Contents of a small file (/system/etc/hosts):\n");
-    DumpFileToFd(fd, "/system/etc/hosts");
+    // Shows some examples on how to use the libdumpstateutil API.
+    RunCommandToFd(fd, "DATE", {"/system/bin/date"});
+    DumpFileToFd(fd, "HOSTS", "/system/etc/hosts");
 
     return Void();
 }
diff --git a/dumpstate/1.0/default/DumpstateDevice.h b/dumpstate/1.0/default/DumpstateDevice.h
index 6f860c0..f216304 100644
--- a/dumpstate/1.0/default/DumpstateDevice.h
+++ b/dumpstate/1.0/default/DumpstateDevice.h
@@ -1,3 +1,18 @@
+/*
+ * 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_DUMPSTATE_V1_0_DUMPSTATEDEVICE_H
 #define ANDROID_HARDWARE_DUMPSTATE_V1_0_DUMPSTATEDEVICE_H
 
diff --git a/example/extension/light/2.0/default/Light.cpp b/example/extension/light/2.0/default/Light.cpp
index d738a6d..2e56319 100644
--- a/example/extension/light/2.0/default/Light.cpp
+++ b/example/extension/light/2.0/default/Light.cpp
@@ -1,3 +1,18 @@
+/*
+ * 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 "Light.h"
 
 namespace android {
diff --git a/example/extension/light/2.0/default/Light.h b/example/extension/light/2.0/default/Light.h
index e09ec92..e3b60df 100644
--- a/example/extension/light/2.0/default/Light.h
+++ b/example/extension/light/2.0/default/Light.h
@@ -1,5 +1,20 @@
-#ifndef HIDL_GENERATED_android_hardware_example_extension_light_V2_0_Light_H_
-#define HIDL_GENERATED_android_hardware_example_extension_light_V2_0_Light_H_
+/*
+ * 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_EXAMPLE_EXTENSION_LIGHT_V2_0_LIGHT_H
+#define ANDROID_HARDWARE_EXAMPLE_EXTENSION_LIGHT_V2_0_LIGHT_H
 
 #include <android/hardware/example/extension/light/2.0/IExtLight.h>
 #include <hidl/Status.h>
@@ -43,4 +58,4 @@
 }  // namespace hardware
 }  // namespace android
 
-#endif  // HIDL_GENERATED_android_hardware_example_extension_light_V2_0_Light_H_
+#endif  // ANDROID_HARDWARE_EXAMPLE_EXTENSION_LIGHT_V2_0_LIGHT_H
diff --git a/example/extension/light/2.0/default/service.cpp b/example/extension/light/2.0/default/service.cpp
index d21afa6..ae00506 100644
--- a/example/extension/light/2.0/default/service.cpp
+++ b/example/extension/light/2.0/default/service.cpp
@@ -1,3 +1,18 @@
+/*
+ * 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 "android.hardware.light@2.0-service"
 
 #include <utils/Log.h>
diff --git a/gatekeeper/1.0/IGatekeeper.hal b/gatekeeper/1.0/IGatekeeper.hal
index 999a311..c193477 100644
--- a/gatekeeper/1.0/IGatekeeper.hal
+++ b/gatekeeper/1.0/IGatekeeper.hal
@@ -1,3 +1,18 @@
+/*
+ * 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.
+ */
 package android.hardware.gatekeeper@1.0;
 
 interface IGatekeeper {
diff --git a/gatekeeper/1.0/default/Gatekeeper.cpp b/gatekeeper/1.0/default/Gatekeeper.cpp
index 8fcd8ca..35b8c02 100644
--- a/gatekeeper/1.0/default/Gatekeeper.cpp
+++ b/gatekeeper/1.0/default/Gatekeeper.cpp
@@ -1,3 +1,18 @@
+/*
+ * 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 "android.hardware.gatekeeper@1.0-service"
 
 #include <utils/Log.h>
diff --git a/gatekeeper/1.0/default/Gatekeeper.h b/gatekeeper/1.0/default/Gatekeeper.h
index a2188d4..4cc01f6 100644
--- a/gatekeeper/1.0/default/Gatekeeper.h
+++ b/gatekeeper/1.0/default/Gatekeeper.h
@@ -1,5 +1,20 @@
-#ifndef HIDL_GENERATED_android_hardware_gatekeeper_V1_0_Gatekeeper_H_
-#define HIDL_GENERATED_android_hardware_gatekeeper_V1_0_Gatekeeper_H_
+/*
+ * 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_GATEKEEPER_V1_0_GATEKEEPER_H
+#define ANDROID_HARDWARE_GATEKEEPER_V1_0_GATEKEEPER_H
 
 #include <android/hardware/gatekeeper/1.0/IGatekeeper.h>
 #include <hidl/Status.h>
@@ -54,4 +69,4 @@
 }  // namespace hardware
 }  // namespace android
 
-#endif  // HIDL_GENERATED_android_hardware_gatekeeper_V1_0_Gatekeeper_H_
+#endif  // ANDROID_HARDWARE_GATEKEEPER_V1_0_GATEKEEPER_H
diff --git a/gatekeeper/1.0/default/service.cpp b/gatekeeper/1.0/default/service.cpp
index c3fc25c..407cf71 100644
--- a/gatekeeper/1.0/default/service.cpp
+++ b/gatekeeper/1.0/default/service.cpp
@@ -1,3 +1,18 @@
+/*
+ * 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 "android.hardware.gatekeeper@1.0-service"
 
 #include <android/hardware/gatekeeper/1.0/IGatekeeper.h>
diff --git a/gatekeeper/1.0/types.hal b/gatekeeper/1.0/types.hal
index 9ab1152..8c184ee 100644
--- a/gatekeeper/1.0/types.hal
+++ b/gatekeeper/1.0/types.hal
@@ -1,3 +1,18 @@
+/*
+ * 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.
+ */
 package android.hardware.gatekeeper@1.0;
 
 /**
diff --git a/gnss/1.0/IAGnssRil.hal b/gnss/1.0/IAGnssRil.hal
index fb73498..7363d46 100644
--- a/gnss/1.0/IAGnssRil.hal
+++ b/gnss/1.0/IAGnssRil.hal
@@ -41,7 +41,7 @@
         WIMAX   = 6,
     };
 
-    enum AGnssRefLocationType {
+    enum AGnssRefLocationType : int32_t {
         GSM_CELLID   = 1,
         UMTS_CELLID  = 2,
         MAC          = 3,
diff --git a/health/1.0/default/Health.h b/health/1.0/default/Health.h
index c05751f..ed364c1 100644
--- a/health/1.0/default/Health.h
+++ b/health/1.0/default/Health.h
@@ -1,5 +1,20 @@
-#ifndef HIDL_GENERATED_android_hardware_health_V1_0_Health_H_
-#define HIDL_GENERATED_android_hardware_health_V1_0_Health_H_
+/*
+ * 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_HEALTH_V1_0_HEALTH_H
+#define ANDROID_HARDWARE_HEALTH_V1_0_HEALTH_H
 
 #include <android/hardware/health/1.0/IHealth.h>
 #include <hidl/Status.h>
@@ -39,4 +54,4 @@
 }  // namespace hardware
 }  // namespace android
 
-#endif  // HIDL_GENERATED_android_hardware_health_V1_0_Health_H_
+#endif  // ANDROID_HARDWARE_HEALTH_V1_0_HEALTH_H
diff --git a/light/2.0/default/Light.cpp b/light/2.0/default/Light.cpp
index fe94e91..eb1f559 100644
--- a/light/2.0/default/Light.cpp
+++ b/light/2.0/default/Light.cpp
@@ -1,3 +1,18 @@
+/*
+ * 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 "Light.h"
 
 namespace android {
diff --git a/light/2.0/default/Light.h b/light/2.0/default/Light.h
index b32a09a..8987036 100644
--- a/light/2.0/default/Light.h
+++ b/light/2.0/default/Light.h
@@ -1,5 +1,20 @@
-#ifndef HIDL_GENERATED_android_hardware_light_V2_0_Light_H_
-#define HIDL_GENERATED_android_hardware_light_V2_0_Light_H_
+/*
+ * 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_LIGHT_V2_0_LIGHT_H
+#define ANDROID_HARDWARE_LIGHT_V2_0_LIGHT_H
 
 #include <android/hardware/light/2.0/ILight.h>
 #include <hardware/hardware.h>
@@ -43,4 +58,4 @@
 }  // namespace hardware
 }  // namespace android
 
-#endif  // HIDL_GENERATED_android_hardware_light_V2_0_Light_H_
+#endif  // ANDROID_HARDWARE_LIGHT_V2_0_LIGHT_H
diff --git a/media/omx/1.0/IGraphicBufferSource.hal b/media/omx/1.0/IGraphicBufferSource.hal
index bee57ac..a5b5813 100644
--- a/media/omx/1.0/IGraphicBufferSource.hal
+++ b/media/omx/1.0/IGraphicBufferSource.hal
@@ -47,7 +47,7 @@
     setStartTimeUs(int64_t startTimeUs)
         generates (Status status);
 
-    setColorAspects(uint32_t aspects) // TODO: Maybe break down aspects.
+    setColorAspects(ColorAspects aspects)
         generates (Status status);
 
     setTimeOffsetUs(int64_t timeOffsetUs)
diff --git a/media/omx/1.0/types.hal b/media/omx/1.0/types.hal
index c0350de..5918b59 100644
--- a/media/omx/1.0/types.hal
+++ b/media/omx/1.0/types.hal
@@ -112,7 +112,7 @@
     /**
      * There are four main types of buffers.
      */
-    enum Type {
+    enum Type : int32_t {
         INVALID = 0,
         PRESET,
         SHARED_MEM,
@@ -164,7 +164,7 @@
  *
  * Enumeration of port modes.
  */
-enum PortMode {
+enum PortMode : int32_t {
     PRESET_START = 0,
     PRESET_BYTE_BUFFER,
     PRESET_ANW_BUFFER,
@@ -176,3 +176,71 @@
     DYNAMIC_END
 };
 
+/**
+ * Ref: frameworks/native/include/media/hardware/VideoAPI.h
+ *
+ * Framework defined color aspects. These are based mainly on ISO 23001-8 spec. As this standard
+ * continues to evolve, new values may be defined in the future. Use OTHER for these future values
+ * as well as for values not listed here, as those are not supported by the framework.
+ */
+struct ColorAspects {
+    enum Range : uint32_t {
+        UNSPECIFIED,  // Unspecified
+        FULL,         // Full range
+        LIMITED,      // Limited range (if defined), or not full range
+
+        OTHER = 0xff, // Not one of the above values
+    };
+
+    // Color primaries
+    enum Primaries : uint32_t {
+        UNSPECIFIED,  // Unspecified
+        BT709_5,      // Rec.ITU-R BT.709-5 or equivalent
+        BT470_6M,     // Rec.ITU-R BT.470-6 System M or equivalent
+        BT601_6_625,  // Rec.ITU-R BT.601-6 625 or equivalent
+        BT601_6_525,  // Rec.ITU-R BT.601-6 525 or equivalent
+        GENERIC_FILM, // Generic Film
+        BT2020,       // Rec.ITU-R BT.2020 or equivalent
+
+        OTHER = 0xff, // Not one of the above values
+    };
+
+    // Transfer characteristics
+    enum Transfer : uint32_t {
+        UNSPECIFIED,  // Unspecified
+        LINEAR,       // Linear transfer characteristics
+        SRGB,         // sRGB or equivalent
+        SMPTE170M,    // SMPTE 170M or equivalent (e.g. BT.601/709/2020)
+        GAMMA22,      // Assumed display gamma 2.2
+        GAMMA28,      // Assumed display gamma 2.8
+        ST2084,       // SMPTE ST 2084 for 10/12/14/16 bit systems
+        HLG,          // ARIB STD-B67 hybrid-log-gamma
+
+        // values unlikely to be required by Android follow here
+        SMPTE240M = 0x40, // SMPTE 240M
+        XVYCC,        // IEC 61966-2-4
+        BT1361,       // Rec.ITU-R BT.1361 extended gamut
+        ST428,        // SMPTE ST 428-1
+
+        OTHER = 0xff, // Not one of the above values
+    };
+
+    // YUV <-> RGB conversion
+    enum MatrixCoeffs : uint32_t {
+        UNSPECIFIED,    // Unspecified
+        BT709_5,        // Rec.ITU-R BT.709-5 or equivalent
+        BT470_6M,       // KR=0.30, KB=0.11 or equivalent
+        BT601_6,        // Rec.ITU-R BT.601-6 625 or equivalent
+        SMPTE240M,      // SMPTE 240M or equivalent
+        BT2020,         // Rec.ITU-R BT.2020 non-constant luminance
+        BT2020CONSTANT, // Rec.ITU-R BT.2020 constant luminance
+
+        OTHER = 0xff,   // Not one of the above values
+    };
+
+    Range range;
+    Primaries primaries;
+    Transfer transfer;
+    MatrixCoeffs matrixCoeffs;
+};
+
diff --git a/memtrack/1.0/default/Memtrack.h b/memtrack/1.0/default/Memtrack.h
index 86dae72..a3c55e4 100644
--- a/memtrack/1.0/default/Memtrack.h
+++ b/memtrack/1.0/default/Memtrack.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef HIDL_GENERATED_android_hardware_memtrack_V1_0_Memtrack_H_
-#define HIDL_GENERATED_android_hardware_memtrack_V1_0_Memtrack_H_
+#ifndef ANDROID_HARDWARE_MEMTRACK_V1_0_MEMTRACK_H
+#define ANDROID_HARDWARE_MEMTRACK_V1_0_MEMTRACK_H
 
 #include <android/hardware/memtrack/1.0/IMemtrack.h>
 #include <hidl/Status.h>
@@ -54,4 +54,4 @@
 }  // namespace hardware
 }  // namespace android
 
-#endif  // HIDL_GENERATED_android_hardware_memtrack_V1_0_Memtrack_H_
+#endif  // ANDROID_HARDWARE_MEMTRACK_V1_0_MEMTRACK_H
diff --git a/nfc/1.0/types.hal b/nfc/1.0/types.hal
index a266178..3384311 100644
--- a/nfc/1.0/types.hal
+++ b/nfc/1.0/types.hal
@@ -16,6 +16,7 @@
 
 package android.hardware.nfc@1.0;
 
+@export(name="", value_prefix="HAL_NFC_", value_suffix="_EVT")
 enum NfcEvent : uint32_t {
     OPEN_CPLT           = 0,
     CLOSE_CPLT          = 1,
@@ -26,6 +27,7 @@
     ERROR               = 6
 };
 
+@export(name="", value_prefix="HAL_NFC_STATUS_")
 enum NfcStatus : uint32_t {
     OK               = 0,
     FAILED           = 1,
diff --git a/nfc/1.0/vts/functional/vts/testcases/hal/nfc/hidl/host/passthrough/NfcHidlPassthroughBasicTest.config b/nfc/1.0/vts/functional/vts/testcases/hal/nfc/hidl/host/passthrough/NfcHidlPassthroughBasicTest.config
index be540a5..3e957e3 100644
--- a/nfc/1.0/vts/functional/vts/testcases/hal/nfc/hidl/host/passthrough/NfcHidlPassthroughBasicTest.config
+++ b/nfc/1.0/vts/functional/vts/testcases/hal/nfc/hidl/host/passthrough/NfcHidlPassthroughBasicTest.config
@@ -1,6 +1,6 @@
 {
     "passthrough_mode": True,
     "modules": ["system/lib64/hw/nfc_nci.bullhead"],
-    "git_project_path": "external/libnfc-nci",
-    "git_project_name": "platform/external/libnfc-nci"
+    "git_project_path": "system/nfc",
+    "git_project_name": "platform/system/nfc"
 }
diff --git a/nfc/1.0/vts/functional/vts/testcases/hal/nfc/hidl/target/AndroidTest.xml b/nfc/1.0/vts/functional/vts/testcases/hal/nfc/hidl/target/AndroidTest.xml
index f692011..ee02488 100644
--- a/nfc/1.0/vts/functional/vts/testcases/hal/nfc/hidl/target/AndroidTest.xml
+++ b/nfc/1.0/vts/functional/vts/testcases/hal/nfc/hidl/target/AndroidTest.xml
@@ -26,6 +26,6 @@
             "/>
         <option name="test-config-path" value="vts/testcases/hal/nfc/hidl/target/HalNfcHidlTargetBasicTest.config" />
         <option name="binary-test-type" value="gtest" />
-        <option name="test-timeout" value="1m" />
+        <option name="test-timeout" value="10m" />
     </test>
 </configuration>
diff --git a/nfc/1.0/vts/functional/vts/testcases/hal/nfc/hidl/target/HalNfcHidlTargetBasicTest.config b/nfc/1.0/vts/functional/vts/testcases/hal/nfc/hidl/target/HalNfcHidlTargetBasicTest.config
index 65009e4..60623b1 100644
--- a/nfc/1.0/vts/functional/vts/testcases/hal/nfc/hidl/target/HalNfcHidlTargetBasicTest.config
+++ b/nfc/1.0/vts/functional/vts/testcases/hal/nfc/hidl/target/HalNfcHidlTargetBasicTest.config
@@ -1,5 +1,5 @@
 {
     "modules": ["system/lib64/hw/nfc_nci.bullhead"],
-    "git_project_path": "external/libnfc-nci",
-    "git_project_name": "platform/external/libnfc-nci"
-}
\ No newline at end of file
+    "git_project_path": "system/nfc",
+    "git_project_name": "platform/system/nfc"
+}
diff --git a/nfc/1.0/vts/functional/vts/testcases/hal/nfc/hidl/target_profiling/AndroidTest.xml b/nfc/1.0/vts/functional/vts/testcases/hal/nfc/hidl/target_profiling/AndroidTest.xml
index e442c7c..da6cf22 100644
--- a/nfc/1.0/vts/functional/vts/testcases/hal/nfc/hidl/target_profiling/AndroidTest.xml
+++ b/nfc/1.0/vts/functional/vts/testcases/hal/nfc/hidl/target_profiling/AndroidTest.xml
@@ -18,14 +18,14 @@
         <option name="push-group" value="HidlHalTest.push" />
     </target_preparer>
     <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer" />
-        <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
-            <option name="test-module-name" value="NfcHidlTargetProfilingTest" />
-            <option name="binary-test-sources" value="
-                _32bit::DATA/nativetest/nfc_hidl_hal_test/nfc_hidl_hal_test,
-                _64bit::DATA/nativetest64/nfc_hidl_hal_test/nfc_hidl_hal_test,
-                "/>
-            <option name="test-config-path" value="vts/testcases/hal/nfc/hidl/target_profiling/NfcHidlTargetProfilingTest.config" />
-            <option name="binary-test-type" value="gtest" />
-            <option name="test-timeout" value="1m" />
-        </test>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="NfcHidlTargetProfilingTest" />
+        <option name="binary-test-sources" value="
+            _32bit::DATA/nativetest/nfc_hidl_hal_test/nfc_hidl_hal_test,
+            _64bit::DATA/nativetest64/nfc_hidl_hal_test/nfc_hidl_hal_test,
+            "/>
+        <option name="binary-test-type" value="gtest" />
+        <option name="test-timeout" value="10m" />
+    <option name="enable-profiling" value="true" />
+    </test>
 </configuration>
diff --git a/nfc/1.0/vts/functional/vts/testcases/hal/nfc/hidl/target_profiling/NfcHidlTargetProfilingTest.config b/nfc/1.0/vts/functional/vts/testcases/hal/nfc/hidl/target_profiling/NfcHidlTargetProfilingTest.config
deleted file mode 100644
index 912d8d5..0000000
--- a/nfc/1.0/vts/functional/vts/testcases/hal/nfc/hidl/target_profiling/NfcHidlTargetProfilingTest.config
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-    "enable_profiling": true
-}
\ No newline at end of file
diff --git a/power/1.0/default/Power.h b/power/1.0/default/Power.h
index a0495be..a43aefb 100644
--- a/power/1.0/default/Power.h
+++ b/power/1.0/default/Power.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef HIDL_GENERATED_android_hardware_power_V1_0_Power_H_
-#define HIDL_GENERATED_android_hardware_power_V1_0_Power_H_
+#ifndef ANDROID_HARDWARE_POWER_V1_0_POWER_H
+#define ANDROID_HARDWARE_POWER_V1_0_POWER_H
 
 #include <android/hardware/power/1.0/IPower.h>
 #include <hidl/Status.h>
@@ -58,4 +58,4 @@
 }  // namespace hardware
 }  // namespace android
 
-#endif  // HIDL_GENERATED_android_hardware_power_V1_0_Power_H_
+#endif  // ANDROID_HARDWARE_POWER_V1_0_POWER_H
diff --git a/power/1.0/vts/functional/Android.bp b/power/1.0/vts/functional/Android.bp
new file mode 100644
index 0000000..81dc316
--- /dev/null
+++ b/power/1.0/vts/functional/Android.bp
@@ -0,0 +1,41 @@
+//
+// 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.
+//
+
+cc_test {
+    name: "power_hidl_hal_test",
+    gtest: true,
+    srcs: ["power_hidl_hal_test.cpp"],
+    shared_libs: [
+        "libbase",
+        "liblog",
+        "libcutils",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libnativehelper",
+        "libutils",
+        "android.hardware.power@1.0",
+    ],
+    static_libs: ["libgtest"],
+    cflags: [
+        "--coverage",
+        "-O0",
+        "-g",
+    ],
+    ldflags: [
+        "--coverage"
+    ]
+}
diff --git a/power/1.0/vts/functional/power_hidl_hal_test.cpp b/power/1.0/vts/functional/power_hidl_hal_test.cpp
new file mode 100644
index 0000000..ac56f1a
--- /dev/null
+++ b/power/1.0/vts/functional/power_hidl_hal_test.cpp
@@ -0,0 +1,108 @@
+/*
+ * 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 "power_hidl_hal_test"
+#include <android-base/logging.h>
+
+#include <android/hardware/power/1.0/IPower.h>
+
+#include <gtest/gtest.h>
+
+using ::android::hardware::power::V1_0::IPower;
+using ::android::hardware::power::V1_0::Feature;
+using ::android::hardware::power::V1_0::PowerHint;
+using ::android::hardware::power::V1_0::PowerStatePlatformSleepState;
+using ::android::hardware::power::V1_0::Status;
+using ::android::hardware::hidl_vec;
+using ::android::hardware::Return;
+using ::android::sp;
+
+class PowerHidlTest : public ::testing::Test {
+ public:
+  virtual void SetUp() override {
+    power = IPower::getService("power");
+    ASSERT_NE(power, nullptr);
+  }
+
+  virtual void TearDown() override {}
+
+  sp<IPower> power;
+};
+
+// Sanity check Power::setInteractive.
+TEST_F(PowerHidlTest, SetInteractive) {
+  Return<void> ret;
+
+  ret = power->setInteractive(true);
+  ASSERT_TRUE(ret.getStatus().isOk());
+
+  ret = power->setInteractive(false);
+  ASSERT_TRUE(ret.getStatus().isOk());
+}
+
+// Sanity check Power::powerHint on good and bad inputs.
+TEST_F(PowerHidlTest, PowerHint) {
+  PowerHint badHint = static_cast<PowerHint>(0xA);
+  auto hints = {PowerHint::VSYNC,         PowerHint::INTERACTION,
+                PowerHint::VIDEO_ENCODE,  PowerHint::VIDEO_DECODE,
+                PowerHint::LOW_POWER,     PowerHint::SUSTAINED_PERFORMANCE,
+                PowerHint::VR_MODE,       PowerHint::LAUNCH,
+                PowerHint::DISABLE_TOUCH, badHint};
+  Return<void> ret;
+  for (auto hint : hints) {
+    ret = power->powerHint(hint, 1);
+    ASSERT_TRUE(ret.getStatus().isOk());
+
+    ret = power->powerHint(hint, 0);
+    ASSERT_TRUE(ret.getStatus().isOk());
+  }
+}
+
+// Sanity check Power::setFeature() on good and bad inputs.
+TEST_F(PowerHidlTest, SetFeature) {
+  Return<void> ret;
+  ret = power->setFeature(Feature::POWER_FEATURE_DOUBLE_TAP_TO_WAKE, true);
+  ASSERT_TRUE(ret.getStatus().isOk());
+  ret = power->setFeature(Feature::POWER_FEATURE_DOUBLE_TAP_TO_WAKE, false);
+  ASSERT_TRUE(ret.getStatus().isOk());
+
+  Feature badFeature = static_cast<Feature>(0x2);
+  ret = power->setFeature(badFeature, true);
+  ASSERT_TRUE(ret.getStatus().isOk());
+  ret = power->setFeature(badFeature, false);
+  ASSERT_TRUE(ret.getStatus().isOk());
+}
+
+// Sanity check Power::getPlatformLowPowerStats().
+TEST_F(PowerHidlTest, GetPlatformLowPowerStats) {
+  hidl_vec<PowerStatePlatformSleepState> vec;
+  Status s;
+  auto cb = [&vec, &s](hidl_vec<PowerStatePlatformSleepState> states,
+                       Status status) {
+    vec = states;
+    s = status;
+  };
+  Return<void> ret = power->getPlatformLowPowerStats(cb);
+  ASSERT_TRUE(ret.getStatus().isOk());
+  ASSERT_TRUE(s == Status::SUCCESS || s == Status::FILESYSTEM_ERROR);
+}
+
+int main(int argc, char **argv) {
+  ::testing::InitGoogleTest(&argc, argv);
+  int status = RUN_ALL_TESTS();
+  ALOGI("Test result = %d", status);
+  return status;
+}
diff --git a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp b/power/1.0/vts/functional/vts/testcases/hal/power/Android.mk
similarity index 65%
copy from vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
copy to power/1.0/vts/functional/vts/testcases/hal/power/Android.mk
index b6ee3a3..f9e3276 100644
--- a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
+++ b/power/1.0/vts/functional/vts/testcases/hal/power/Android.mk
@@ -17,17 +17,3 @@
 LOCAL_PATH := $(call my-dir)
 
 include $(call all-subdir-makefiles)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := VibratorHidlTargetTest
-VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/hidl/target
-LOCAL_MODULE_CLASS := FAKE
-LOCAL_IS_HOST_MODULE := true
-LOCAL_COMPATIBILITY_SUITE := vts
-
-include $(BUILD_SYSTEM)/base_rules.mk
-
-$(LOCAL_BUILT_MODULE):
-  @echo "VTS host-driven test target: $(LOCAL_MODULE)"
-  $(hide) touch $@
diff --git a/power/1.0/vts/functional/vts/testcases/hal/power/__init__.py b/power/1.0/vts/functional/vts/testcases/hal/power/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/power/1.0/vts/functional/vts/testcases/hal/power/__init__.py
diff --git a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp b/power/1.0/vts/functional/vts/testcases/hal/power/hidl/Android.mk
similarity index 65%
copy from vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
copy to power/1.0/vts/functional/vts/testcases/hal/power/hidl/Android.mk
index b6ee3a3..f9e3276 100644
--- a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
+++ b/power/1.0/vts/functional/vts/testcases/hal/power/hidl/Android.mk
@@ -17,17 +17,3 @@
 LOCAL_PATH := $(call my-dir)
 
 include $(call all-subdir-makefiles)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := VibratorHidlTargetTest
-VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/hidl/target
-LOCAL_MODULE_CLASS := FAKE
-LOCAL_IS_HOST_MODULE := true
-LOCAL_COMPATIBILITY_SUITE := vts
-
-include $(BUILD_SYSTEM)/base_rules.mk
-
-$(LOCAL_BUILT_MODULE):
-  @echo "VTS host-driven test target: $(LOCAL_MODULE)"
-  $(hide) touch $@
diff --git a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp b/power/1.0/vts/functional/vts/testcases/hal/power/hidl/target/Android.mk
similarity index 67%
rename from vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
rename to power/1.0/vts/functional/vts/testcases/hal/power/hidl/target/Android.mk
index b6ee3a3..c66b6fb 100644
--- a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
+++ b/power/1.0/vts/functional/vts/testcases/hal/power/hidl/target/Android.mk
@@ -20,14 +20,7 @@
 
 include $(CLEAR_VARS)
 
-LOCAL_MODULE := VibratorHidlTargetTest
-VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/hidl/target
-LOCAL_MODULE_CLASS := FAKE
-LOCAL_IS_HOST_MODULE := true
-LOCAL_COMPATIBILITY_SUITE := vts
+LOCAL_MODULE := HalPowerHidlTargetTest
+VTS_CONFIG_SRC_DIR := testcases/hal/power/hidl/target
+include test/vts/tools/build/Android.host_config.mk
 
-include $(BUILD_SYSTEM)/base_rules.mk
-
-$(LOCAL_BUILT_MODULE):
-  @echo "VTS host-driven test target: $(LOCAL_MODULE)"
-  $(hide) touch $@
diff --git a/power/1.0/vts/functional/vts/testcases/hal/power/hidl/target/AndroidTest.xml b/power/1.0/vts/functional/vts/testcases/hal/power/hidl/target/AndroidTest.xml
new file mode 100644
index 0000000..bb80de2
--- /dev/null
+++ b/power/1.0/vts/functional/vts/testcases/hal/power/hidl/target/AndroidTest.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<configuration description="Config for VTS Power HIDL HAL's target-side test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="push-group" value="HidlHalTest.push" />
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer" />
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="HalPowerHidlTargetTest"/>
+        <option name="binary-test-sources" value="
+            _32bit::DATA/nativetest/power_hidl_hal_test/power_hidl_hal_test,
+            _64bit::DATA/nativetest64/power_hidl_hal_test/power_hidl_hal_test,
+            "/>
+        <option name="binary-test-type" value="gtest" />
+        <option name="test-timeout" value="1m" />
+    </test>
+</configuration>
diff --git a/power/Android.bp b/power/Android.bp
index ba90f2c..ed19a37 100644
--- a/power/Android.bp
+++ b/power/Android.bp
@@ -2,4 +2,5 @@
 subdirs = [
     "1.0",
     "1.0/default",
+    "1.0/vts/functional",
 ]
diff --git a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp b/soundtrigger/2.0/Android.mk
similarity index 65%
copy from vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
copy to soundtrigger/2.0/Android.mk
index b6ee3a3..f9e3276 100644
--- a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
+++ b/soundtrigger/2.0/Android.mk
@@ -17,17 +17,3 @@
 LOCAL_PATH := $(call my-dir)
 
 include $(call all-subdir-makefiles)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := VibratorHidlTargetTest
-VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/hidl/target
-LOCAL_MODULE_CLASS := FAKE
-LOCAL_IS_HOST_MODULE := true
-LOCAL_COMPATIBILITY_SUITE := vts
-
-include $(BUILD_SYSTEM)/base_rules.mk
-
-$(LOCAL_BUILT_MODULE):
-  @echo "VTS host-driven test target: $(LOCAL_MODULE)"
-  $(hide) touch $@
diff --git a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp b/soundtrigger/2.0/vts/Android.mk
similarity index 65%
copy from vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
copy to soundtrigger/2.0/vts/Android.mk
index b6ee3a3..f9e3276 100644
--- a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
+++ b/soundtrigger/2.0/vts/Android.mk
@@ -17,17 +17,3 @@
 LOCAL_PATH := $(call my-dir)
 
 include $(call all-subdir-makefiles)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := VibratorHidlTargetTest
-VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/hidl/target
-LOCAL_MODULE_CLASS := FAKE
-LOCAL_IS_HOST_MODULE := true
-LOCAL_COMPATIBILITY_SUITE := vts
-
-include $(BUILD_SYSTEM)/base_rules.mk
-
-$(LOCAL_BUILT_MODULE):
-  @echo "VTS host-driven test target: $(LOCAL_MODULE)"
-  $(hide) touch $@
diff --git a/soundtrigger/2.0/vts/functional/Android.bp b/soundtrigger/2.0/vts/functional/Android.bp
new file mode 100644
index 0000000..8abdf06
--- /dev/null
+++ b/soundtrigger/2.0/vts/functional/Android.bp
@@ -0,0 +1,37 @@
+//
+// 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.
+//
+
+cc_test {
+    name: "soundtrigger_hidl_hal_test",
+    gtest: true,
+    srcs: ["soundtrigger_hidl_hal_test.cpp"],
+    shared_libs: [
+        "libbase",
+        "liblog",
+        "libcutils",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libnativehelper",
+        "libutils",
+        "android.hardware.soundtrigger@2.0",
+    ],
+    static_libs: ["libgtest"],
+    cflags: [
+        "-O0",
+        "-g",
+    ],
+}
diff --git a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp b/soundtrigger/2.0/vts/functional/Android.mk
similarity index 65%
copy from vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
copy to soundtrigger/2.0/vts/functional/Android.mk
index b6ee3a3..f9e3276 100644
--- a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
+++ b/soundtrigger/2.0/vts/functional/Android.mk
@@ -17,17 +17,3 @@
 LOCAL_PATH := $(call my-dir)
 
 include $(call all-subdir-makefiles)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := VibratorHidlTargetTest
-VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/hidl/target
-LOCAL_MODULE_CLASS := FAKE
-LOCAL_IS_HOST_MODULE := true
-LOCAL_COMPATIBILITY_SUITE := vts
-
-include $(BUILD_SYSTEM)/base_rules.mk
-
-$(LOCAL_BUILT_MODULE):
-  @echo "VTS host-driven test target: $(LOCAL_MODULE)"
-  $(hide) touch $@
diff --git a/soundtrigger/2.0/vts/functional/soundtrigger_hidl_hal_test.cpp b/soundtrigger/2.0/vts/functional/soundtrigger_hidl_hal_test.cpp
new file mode 100644
index 0000000..cbd8128
--- /dev/null
+++ b/soundtrigger/2.0/vts/functional/soundtrigger_hidl_hal_test.cpp
@@ -0,0 +1,233 @@
+/*
+ * 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 "SoundTriggerHidlHalTest"
+#include <android-base/logging.h>
+#include <cutils/native_handle.h>
+
+#include <android/hardware/audio/common/2.0/types.h>
+#include <android/hardware/soundtrigger/2.0/ISoundTriggerHw.h>
+#include <android/hardware/soundtrigger/2.0/types.h>
+
+#include <gtest/gtest.h>
+
+using ::android::hardware::audio::common::V2_0::AudioDevice;
+using ::android::hardware::soundtrigger::V2_0::SoundModelHandle;
+using ::android::hardware::soundtrigger::V2_0::SoundModelType;
+using ::android::hardware::soundtrigger::V2_0::RecognitionMode;
+using ::android::hardware::soundtrigger::V2_0::PhraseRecognitionExtra;
+using ::android::hardware::soundtrigger::V2_0::ISoundTriggerHw;
+using ::android::hardware::soundtrigger::V2_0::ISoundTriggerHwCallback;
+using ::android::hardware::Return;
+using ::android::hardware::Status;
+using ::android::hardware::Void;
+using ::android::sp;
+
+// The main test class for Sound Trigger HIDL HAL.
+class SoundTriggerHidlTest : public ::testing::Test {
+ public:
+  virtual void SetUp() override {
+    mSoundTriggerHal = ISoundTriggerHw::getService("sound_trigger.primary", false);
+    ASSERT_NE(nullptr, mSoundTriggerHal.get());
+    ASSERT_TRUE(mSoundTriggerHal->isRemote());
+    mCallback = new MyCallback();
+    ASSERT_NE(nullptr, mCallback.get());
+  }
+
+  class MyCallback : public ISoundTriggerHwCallback {
+      virtual Return<void> recognitionCallback(
+                  const ISoundTriggerHwCallback::RecognitionEvent& event __unused,
+                  int32_t cookie __unused) {
+          ALOGI("%s", __FUNCTION__);
+          return Void();
+      }
+
+      virtual Return<void> phraseRecognitionCallback(
+              const ISoundTriggerHwCallback::PhraseRecognitionEvent& event __unused,
+              int32_t cookie __unused) {
+          ALOGI("%s", __FUNCTION__);
+          return Void();
+      }
+
+      virtual Return<void> soundModelCallback(
+              const ISoundTriggerHwCallback::ModelEvent& event __unused,
+              int32_t cookie __unused) {
+          ALOGI("%s", __FUNCTION__);
+          return Void();
+      }
+  };
+
+  virtual void TearDown() override {}
+
+  sp<ISoundTriggerHw> mSoundTriggerHal;
+  sp<MyCallback> mCallback;
+};
+
+// A class for test environment setup (kept since this file is a template).
+class SoundTriggerHidlEnvironment : public ::testing::Environment {
+ public:
+  virtual void SetUp() {}
+  virtual void TearDown() {}
+
+ private:
+};
+
+/**
+ * Test ISoundTriggerHw::getProperties() method
+ *
+ * Verifies that:
+ *  - the implementation implements the method
+ *  - the method returns 0 (no error)
+ *  - the implementation supports at least one sound model and one key phrase
+ *  - the implementation supports at least VOICE_TRIGGER recognition mode
+ */
+TEST_F(SoundTriggerHidlTest, GetProperties) {
+  ISoundTriggerHw::Properties halProperties;
+  Return<void> hidlReturn;
+  int ret = -ENODEV;
+
+  hidlReturn = mSoundTriggerHal->getProperties([&](int rc, auto res) {
+      ret = rc;
+      halProperties = res;
+  });
+
+  EXPECT_EQ(Status::EX_NONE, hidlReturn.getStatus().exceptionCode());
+  EXPECT_EQ(0, ret);
+  EXPECT_GT(halProperties.maxSoundModels, 0u);
+  EXPECT_GT(halProperties.maxKeyPhrases, 0u);
+  EXPECT_NE(0u, (halProperties.recognitionModes & (uint32_t)RecognitionMode::VOICE_TRIGGER));
+}
+
+/**
+ * Test ISoundTriggerHw::loadPhraseSoundModel() method
+ *
+ * Verifies that:
+ *  - the implementation implements the method
+ *  - the implementation returns an error when passed a malformed sound model
+ *
+ * There is no way to verify that implementation actually can load a sound model because each
+ * sound model is vendor specific.
+ */
+TEST_F(SoundTriggerHidlTest, LoadInvalidModelFail) {
+  Return<void> hidlReturn;
+  int ret = -ENODEV;
+  ISoundTriggerHw::PhraseSoundModel model;
+  SoundModelHandle handle;
+
+  model.common.type = SoundModelType::UNKNOWN;
+
+  hidlReturn = mSoundTriggerHal->loadPhraseSoundModel(
+          model,
+          mCallback, 0, [&](int32_t retval, auto res) {
+      ret = retval;
+      handle = res;
+  });
+
+  EXPECT_EQ(Status::EX_NONE, hidlReturn.getStatus().exceptionCode());
+  EXPECT_NE(0, ret);
+}
+
+/**
+ * Test ISoundTriggerHw::unloadSoundModel() method
+ *
+ * Verifies that:
+ *  - the implementation implements the method
+ *  - the implementation returns an error when called without a valid loaded sound model
+ *
+ */
+TEST_F(SoundTriggerHidlTest, UnloadModelNoModelFail) {
+  Return<int32_t> hidlReturn(0);
+  SoundModelHandle halHandle = 0;
+
+  hidlReturn = mSoundTriggerHal->unloadSoundModel(halHandle);
+
+  EXPECT_EQ(Status::EX_NONE, hidlReturn.getStatus().exceptionCode());
+  EXPECT_NE(0, hidlReturn);
+}
+
+/**
+ * Test ISoundTriggerHw::startRecognition() method
+ *
+ * Verifies that:
+ *  - the implementation implements the method
+ *  - the implementation returns an error when called without a valid loaded sound model
+ *
+ * There is no way to verify that implementation actually starts recognition because no model can
+ * be loaded.
+ */
+TEST_F(SoundTriggerHidlTest, StartRecognitionNoModelFail) {
+    Return<int32_t> hidlReturn(0);
+    SoundModelHandle handle = 0;
+    PhraseRecognitionExtra phrase;
+    ISoundTriggerHw::RecognitionConfig config;
+
+    config.captureHandle = 0;
+    config.captureDevice = AudioDevice::IN_BUILTIN_MIC;
+    phrase.id = 0;
+    phrase.recognitionModes = (uint32_t)RecognitionMode::VOICE_TRIGGER;
+    phrase.confidenceLevel = 0;
+
+    config.phrases.setToExternal(&phrase, 1);
+
+    hidlReturn = mSoundTriggerHal->startRecognition(handle, config, mCallback, 0);
+
+    EXPECT_EQ(Status::EX_NONE, hidlReturn.getStatus().exceptionCode());
+    EXPECT_NE(0, hidlReturn);
+}
+
+/**
+ * Test ISoundTriggerHw::stopRecognition() method
+ *
+ * Verifies that:
+ *  - the implementation implements the method
+ *  - the implementation returns an error when called without an active recognition running
+ *
+ */
+TEST_F(SoundTriggerHidlTest, StopRecognitionNoAStartFail) {
+    Return<int32_t> hidlReturn(0);
+    SoundModelHandle handle = 0;
+
+    hidlReturn = mSoundTriggerHal->stopRecognition(handle);
+
+    EXPECT_EQ(Status::EX_NONE, hidlReturn.getStatus().exceptionCode());
+    EXPECT_NE(0, hidlReturn);
+}
+
+/**
+ * Test ISoundTriggerHw::stopAllRecognitions() method
+ *
+ * Verifies that:
+ *  - the implementation implements this optional method or indicates it is not support by
+ *  returning -ENOSYS
+ */
+TEST_F(SoundTriggerHidlTest, stopAllRecognitions) {
+    Return<int32_t> hidlReturn(0);
+    SoundModelHandle handle = 0;
+
+    hidlReturn = mSoundTriggerHal->stopAllRecognitions();
+
+    EXPECT_EQ(Status::EX_NONE, hidlReturn.getStatus().exceptionCode());
+    EXPECT_TRUE(hidlReturn == 0 || hidlReturn == -ENOSYS);
+}
+
+
+int main(int argc, char** argv) {
+  ::testing::AddGlobalTestEnvironment(new SoundTriggerHidlEnvironment);
+  ::testing::InitGoogleTest(&argc, argv);
+  int status = RUN_ALL_TESTS();
+  ALOGI("Test result = %d", status);
+  return status;
+}
diff --git a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp b/soundtrigger/2.0/vts/functional/vts/Android.mk
similarity index 65%
copy from vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
copy to soundtrigger/2.0/vts/functional/vts/Android.mk
index b6ee3a3..f9e3276 100644
--- a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
+++ b/soundtrigger/2.0/vts/functional/vts/Android.mk
@@ -17,17 +17,3 @@
 LOCAL_PATH := $(call my-dir)
 
 include $(call all-subdir-makefiles)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := VibratorHidlTargetTest
-VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/hidl/target
-LOCAL_MODULE_CLASS := FAKE
-LOCAL_IS_HOST_MODULE := true
-LOCAL_COMPATIBILITY_SUITE := vts
-
-include $(BUILD_SYSTEM)/base_rules.mk
-
-$(LOCAL_BUILT_MODULE):
-  @echo "VTS host-driven test target: $(LOCAL_MODULE)"
-  $(hide) touch $@
diff --git a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp b/soundtrigger/2.0/vts/functional/vts/testcases/Android.mk
similarity index 65%
copy from vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
copy to soundtrigger/2.0/vts/functional/vts/testcases/Android.mk
index b6ee3a3..f9e3276 100644
--- a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
+++ b/soundtrigger/2.0/vts/functional/vts/testcases/Android.mk
@@ -17,17 +17,3 @@
 LOCAL_PATH := $(call my-dir)
 
 include $(call all-subdir-makefiles)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := VibratorHidlTargetTest
-VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/hidl/target
-LOCAL_MODULE_CLASS := FAKE
-LOCAL_IS_HOST_MODULE := true
-LOCAL_COMPATIBILITY_SUITE := vts
-
-include $(BUILD_SYSTEM)/base_rules.mk
-
-$(LOCAL_BUILT_MODULE):
-  @echo "VTS host-driven test target: $(LOCAL_MODULE)"
-  $(hide) touch $@
diff --git a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp b/soundtrigger/2.0/vts/functional/vts/testcases/hal/Android.mk
similarity index 65%
copy from vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
copy to soundtrigger/2.0/vts/functional/vts/testcases/hal/Android.mk
index b6ee3a3..f9e3276 100644
--- a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
+++ b/soundtrigger/2.0/vts/functional/vts/testcases/hal/Android.mk
@@ -17,17 +17,3 @@
 LOCAL_PATH := $(call my-dir)
 
 include $(call all-subdir-makefiles)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := VibratorHidlTargetTest
-VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/hidl/target
-LOCAL_MODULE_CLASS := FAKE
-LOCAL_IS_HOST_MODULE := true
-LOCAL_COMPATIBILITY_SUITE := vts
-
-include $(BUILD_SYSTEM)/base_rules.mk
-
-$(LOCAL_BUILT_MODULE):
-  @echo "VTS host-driven test target: $(LOCAL_MODULE)"
-  $(hide) touch $@
diff --git a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp b/soundtrigger/2.0/vts/functional/vts/testcases/hal/soundtrigger/Android.mk
similarity index 65%
copy from vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
copy to soundtrigger/2.0/vts/functional/vts/testcases/hal/soundtrigger/Android.mk
index b6ee3a3..f9e3276 100644
--- a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
+++ b/soundtrigger/2.0/vts/functional/vts/testcases/hal/soundtrigger/Android.mk
@@ -17,17 +17,3 @@
 LOCAL_PATH := $(call my-dir)
 
 include $(call all-subdir-makefiles)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := VibratorHidlTargetTest
-VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/hidl/target
-LOCAL_MODULE_CLASS := FAKE
-LOCAL_IS_HOST_MODULE := true
-LOCAL_COMPATIBILITY_SUITE := vts
-
-include $(BUILD_SYSTEM)/base_rules.mk
-
-$(LOCAL_BUILT_MODULE):
-  @echo "VTS host-driven test target: $(LOCAL_MODULE)"
-  $(hide) touch $@
diff --git a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp b/soundtrigger/2.0/vts/functional/vts/testcases/hal/soundtrigger/hidl/Android.mk
similarity index 65%
copy from vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
copy to soundtrigger/2.0/vts/functional/vts/testcases/hal/soundtrigger/hidl/Android.mk
index b6ee3a3..f9e3276 100644
--- a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
+++ b/soundtrigger/2.0/vts/functional/vts/testcases/hal/soundtrigger/hidl/Android.mk
@@ -17,17 +17,3 @@
 LOCAL_PATH := $(call my-dir)
 
 include $(call all-subdir-makefiles)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := VibratorHidlTargetTest
-VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/hidl/target
-LOCAL_MODULE_CLASS := FAKE
-LOCAL_IS_HOST_MODULE := true
-LOCAL_COMPATIBILITY_SUITE := vts
-
-include $(BUILD_SYSTEM)/base_rules.mk
-
-$(LOCAL_BUILT_MODULE):
-  @echo "VTS host-driven test target: $(LOCAL_MODULE)"
-  $(hide) touch $@
diff --git a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp b/soundtrigger/2.0/vts/functional/vts/testcases/hal/soundtrigger/hidl/target/Android.mk
similarity index 67%
copy from vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
copy to soundtrigger/2.0/vts/functional/vts/testcases/hal/soundtrigger/hidl/target/Android.mk
index b6ee3a3..a99f4ce 100644
--- a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
+++ b/soundtrigger/2.0/vts/functional/vts/testcases/hal/soundtrigger/hidl/target/Android.mk
@@ -20,14 +20,6 @@
 
 include $(CLEAR_VARS)
 
-LOCAL_MODULE := VibratorHidlTargetTest
-VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/hidl/target
-LOCAL_MODULE_CLASS := FAKE
-LOCAL_IS_HOST_MODULE := true
-LOCAL_COMPATIBILITY_SUITE := vts
-
-include $(BUILD_SYSTEM)/base_rules.mk
-
-$(LOCAL_BUILT_MODULE):
-  @echo "VTS host-driven test target: $(LOCAL_MODULE)"
-  $(hide) touch $@
+LOCAL_MODULE := HalSoundTriggerHidlTargetBasicTest
+VTS_CONFIG_SRC_DIR := testcases/hal/soundtrigger/hidl/target
+include test/vts/tools/build/Android.host_config.mk
diff --git a/soundtrigger/2.0/vts/functional/vts/testcases/hal/soundtrigger/hidl/target/AndroidTest.xml b/soundtrigger/2.0/vts/functional/vts/testcases/hal/soundtrigger/hidl/target/AndroidTest.xml
new file mode 100644
index 0000000..b75d97e
--- /dev/null
+++ b/soundtrigger/2.0/vts/functional/vts/testcases/hal/soundtrigger/hidl/target/AndroidTest.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<configuration description="Config for VTS sound trigger HIDL HAL's basic target-side test cases">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="push-group" value="HidlHalTest.push" />
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer" />
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="HalSoundTriggerHidlTargetBasicTest" />
+        <option name="binary-test-sources" value="
+            _32bit::DATA/nativetest/soundtrigger_hidl_hal_test/soundtrigger_hidl_hal_test,
+            _64bit::DATA/nativetest64/soundtrigger_hidl_hal_test/soundtrigger_hidl_hal_test,
+            "/>
+        <option name="binary-test-type" value="gtest" />
+        <option name="test-timeout" value="1m" />
+    </test>
+</configuration>
diff --git a/soundtrigger/Android.bp b/soundtrigger/Android.bp
index c12cd4f..8d2c986 100644
--- a/soundtrigger/Android.bp
+++ b/soundtrigger/Android.bp
@@ -1,4 +1,5 @@
 // This is an autogenerated file, do not edit.
 subdirs = [
     "2.0",
+    "2.0/vts/functional",
 ]
diff --git a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp b/soundtrigger/Android.mk
similarity index 65%
copy from vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
copy to soundtrigger/Android.mk
index b6ee3a3..f9e3276 100644
--- a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target/Android.bp
+++ b/soundtrigger/Android.mk
@@ -17,17 +17,3 @@
 LOCAL_PATH := $(call my-dir)
 
 include $(call all-subdir-makefiles)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := VibratorHidlTargetTest
-VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/hidl/target
-LOCAL_MODULE_CLASS := FAKE
-LOCAL_IS_HOST_MODULE := true
-LOCAL_COMPATIBILITY_SUITE := vts
-
-include $(BUILD_SYSTEM)/base_rules.mk
-
-$(LOCAL_BUILT_MODULE):
-  @echo "VTS host-driven test target: $(LOCAL_MODULE)"
-  $(hide) touch $@
diff --git a/tests/bar/1.0/default/Bar.cpp b/tests/bar/1.0/default/Bar.cpp
index c07e2fa..b3f971a 100644
--- a/tests/bar/1.0/default/Bar.cpp
+++ b/tests/bar/1.0/default/Bar.cpp
@@ -2,7 +2,7 @@
 #define LOG_TAG "hidl_test"
 
 #include "Bar.h"
-#include <android-base/logging.h>
+#include <android/log.h>
 #include <inttypes.h>
 
 namespace android {
diff --git a/tests/baz/1.0/IBase.hal b/tests/baz/1.0/IBase.hal
index add4153..7f90f16 100644
--- a/tests/baz/1.0/IBase.hal
+++ b/tests/baz/1.0/IBase.hal
@@ -17,7 +17,7 @@
 package android.hardware.tests.baz@1.0;
 
 interface IBase {
-    enum SomeBaseEnum {
+    enum SomeBaseEnum : int32_t {
         grrr = 1,
     };
 
diff --git a/tests/expression/1.0/IExpression.hal b/tests/expression/1.0/IExpression.hal
index a44e03c..6eb5b2a 100644
--- a/tests/expression/1.0/IExpression.hal
+++ b/tests/expression/1.0/IExpression.hal
@@ -178,7 +178,7 @@
     MAX_PLUS_2 // 1
   };
 
-  enum Constants {
+  enum Constants : int32_t {
     CONST_FOO,
     CONST_BAR = 70,
     MAX_ARRAY_SIZE = 20,
diff --git a/tests/foo/1.0/default/Foo.cpp b/tests/foo/1.0/default/Foo.cpp
index 7053b44..850d716 100644
--- a/tests/foo/1.0/default/Foo.cpp
+++ b/tests/foo/1.0/default/Foo.cpp
@@ -17,7 +17,7 @@
 
 // Methods from ::android::hardware::tests::foo::V1_0::IFoo follow.
 Return<void> Foo::doThis(float param) {
-    ALOGI("SERVER(Foo) doThis(%.2f)", param);
+    LOG(INFO) << "SERVER(Foo) doThis(" << param << ")";
 
     return Void();
 }
@@ -49,7 +49,7 @@
 
 Return<void> Foo::doSomethingElse(
         const hidl_array<int32_t, 15> &param, doSomethingElse_cb _cb) {
-    ALOGI("SERVER(Foo) doSomethingElse(...)");
+    LOG(INFO) << "SERVER(Foo) doSomethingElse(...)";
 
     hidl_array<int32_t, 32> result;
     for (size_t i = 0; i < 15; ++i) {
@@ -66,7 +66,7 @@
 
 Return<void> Foo::doStuffAndReturnAString(
         doStuffAndReturnAString_cb _cb) {
-    ALOGI("SERVER(Foo) doStuffAndReturnAString");
+    LOG(INFO) << "SERVER(Foo) doStuffAndReturnAString";
 
     _cb("Hello, world");
 
@@ -75,7 +75,7 @@
 
 Return<void> Foo::mapThisVector(
         const hidl_vec<int32_t> &param, mapThisVector_cb _cb) {
-    ALOGI("SERVER(Foo) mapThisVector");
+    LOG(INFO) << "SERVER(Foo) mapThisVector";
 
     hidl_vec<int32_t> out;
     out.resize(param.size());
@@ -91,80 +91,89 @@
 
 Return<void> Foo::callMe(
         const sp<IFooCallback> &cb) {
-    ALOGI("SERVER(Foo) callMe %p", cb.get());
+    LOG(INFO) << "SERVER(Foo) callMe " << cb.get();
 
     if (cb != NULL) {
-
         hidl_array<nsecs_t, 3> c;
-        ALOGI("SERVER(Foo) callMe %p calling IFooCallback::heyItsYou, " \
-              "should return immediately", cb.get());
+        LOG(INFO) << "SERVER(Foo) callMe "
+                  << cb.get()
+                  << " calling IFooCallback::heyItsYou, should return immediately";
         c[0] = systemTime();
         cb->heyItsYou(cb);
         c[0] = systemTime() - c[0];
-        ALOGI("SERVER(Foo) callMe %p calling IFooCallback::heyItsYou " \
-              "returned after %" PRId64 "ns", cb.get(), c[0]);
-
-        ALOGI("SERVER(Foo) callMe %p calling IFooCallback::heyItsYouIsntIt, " \
-              "should block for %" PRId64 " seconds", cb.get(),
-              DELAY_S);
+        LOG(INFO) << "SERVER(Foo) callMe "
+                  << cb.get()
+                  << " calling IFooCallback::heyItsYou, returned after"
+                  << c[0]
+                  << "ns";
+        LOG(INFO) << "SERVER(Foo) callMe "
+                  << cb.get()
+                  << " calling IFooCallback::heyItsYouIsntIt, should block for"
+                  << DELAY_S
+                  << " seconds";
         c[1] = systemTime();
-        Return<bool> ret = cb->heyItsYouIsntIt(cb);
-        if (!ret.isOk()) {
-            ALOGE("SERVER(Foo) callMe %p encountered transport error (%d).",
-                  cb.get(), ret.getStatus().exceptionCode());
-            return Void();
-        }
-        bool answer = ret.get();
+        bool answer = cb->heyItsYouIsntIt(cb);
         c[1] = systemTime() - c[1];
-        ALOGI("SERVER(Foo) callMe %p IFooCallback::heyItsYouIsntIt " \
-              "responded with %d after %" PRId64 "ns", cb.get(), answer, c[1]);
 
-        ALOGI("SERVER(Foo) callMe %p calling " \
-              "IFooCallback::heyItsTheMeaningOfLife, " \
-              "should return immediately ", cb.get());
+        LOG(INFO) << "SERVER(Foo) callMe "
+                  << cb.get()
+                  << " calling IFooCallback::heyItsYouIsntIt, responded with "
+                  << answer
+                  << " after "
+                  << c[1]
+                  << "ns";
+
+        LOG(INFO) << "SERVER(Foo) callMe "
+                  << cb.get()
+                  << " calling IFooCallback::heyItsTheMeaningOfLife,"
+                  << " should return immediately";
         c[2] = systemTime();
         cb->heyItsTheMeaningOfLife(42);
         c[2] = systemTime() - c[2];
-        ALOGI("SERVER(Foo) callMe %p After call to " \
-              "IFooCallback::heyItsTheMeaningOfLife " \
-              "responded after %" PRId64 "ns", cb.get(), c[2]);
 
-        ALOGI("SERVER(Foo) callMe %p calling IFooCallback::youBlockedMeFor " \
-              "to report times", cb.get());
+        LOG(INFO) << "SERVER(Foo) callMe "
+                  << cb.get()
+                  << " cAfter call to IFooCallback::heyItsTheMeaningOfLife responded after "
+                  << c[2]
+                  << "ns";
+        LOG(INFO) << "SERVER(Foo) callMe "
+                  << cb.get()
+                  << " calling IFooCallback::youBlockedMeFor to report times";
         cb->youBlockedMeFor(c);
-        ALOGI("SERVER(Foo) callMe %p After call to " \
-              "IFooCallback::heyYouBlockedMeFor", cb.get());
+        LOG(INFO) << "SERVER(Foo) callMe "
+                  << cb.get()
+                  << " After call to IFooCallback::youBlockedMeFor";
     }
 
     return Void();
 }
 
 Return<Foo::SomeEnum> Foo::useAnEnum(SomeEnum param) {
-    ALOGI("SERVER(Foo) useAnEnum %d", (int)param);
+    LOG(INFO) << "SERVER(Foo) useAnEnum " << (int)param;
 
     return SomeEnum::goober;
 }
 
 Return<void> Foo::haveAGooberVec(const hidl_vec<Goober>& param) {
-    ALOGI("SERVER(Foo) haveAGooberVec &param = %p", &param);
+    LOG(INFO) << "SERVER(Foo) haveAGooberVec &param = " << &param;
 
     return Void();
 }
 
 Return<void> Foo::haveAGoober(const Goober &g) {
-    ALOGI("SERVER(Foo) haveaGoober g=%p", &g);
+    LOG(INFO) << "SERVER(Foo) haveaGoober g=" << &g;
 
     return Void();
 }
 
 Return<void> Foo::haveAGooberArray(const hidl_array<Goober, 20> & /* lots */) {
-    ALOGI("SERVER(Foo) haveAGooberArray");
+    LOG(INFO) << "SERVER(Foo) haveAGooberArray";
 
     return Void();
 }
 
 Return<void> Foo::haveATypeFromAnotherFile(const Abc &def) {
-    ALOGI("SERVER(Foo) haveATypeFromAnotherFile def=%p", &def);
+    LOG(INFO) << "SERVER(Foo) haveATypeFromAnotherFile def=" << &def;
 
     return Void();
 }
@@ -172,10 +181,14 @@
 Return<void> Foo::haveSomeStrings(
         const hidl_array<hidl_string, 3> &array,
         haveSomeStrings_cb _cb) {
-    ALOGI("SERVER(Foo) haveSomeStrings([\"%s\", \"%s\", \"%s\"])",
-          array[0].c_str(),
-          array[1].c_str(),
-          array[2].c_str());
+
+    LOG(INFO) << "SERVER(Foo) haveSomeStrings([\""
+              << array[0].c_str()
+              << "\", \""
+              << array[1].c_str()
+              << "\", \""
+              << array[2].c_str()
+              << "\"])";
 
     hidl_array<hidl_string, 2> result;
     result[0] = "Hello";
@@ -189,10 +202,13 @@
 Return<void> Foo::haveAStringVec(
         const hidl_vec<hidl_string> &vector,
         haveAStringVec_cb _cb) {
-    ALOGI("SERVER(Foo) haveAStringVec([\"%s\", \"%s\", \"%s\"])",
-          vector[0].c_str(),
-          vector[1].c_str(),
-          vector[2].c_str());
+    LOG(INFO) << "SERVER(Foo) haveAStringVec([\""
+              << vector[0].c_str()
+              << "\", \""
+              << vector[1].c_str()
+              << "\", \""
+              << vector[2].c_str()
+              << "\"])";
 
     hidl_vec<hidl_string> result;
     result.resize(2);
@@ -207,7 +223,7 @@
 
 Return<void> Foo::transposeMe(
         const hidl_array<float, 3, 5> &in, transposeMe_cb _cb) {
-    ALOGI("SERVER(Foo) transposeMe(%s)", to_string(in).c_str());
+    LOG(INFO) << "SERVER(Foo) transposeMe(" << to_string(in).c_str() << ")";
 
     hidl_array<float, 5, 3> out;
     for (size_t i = 0; i < 5; ++i) {
@@ -216,7 +232,7 @@
         }
     }
 
-    ALOGI("SERVER(Foo) transposeMe returning %s", to_string(out).c_str());
+    LOG(INFO) << "SERVER(Foo) transposeMe returning " << to_string(out).c_str();
 
     _cb(out);
 
@@ -225,7 +241,7 @@
 
 Return<void> Foo::callingDrWho(
         const MultiDimensional &in, callingDrWho_cb _hidl_cb) {
-    ALOGI("SERVER(Foo) callingDrWho(%s)", MultiDimensionalToString(in).c_str());
+    LOG(INFO) << "SERVER(Foo) callingDrWho(" << MultiDimensionalToString(in).c_str() << ")";
 
     MultiDimensional out;
     for (size_t i = 0; i < 5; ++i) {
diff --git a/tests/foo/1.0/default/FooCallback.cpp b/tests/foo/1.0/default/FooCallback.cpp
index e4704f2..ff3a545 100644
--- a/tests/foo/1.0/default/FooCallback.cpp
+++ b/tests/foo/1.0/default/FooCallback.cpp
@@ -2,7 +2,7 @@
 #define LOG_TAG "hidl_test"
 
 #include "FooCallback.h"
-#include <android-base/logging.h>
+#include <android/log.h>
 #include <hidl-test/FooHelper.h>
 #include <inttypes.h>
 #include <utils/Timers.h>
diff --git a/tests/inheritance/1.0/default/Child.cpp b/tests/inheritance/1.0/default/Child.cpp
index 66720b3..fd6608c 100644
--- a/tests/inheritance/1.0/default/Child.cpp
+++ b/tests/inheritance/1.0/default/Child.cpp
@@ -1,5 +1,5 @@
 #define LOG_TAG "hidl_test"
-#include <android-base/logging.h>
+#include <android/log.h>
 
 #include "Child.h"
 
diff --git a/tests/inheritance/1.0/default/Fetcher.cpp b/tests/inheritance/1.0/default/Fetcher.cpp
index 74f8d07..f3b576b 100644
--- a/tests/inheritance/1.0/default/Fetcher.cpp
+++ b/tests/inheritance/1.0/default/Fetcher.cpp
@@ -28,7 +28,7 @@
     } else {
         toSend = local;
     }
-    ALOGI("SERVER(Fetcher) selectService returning %p", toSend.get());
+    LOG(INFO) << "SERVER(Fetcher) selectService returning " << toSend.get();
     _hidl_cb(toSend);
     return Void();
 }
diff --git a/tests/inheritance/1.0/default/Parent.cpp b/tests/inheritance/1.0/default/Parent.cpp
index bdd20c9..a6fd911 100644
--- a/tests/inheritance/1.0/default/Parent.cpp
+++ b/tests/inheritance/1.0/default/Parent.cpp
@@ -1,5 +1,5 @@
 #define LOG_TAG "hidl_test"
-#include <android-base/logging.h>
+#include <android/log.h>
 
 #include "Parent.h"
 
diff --git a/tests/pointer/1.0/default/Graph.cpp b/tests/pointer/1.0/default/Graph.cpp
index 5aa2243..9852407 100644
--- a/tests/pointer/1.0/default/Graph.cpp
+++ b/tests/pointer/1.0/default/Graph.cpp
@@ -1,5 +1,7 @@
+#define LOG_TAG "hidl_test"
+
 #include "Graph.h"
-#include <android-base/logging.h>
+#include <android/log.h>
 #include <hidl-test/PointerHelper.h>
 
 #define PUSH_ERROR_IF(__cond__) if(__cond__) { errors.push_back(std::to_string(__LINE__) + ": " + #__cond__); }
diff --git a/tests/pointer/1.0/default/Pointer.cpp b/tests/pointer/1.0/default/Pointer.cpp
index d7cd772..2b4a323 100644
--- a/tests/pointer/1.0/default/Pointer.cpp
+++ b/tests/pointer/1.0/default/Pointer.cpp
@@ -1,4 +1,7 @@
+#define LOG_TAG "hidl_test"
+
 #include "Pointer.h"
+#include <android/log.h>
 
 namespace android {
 namespace hardware {
@@ -7,6 +10,14 @@
 namespace V1_0 {
 namespace implementation {
 
+Return<int32_t> Pointer::getErrors() {
+    if(!errors.empty()) {
+        for(const auto& e : errors)
+            ALOGW("SERVER(Pointer) error: %s", e.c_str());
+    }
+    return errors.size();
+}
+
 IPointer* HIDL_FETCH_IPointer(const char* /* name */) {
     return new Pointer();
 }
diff --git a/tests/pointer/1.0/default/Pointer.h b/tests/pointer/1.0/default/Pointer.h
index 87b0f56..d6e3e48 100644
--- a/tests/pointer/1.0/default/Pointer.h
+++ b/tests/pointer/1.0/default/Pointer.h
@@ -2,7 +2,6 @@
 #define ANDROID_HARDWARE_TESTS_POINTER_V1_0_POINTER_H
 
 #include <android/hardware/tests/pointer/1.0/IPointer.h>
-#include <android-base/logging.h>
 #include <hidl/Status.h>
 
 #include <hidl/MQDescriptor.h>
@@ -28,13 +27,7 @@
 private:
     std::vector<std::string> errors;
 public:
-    Return<int32_t> getErrors() {
-        if(!errors.empty()) {
-            for(const auto& e : errors)
-                ALOGW("SERVER(Pointer) error: %s", e.c_str());
-        }
-        return errors.size();
-    }
+    Return<int32_t> getErrors() override;
     Return<void> foo1(const IPointer::Sam& s, IPointer::Sam const* s_ptr) override {
         PUSH_ERROR_IF(!(&s == s_ptr));
         return Void();
@@ -71,9 +64,6 @@
         return Void();
     }
     Return<void> foo9(::android::hardware::hidl_string const* str_ref) override {
-        ALOGI("SERVER(Pointer) foo9 got string @ %p (size = %ld) \"%s\"",
-            str_ref->c_str(),
-            (unsigned long) str_ref->size(), str_ref->c_str());
         PUSH_ERROR_IF(!(strcmp(str_ref->c_str(), "meowmeowmeow") == 0));
         return Void();
     }
diff --git a/tests/pointer/1.0/default/lib/PointerHelper.cpp b/tests/pointer/1.0/default/lib/PointerHelper.cpp
index ed7d49a..3bc82c2 100644
--- a/tests/pointer/1.0/default/lib/PointerHelper.cpp
+++ b/tests/pointer/1.0/default/lib/PointerHelper.cpp
@@ -1,5 +1,5 @@
 #define LOG_TAG "hidl_test"
-#include <android-base/logging.h>
+#include <android/log.h>
 #include "PointerHelper.h"
 namespace android {
 
diff --git a/thermal/1.0/default/Thermal.h b/thermal/1.0/default/Thermal.h
index 8212ab9..2e06289 100644
--- a/thermal/1.0/default/Thermal.h
+++ b/thermal/1.0/default/Thermal.h
@@ -1,5 +1,20 @@
-#ifndef HIDL_GENERATED_android_hardware_thermal_V1_0_Thermal_H_
-#define HIDL_GENERATED_android_hardware_thermal_V1_0_Thermal_H_
+/*
+ * 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_THERMAL_V1_0_THERMAL_H
+#define ANDROID_HARDWARE_THERMAL_V1_0_THERMAL_H
 
 #include <android/hardware/thermal/1.0/IThermal.h>
 #include <hidl/Status.h>
@@ -42,4 +57,4 @@
 }  // namespace hardware
 }  // namespace android
 
-#endif  // HIDL_GENERATED_android_hardware_thermal_V1_0_Thermal_H_
+#endif  // ANDROID_HARDWARE_THERMAL_V1_0_THERMAL_H
diff --git a/thermal/1.0/vts/functional/vts/testcases/hal/thermal/hidl/target_profiling/AndroidTest.xml b/thermal/1.0/vts/functional/vts/testcases/hal/thermal/hidl/target_profiling/AndroidTest.xml
index 3790c56..46ae05a 100644
--- a/thermal/1.0/vts/functional/vts/testcases/hal/thermal/hidl/target_profiling/AndroidTest.xml
+++ b/thermal/1.0/vts/functional/vts/testcases/hal/thermal/hidl/target_profiling/AndroidTest.xml
@@ -24,9 +24,9 @@
             _32bit::DATA/nativetest/thermal_hidl_hal_test/thermal_hidl_hal_test,
             _64bit::DATA/nativetest64/thermal_hidl_hal_test/thermal_hidl_hal_test,
             "/>
-        <option name="test-config-path" value="vts/testcases/hal/thermal/hidl/target_profiling/ThermalHidlTargetProfilingTest.config" />
         <option name="binary-test-type" value="gtest" />
         <option name="test-timeout" value="5m" />
+        <option name="enable-profiling" value="true" />
     </test>
 </configuration>
 
diff --git a/thermal/1.0/vts/functional/vts/testcases/hal/thermal/hidl/target_profiling/ThermalHidlTargetProfilingTest.config b/thermal/1.0/vts/functional/vts/testcases/hal/thermal/hidl/target_profiling/ThermalHidlTargetProfilingTest.config
deleted file mode 100644
index 912d8d5..0000000
--- a/thermal/1.0/vts/functional/vts/testcases/hal/thermal/hidl/target_profiling/ThermalHidlTargetProfilingTest.config
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-    "enable_profiling": true
-}
\ No newline at end of file
diff --git a/tv/cec/1.0/default/HdmiCec.h b/tv/cec/1.0/default/HdmiCec.h
index a41a5f0..34a3bb0 100644
--- a/tv/cec/1.0/default/HdmiCec.h
+++ b/tv/cec/1.0/default/HdmiCec.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef HIDL_GENERATED_android_hardware_tv_cec_V1_0_HdmiCec_H_
-#define HIDL_GENERATED_android_hardware_tv_cec_V1_0_HdmiCec_H_
+#ifndef ANDROID_HARDWARE_TV_CEC_V1_0_HDMICEC_H
+#define ANDROID_HARDWARE_TV_CEC_V1_0_HDMICEC_H
 
 #include <algorithm>
 
@@ -101,4 +101,4 @@
 }  // namespace hardware
 }  // namespace android
 
-#endif  // HIDL_GENERATED_android_hardware_tv_cec_V1_0_HdmiCec_H_
+#endif  // ANDROID_HARDWARE_TV_CEC_V1_0_HDMICEC_H
diff --git a/tv/cec/1.0/vts/Android.mk b/tv/cec/1.0/vts/Android.mk
new file mode 100644
index 0000000..2666ca6
--- /dev/null
+++ b/tv/cec/1.0/vts/Android.mk
@@ -0,0 +1,118 @@
+#
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+# build VTS driver for TvCec v1.0.
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := libvts_driver_hidl_tv_hdmi_cec@1.0
+
+LOCAL_SRC_FILES := \
+  HdmiCec.vts \
+  HdmiCecCallback.vts \
+  types.vts \
+
+LOCAL_SHARED_LIBRARIES += \
+  android.hardware.tv.cec@1.0 \
+  libbase \
+  libutils \
+  libcutils \
+  liblog \
+  libhidlbase \
+  libhidltransport \
+  libhwbinder \
+  libprotobuf-cpp-full \
+  libvts_common \
+  libvts_datatype \
+  libvts_measurement \
+  libvts_multidevice_proto \
+
+LOCAL_PROTOC_OPTIMIZE_TYPE := full
+
+LOCAL_MULTILIB := both
+
+include $(BUILD_SHARED_LIBRARY)
+
+
+# build VTS profiler for HdmiCec
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := libvts_profiler_hidl_tv_hdmi_cec@1.0
+
+LOCAL_SRC_FILES := \
+  HdmiCec.vts \
+  types.vts \
+
+LOCAL_C_INCLUDES += \
+  test/vts/drivers/libprofiling \
+
+LOCAL_VTS_MODE := PROFILER
+
+LOCAL_SHARED_LIBRARIES += \
+  android.hardware.tv.cec@1.0 \
+  libbase \
+  libcutils \
+  liblog \
+  libhidlbase \
+  libhidltransport \
+  libhwbinder \
+  libprotobuf-cpp-full \
+  libvts_common \
+  libvts_multidevice_proto \
+  libvts_profiling \
+  libutils \
+
+LOCAL_PROTOC_OPTIMIZE_TYPE := full
+
+LOCAL_MULTILIB := both
+
+include $(BUILD_SHARED_LIBRARY)
+
+
+# build VTS profiler for HdmiCecCallback
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := libvts_profiler_hidl_tv_hdmi_cec_callback_@1.0
+
+LOCAL_SRC_FILES := \
+  HdmiCecCallback.vts \
+  types.vts \
+
+LOCAL_C_INCLUDES += \
+  test/vts/drivers/libprofiling \
+
+LOCAL_VTS_MODE := PROFILER
+
+LOCAL_SHARED_LIBRARIES += \
+  android.hardware.tv.cec@1.0 \
+  libbase \
+  libcutils \
+  liblog \
+  libhidlbase \
+  libhidltransport \
+  libhwbinder \
+  libprotobuf-cpp-full \
+  libvts_common \
+  libvts_multidevice_proto \
+  libvts_profiling \
+  libutils \
+
+LOCAL_PROTOC_OPTIMIZE_TYPE := full
+
+LOCAL_MULTILIB := both
+
+include $(BUILD_SHARED_LIBRARY)
\ No newline at end of file
diff --git a/tv/cec/1.0/vts/HdmiCec.vts b/tv/cec/1.0/vts/HdmiCec.vts
new file mode 100644
index 0000000..d7d09de
--- /dev/null
+++ b/tv/cec/1.0/vts/HdmiCec.vts
@@ -0,0 +1,172 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "IHdmiCec"
+
+package: "android.hardware.tv.cec"
+
+import: "android.hardware.tv.cec@1.0::IHdmiCecCallback"
+import: "android.hardware.tv.cec@1.0::types"
+
+interface: {
+    api: {
+        name: "addLogicalAddress"
+        return_type_hidl: {
+            type: TYPE_ENUM
+            predefined_type: "::android::hardware::tv::cec::V1_0::Result"
+        }
+        arg: {
+            type: TYPE_ENUM
+            predefined_type: "::android::hardware::tv::cec::V1_0::CecLogicalAddress"
+        }
+        callflow: {
+            next: "*"
+        }
+    }
+
+    api: {
+        name: "clearLogicalAddress"
+        callflow: {
+            next: "addLogicalAddress"
+        }
+        callflow: {
+            exit: true
+        }
+    }
+
+    api: {
+        name: "getPhysicalAddress"
+        return_type_hidl: {
+            type: TYPE_ENUM
+            predefined_type: "::android::hardware::tv::cec::V1_0::Result"
+        }
+        return_type_hidl: {
+            type: TYPE_SCALAR
+            scalar_type: "uint16_t"
+        }
+        callflow: {
+            next: "*"
+        }
+    }
+
+    api: {
+        name: "sendMessage"
+        return_type_hidl: {
+            type: TYPE_ENUM
+            predefined_type: "::android::hardware::tv::cec::V1_0::SendMessageResult"
+        }
+        arg: {
+            type: TYPE_STRUCT
+            predefined_type: "::android::hardware::tv::cec::V1_0::CecMessage"
+        }
+        callflow: {
+            next: "*"
+        }
+    }
+
+    api: {
+        name: "setCallback"
+        arg: {
+            type: TYPE_HIDL_CALLBACK
+            predefined_type: "IHdmiCecCallback"
+            is_callback: true
+        }
+        callflow: {
+            next: "addLogicalAddress"
+        }
+        callflow: {
+            entry: true
+        }
+    }
+
+    api: {
+        name: "getCecVersion"
+        return_type_hidl: {
+            type: TYPE_SCALAR
+            scalar_type: "int32_t"
+        }
+        callflow: {
+            next: "*"
+        }
+    }
+
+    api: {
+        name: "getVendorId"
+        return_type_hidl: {
+            type: TYPE_SCALAR
+            scalar_type: "uint32_t"
+        }
+        callflow: {
+            next: "*"
+        }
+    }
+
+    api: {
+        name: "getPortInfo"
+        return_type_hidl: {
+            type: TYPE_VECTOR
+            vector_value: {
+                type: TYPE_STRUCT
+                predefined_type: "::android::hardware::tv::cec::V1_0::HdmiPortInfo"
+            }
+        }
+        callflow: {
+            next: "*"
+        }
+    }
+
+    api: {
+        name: "setOption"
+        arg: {
+            type: TYPE_ENUM
+            predefined_type: "::android::hardware::tv::cec::V1_0::OptionKey"
+        }
+        arg: {
+            type: TYPE_SCALAR
+            scalar_type: "bool_t"
+        }
+        callflow: {
+            next: "*"
+        }
+    }
+
+    api: {
+        name: "setLanguage"
+        arg: {
+            type: TYPE_STRING
+        }
+        callflow: {
+            next: "*"
+        }
+    }
+
+    api: {
+        name: "enableAudioReturnChannel"
+        arg: {
+            type: TYPE_SCALAR
+            scalar_type: "int32_t"
+        }
+        arg: {
+            type: TYPE_SCALAR
+            scalar_type: "bool_t"
+        }
+        callflow: {
+            next: "*"
+        }
+    }
+
+    api: {
+        name: "isConnected"
+        return_type_hidl: {
+            type: TYPE_SCALAR
+            scalar_type: "bool_t"
+        }
+        arg: {
+            type: TYPE_SCALAR
+            scalar_type: "int32_t"
+        }
+        callflow: {
+            next: "*"
+        }
+    }
+
+}
diff --git a/tv/cec/1.0/vts/HdmiCecCallback.vts b/tv/cec/1.0/vts/HdmiCecCallback.vts
new file mode 100644
index 0000000..864e6f5
--- /dev/null
+++ b/tv/cec/1.0/vts/HdmiCecCallback.vts
@@ -0,0 +1,26 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "IHdmiCecCallback"
+
+package: "android.hardware.tv.cec"
+
+import: "android.hardware.tv.cec@1.0::types"
+
+interface: {
+    api: {
+        name: "onCecMessage"
+        arg: {
+            type: TYPE_STRUCT
+            predefined_type: "::android::hardware::tv::cec::V1_0::CecMessage"
+        }
+    }
+
+    api: {
+        name: "onHotplugEvent"
+        arg: {
+            type: TYPE_STRUCT
+            predefined_type: "::android::hardware::tv::cec::V1_0::HotplugEvent"
+        }
+    }
+
+}
diff --git a/tv/cec/1.0/vts/types.vts b/tv/cec/1.0/vts/types.vts
new file mode 100644
index 0000000..ae972a5
--- /dev/null
+++ b/tv/cec/1.0/vts/types.vts
@@ -0,0 +1,604 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "types"
+
+package: "android.hardware.tv.cec"
+
+
+attribute: {
+    name: "::android::hardware::tv::cec::V1_0::MaxLength"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "MESSAGE_BODY"
+        scalar_value: {
+            int32_t: 15
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::tv::cec::V1_0::CecDeviceType"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "INACTIVE"
+        scalar_value: {
+            int32_t: -1
+        }
+        enumerator: "TV"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "RECORDER"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "TUNER"
+        scalar_value: {
+            int32_t: 3
+        }
+        enumerator: "PLAYBACK"
+        scalar_value: {
+            int32_t: 4
+        }
+        enumerator: "AUDIO_SYSTEM"
+        scalar_value: {
+            int32_t: 5
+        }
+        enumerator: "MAX"
+        scalar_value: {
+            int32_t: 5
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::tv::cec::V1_0::CecLogicalAddress"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "TV"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "RECORDER_1"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "RECORDER_2"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "TUNER_1"
+        scalar_value: {
+            int32_t: 3
+        }
+        enumerator: "PLAYBACK_1"
+        scalar_value: {
+            int32_t: 4
+        }
+        enumerator: "AUDIO_SYSTEM"
+        scalar_value: {
+            int32_t: 5
+        }
+        enumerator: "TUNER_2"
+        scalar_value: {
+            int32_t: 6
+        }
+        enumerator: "TUNER_3"
+        scalar_value: {
+            int32_t: 7
+        }
+        enumerator: "PLAYBACK_2"
+        scalar_value: {
+            int32_t: 8
+        }
+        enumerator: "RECORDER_3"
+        scalar_value: {
+            int32_t: 9
+        }
+        enumerator: "TUNER_4"
+        scalar_value: {
+            int32_t: 10
+        }
+        enumerator: "PLAYBACK_3"
+        scalar_value: {
+            int32_t: 11
+        }
+        enumerator: "FREE_USE"
+        scalar_value: {
+            int32_t: 14
+        }
+        enumerator: "UNREGISTERED"
+        scalar_value: {
+            int32_t: 15
+        }
+        enumerator: "BROADCAST"
+        scalar_value: {
+            int32_t: 15
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::tv::cec::V1_0::CecMessageType"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "FEATURE_ABORT"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "IMAGE_VIEW_ON"
+        scalar_value: {
+            int32_t: 4
+        }
+        enumerator: "TUNER_STEP_INCREMENT"
+        scalar_value: {
+            int32_t: 5
+        }
+        enumerator: "TUNER_STEP_DECREMENT"
+        scalar_value: {
+            int32_t: 6
+        }
+        enumerator: "TUNER_DEVICE_STATUS"
+        scalar_value: {
+            int32_t: 7
+        }
+        enumerator: "GIVE_TUNER_DEVICE_STATUS"
+        scalar_value: {
+            int32_t: 8
+        }
+        enumerator: "RECORD_ON"
+        scalar_value: {
+            int32_t: 9
+        }
+        enumerator: "RECORD_STATUS"
+        scalar_value: {
+            int32_t: 10
+        }
+        enumerator: "RECORD_OFF"
+        scalar_value: {
+            int32_t: 11
+        }
+        enumerator: "TEXT_VIEW_ON"
+        scalar_value: {
+            int32_t: 13
+        }
+        enumerator: "RECORD_TV_SCREEN"
+        scalar_value: {
+            int32_t: 15
+        }
+        enumerator: "GIVE_DECK_STATUS"
+        scalar_value: {
+            int32_t: 26
+        }
+        enumerator: "DECK_STATUS"
+        scalar_value: {
+            int32_t: 27
+        }
+        enumerator: "SET_MENU_LANGUAGE"
+        scalar_value: {
+            int32_t: 50
+        }
+        enumerator: "CLEAR_ANALOG_TIMER"
+        scalar_value: {
+            int32_t: 51
+        }
+        enumerator: "SET_ANALOG_TIMER"
+        scalar_value: {
+            int32_t: 52
+        }
+        enumerator: "TIMER_STATUS"
+        scalar_value: {
+            int32_t: 53
+        }
+        enumerator: "STANDBY"
+        scalar_value: {
+            int32_t: 54
+        }
+        enumerator: "PLAY"
+        scalar_value: {
+            int32_t: 65
+        }
+        enumerator: "DECK_CONTROL"
+        scalar_value: {
+            int32_t: 66
+        }
+        enumerator: "TIMER_CLEARED_STATUS"
+        scalar_value: {
+            int32_t: 67
+        }
+        enumerator: "USER_CONTROL_PRESSED"
+        scalar_value: {
+            int32_t: 68
+        }
+        enumerator: "USER_CONTROL_RELEASED"
+        scalar_value: {
+            int32_t: 69
+        }
+        enumerator: "GIVE_OSD_NAME"
+        scalar_value: {
+            int32_t: 70
+        }
+        enumerator: "SET_OSD_NAME"
+        scalar_value: {
+            int32_t: 71
+        }
+        enumerator: "SET_OSD_STRING"
+        scalar_value: {
+            int32_t: 100
+        }
+        enumerator: "SET_TIMER_PROGRAM_TITLE"
+        scalar_value: {
+            int32_t: 103
+        }
+        enumerator: "SYSTEM_AUDIO_MODE_REQUEST"
+        scalar_value: {
+            int32_t: 112
+        }
+        enumerator: "GIVE_AUDIO_STATUS"
+        scalar_value: {
+            int32_t: 113
+        }
+        enumerator: "SET_SYSTEM_AUDIO_MODE"
+        scalar_value: {
+            int32_t: 114
+        }
+        enumerator: "REPORT_AUDIO_STATUS"
+        scalar_value: {
+            int32_t: 122
+        }
+        enumerator: "GIVE_SYSTEM_AUDIO_MODE_STATUS"
+        scalar_value: {
+            int32_t: 125
+        }
+        enumerator: "SYSTEM_AUDIO_MODE_STATUS"
+        scalar_value: {
+            int32_t: 126
+        }
+        enumerator: "ROUTING_CHANGE"
+        scalar_value: {
+            int32_t: 128
+        }
+        enumerator: "ROUTING_INFORMATION"
+        scalar_value: {
+            int32_t: 129
+        }
+        enumerator: "ACTIVE_SOURCE"
+        scalar_value: {
+            int32_t: 130
+        }
+        enumerator: "GIVE_PHYSICAL_ADDRESS"
+        scalar_value: {
+            int32_t: 131
+        }
+        enumerator: "REPORT_PHYSICAL_ADDRESS"
+        scalar_value: {
+            int32_t: 132
+        }
+        enumerator: "REQUEST_ACTIVE_SOURCE"
+        scalar_value: {
+            int32_t: 133
+        }
+        enumerator: "SET_STREAM_PATH"
+        scalar_value: {
+            int32_t: 134
+        }
+        enumerator: "DEVICE_VENDOR_ID"
+        scalar_value: {
+            int32_t: 135
+        }
+        enumerator: "VENDOR_COMMAND"
+        scalar_value: {
+            int32_t: 137
+        }
+        enumerator: "VENDOR_REMOTE_BUTTON_DOWN"
+        scalar_value: {
+            int32_t: 138
+        }
+        enumerator: "VENDOR_REMOTE_BUTTON_UP"
+        scalar_value: {
+            int32_t: 139
+        }
+        enumerator: "GIVE_DEVICE_VENDOR_ID"
+        scalar_value: {
+            int32_t: 140
+        }
+        enumerator: "MENU_REQUEST"
+        scalar_value: {
+            int32_t: 141
+        }
+        enumerator: "MENU_STATUS"
+        scalar_value: {
+            int32_t: 142
+        }
+        enumerator: "GIVE_DEVICE_POWER_STATUS"
+        scalar_value: {
+            int32_t: 143
+        }
+        enumerator: "REPORT_POWER_STATUS"
+        scalar_value: {
+            int32_t: 144
+        }
+        enumerator: "GET_MENU_LANGUAGE"
+        scalar_value: {
+            int32_t: 145
+        }
+        enumerator: "SELECT_ANALOG_SERVICE"
+        scalar_value: {
+            int32_t: 146
+        }
+        enumerator: "SELECT_DIGITAL_SERVICE"
+        scalar_value: {
+            int32_t: 147
+        }
+        enumerator: "SET_DIGITAL_TIMER"
+        scalar_value: {
+            int32_t: 151
+        }
+        enumerator: "CLEAR_DIGITAL_TIMER"
+        scalar_value: {
+            int32_t: 153
+        }
+        enumerator: "SET_AUDIO_RATE"
+        scalar_value: {
+            int32_t: 154
+        }
+        enumerator: "INACTIVE_SOURCE"
+        scalar_value: {
+            int32_t: 157
+        }
+        enumerator: "CEC_VERSION"
+        scalar_value: {
+            int32_t: 158
+        }
+        enumerator: "GET_CEC_VERSION"
+        scalar_value: {
+            int32_t: 159
+        }
+        enumerator: "VENDOR_COMMAND_WITH_ID"
+        scalar_value: {
+            int32_t: 160
+        }
+        enumerator: "CLEAR_EXTERNAL_TIMER"
+        scalar_value: {
+            int32_t: 161
+        }
+        enumerator: "SET_EXTERNAL_TIMER"
+        scalar_value: {
+            int32_t: 162
+        }
+        enumerator: "INITIATE_ARC"
+        scalar_value: {
+            int32_t: 192
+        }
+        enumerator: "REPORT_ARC_INITIATED"
+        scalar_value: {
+            int32_t: 193
+        }
+        enumerator: "REPORT_ARC_TERMINATED"
+        scalar_value: {
+            int32_t: 194
+        }
+        enumerator: "REQUEST_ARC_INITIATION"
+        scalar_value: {
+            int32_t: 195
+        }
+        enumerator: "REQUEST_ARC_TERMINATION"
+        scalar_value: {
+            int32_t: 196
+        }
+        enumerator: "TERMINATE_ARC"
+        scalar_value: {
+            int32_t: 197
+        }
+        enumerator: "ABORT"
+        scalar_value: {
+            int32_t: 255
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::tv::cec::V1_0::AbortReason"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "UNRECOGNIZED_MODE"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "NOT_IN_CORRECT_MODE"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "CANNOT_PROVIDE_SOURCE"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "INVALID_OPERAND"
+        scalar_value: {
+            int32_t: 3
+        }
+        enumerator: "REFUSED"
+        scalar_value: {
+            int32_t: 4
+        }
+        enumerator: "UNABLE_TO_DETERMINE"
+        scalar_value: {
+            int32_t: 5
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::tv::cec::V1_0::Result"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "SUCCESS"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "FAILURE_UNKNOWN"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "FAILURE_INVALID_ARGS"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "FAILURE_INVALID_STATE"
+        scalar_value: {
+            int32_t: 3
+        }
+        enumerator: "FAILURE_NOT_SUPPORTED"
+        scalar_value: {
+            int32_t: 4
+        }
+        enumerator: "FAILURE_BUSY"
+        scalar_value: {
+            int32_t: 5
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::tv::cec::V1_0::SendMessageResult"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "SUCCESS"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "NACK"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "BUSY"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "FAIL"
+        scalar_value: {
+            int32_t: 3
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::tv::cec::V1_0::HdmiPortType"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "INPUT"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "OUTPUT"
+        scalar_value: {
+            int32_t: 1
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::tv::cec::V1_0::OptionKey"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "WAKEUP"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "ENABLE_CEC"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "SYSTEM_CEC_CONTROL"
+        scalar_value: {
+            int32_t: 3
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::tv::cec::V1_0::CecMessage"
+    type: TYPE_STRUCT
+    struct_value: {
+        name: "initiator"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::tv::cec::V1_0::CecLogicalAddress"
+    }
+    struct_value: {
+        name: "destination"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::tv::cec::V1_0::CecLogicalAddress"
+    }
+    struct_value: {
+        name: "body"
+        type: TYPE_VECTOR
+        vector_value: {
+            type: TYPE_SCALAR
+            scalar_type: "uint8_t"
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::tv::cec::V1_0::HotplugEvent"
+    type: TYPE_STRUCT
+    struct_value: {
+        name: "connected"
+        type: TYPE_SCALAR
+        scalar_type: "bool_t"
+    }
+    struct_value: {
+        name: "portId"
+        type: TYPE_SCALAR
+        scalar_type: "uint32_t"
+    }
+}
+
+attribute: {
+    name: "::android::hardware::tv::cec::V1_0::HdmiPortInfo"
+    type: TYPE_STRUCT
+    struct_value: {
+        name: "type"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::tv::cec::V1_0::HdmiPortType"
+    }
+    struct_value: {
+        name: "portId"
+        type: TYPE_SCALAR
+        scalar_type: "uint32_t"
+    }
+    struct_value: {
+        name: "cecSupported"
+        type: TYPE_SCALAR
+        scalar_type: "bool_t"
+    }
+    struct_value: {
+        name: "arcSupported"
+        type: TYPE_SCALAR
+        scalar_type: "bool_t"
+    }
+    struct_value: {
+        name: "physicalAddress"
+        type: TYPE_SCALAR
+        scalar_type: "uint16_t"
+    }
+}
+
diff --git a/tv/input/1.0/default/TvInput.h b/tv/input/1.0/default/TvInput.h
index 81cbb20..beb69f5 100644
--- a/tv/input/1.0/default/TvInput.h
+++ b/tv/input/1.0/default/TvInput.h
@@ -13,8 +13,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#ifndef HIDL_GENERATED_android_hardware_tv_input_V1_0_TvInput_H_
-#define HIDL_GENERATED_android_hardware_tv_input_V1_0_TvInput_H_
+#ifndef ANDROID_HARDWARE_TV_INPUT_V1_0_TVINPUT_H
+#define ANDROID_HARDWARE_TV_INPUT_V1_0_TVINPUT_H
 
 #include <android/hardware/tv/input/1.0/ITvInput.h>
 #include <hidl/Status.h>
@@ -72,4 +72,4 @@
 }  // namespace hardware
 }  // namespace android
 
-#endif  // HIDL_GENERATED_android_hardware_tv_input_V1_0_TvInput_H_
+#endif  // ANDROID_HARDWARE_TV_INPUT_V1_0_TVINPUT_H
diff --git a/tv/input/1.0/types.hal b/tv/input/1.0/types.hal
index 89a7acc..6852c70 100644
--- a/tv/input/1.0/types.hal
+++ b/tv/input/1.0/types.hal
@@ -18,7 +18,7 @@
 
 import android.hardware.audio.common@2.0;
 
-enum Result {
+enum Result : int32_t {
     OK,
     UNKNOWN,
     NO_RESOURCE,
@@ -27,7 +27,7 @@
 };
 
 /* Type of physical TV input. */
-enum TvInputType {
+enum TvInputType : int32_t {
     OTHER = 1,         // Generic hardware.
     TUNER = 2,         // Tuner. e.g. built-in terrestrial tuner
     COMPOSITE = 3,
@@ -50,7 +50,7 @@
                               // must be filled with 0s.
 };
 
-enum TvInputEventType {
+enum TvInputEventType : int32_t {
     /*
      * Hardware notifies the framework that a device is available.
      *
diff --git a/tv/input/1.0/vts/Android.mk b/tv/input/1.0/vts/Android.mk
new file mode 100644
index 0000000..f8610dd
--- /dev/null
+++ b/tv/input/1.0/vts/Android.mk
@@ -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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+# build VTS driver for TvInput v1.0.
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := libvts_driver_hidl_tv_input@1.0
+
+LOCAL_SRC_FILES := \
+  TvInput.vts \
+  TvInputCallback.vts \
+  types.vts \
+  ../../../../audio/common/2.0/vts/types.vts \
+
+LOCAL_SHARED_LIBRARIES += \
+  android.hardware.tv.input@1.0 \
+  libbase \
+  libutils \
+  libcutils \
+  liblog \
+  libhidlbase \
+  libhidltransport \
+  libhwbinder \
+  libprotobuf-cpp-full \
+  libvts_common \
+  libvts_datatype \
+  libvts_measurement \
+  libvts_multidevice_proto \
+
+LOCAL_PROTOC_OPTIMIZE_TYPE := full
+
+LOCAL_MULTILIB := both
+
+include $(BUILD_SHARED_LIBRARY)
+
+
+# build VTS profiler for TvInput
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := libvts_profiler_hidl_tv_input@1.0
+
+LOCAL_SRC_FILES := \
+  TvInput.vts \
+  types.vts \
+  ../../../../audio/common/2.0/vts/types.vts \
+
+LOCAL_C_INCLUDES += \
+  test/vts/drivers/libprofiling \
+
+LOCAL_VTS_MODE := PROFILER
+
+LOCAL_SHARED_LIBRARIES += \
+  android.hardware.tv.input@1.0 \
+  libbase \
+  libcutils \
+  liblog \
+  libhidlbase \
+  libhidltransport \
+  libhwbinder \
+  libprotobuf-cpp-full \
+  libvts_common \
+  libvts_multidevice_proto \
+  libvts_profiling \
+  libutils \
+
+LOCAL_PROTOC_OPTIMIZE_TYPE := full
+
+LOCAL_MULTILIB := both
+
+include $(BUILD_SHARED_LIBRARY)
+
+
+# build VTS profiler for TvInputCallback
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := libvts_profiler_hidl_tv_input_callback_@1.0
+
+LOCAL_SRC_FILES := \
+  TvInputCallback.vts \
+  types.vts \
+  ../../../../audio/common/2.0/vts/types.vts \
+
+LOCAL_C_INCLUDES += \
+  test/vts/drivers/libprofiling \
+
+LOCAL_VTS_MODE := PROFILER
+
+LOCAL_SHARED_LIBRARIES += \
+  android.hardware.tv.input@1.0 \
+  libbase \
+  libcutils \
+  liblog \
+  libhidlbase \
+  libhidltransport \
+  libhwbinder \
+  libprotobuf-cpp-full \
+  libvts_common \
+  libvts_multidevice_proto \
+  libvts_profiling \
+  libutils \
+
+LOCAL_PROTOC_OPTIMIZE_TYPE := full
+
+LOCAL_MULTILIB := both
+
+include $(BUILD_SHARED_LIBRARY)
+
diff --git a/tv/input/1.0/vts/TvInput.vts b/tv/input/1.0/vts/TvInput.vts
new file mode 100644
index 0000000..638fd08
--- /dev/null
+++ b/tv/input/1.0/vts/TvInput.vts
@@ -0,0 +1,97 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "ITvInput"
+
+package: "android.hardware.tv.input"
+
+import: "android.hardware.tv.input@1.0::ITvInputCallback"
+import: "android.hardware.tv.input@1.0::types"
+
+interface: {
+    api: {
+        name: "setCallback"
+        arg: {
+            type: TYPE_HIDL_CALLBACK
+            predefined_type: "ITvInputCallback"
+            is_callback: true
+        }
+        callflow: {
+            entry: true
+        }
+        callflow: {
+            exit: true
+        }
+        callflow: {
+            next: "getStreamConfigurations"
+        }
+    }
+
+    api: {
+        name: "getStreamConfigurations"
+        return_type_hidl: {
+            type: TYPE_ENUM
+            predefined_type: "::android::hardware::tv::input::V1_0::Result"
+        }
+        return_type_hidl: {
+            type: TYPE_VECTOR
+            vector_value: {
+                type: TYPE_STRUCT
+                predefined_type: "::android::hardware::tv::input::V1_0::TvStreamConfig"
+            }
+        }
+        arg: {
+            type: TYPE_SCALAR
+            scalar_type: "int32_t"
+        }
+        callflow: {
+            next: "openStream"
+            next: "getStreamConfigurations"
+            next: "closeStream"
+        }
+    }
+
+    api: {
+        name: "openStream"
+        return_type_hidl: {
+            type: TYPE_ENUM
+            predefined_type: "::android::hardware::tv::input::V1_0::Result"
+        }
+        return_type_hidl: {
+        }
+        arg: {
+            type: TYPE_SCALAR
+            scalar_type: "int32_t"
+        }
+        arg: {
+            type: TYPE_SCALAR
+            scalar_type: "int32_t"
+        }
+        callflow: {
+            next: "closeStream"
+            next: "getStreamConfigurations"
+            next: "openStream"
+        }
+    }
+
+    api: {
+        name: "closeStream"
+        return_type_hidl: {
+            type: TYPE_ENUM
+            predefined_type: "::android::hardware::tv::input::V1_0::Result"
+        }
+        arg: {
+            type: TYPE_SCALAR
+            scalar_type: "int32_t"
+        }
+        arg: {
+            type: TYPE_SCALAR
+            scalar_type: "int32_t"
+        }
+        callflow: {
+            next: "getStreamConfigurations"
+            next: "openStream"
+            next: "closeStream"
+        }
+    }
+
+}
diff --git a/tv/input/1.0/vts/TvInputCallback.vts b/tv/input/1.0/vts/TvInputCallback.vts
new file mode 100644
index 0000000..b1738a8
--- /dev/null
+++ b/tv/input/1.0/vts/TvInputCallback.vts
@@ -0,0 +1,18 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "ITvInputCallback"
+
+package: "android.hardware.tv.input"
+
+import: "android.hardware.tv.input@1.0::types"
+
+interface: {
+    api: {
+        name: "notify"
+        arg: {
+            type: TYPE_STRUCT
+            predefined_type: "::android::hardware::tv::input::V1_0::TvInputEvent"
+        }
+    }
+
+}
diff --git a/tv/input/1.0/vts/types.vts b/tv/input/1.0/vts/types.vts
new file mode 100644
index 0000000..67d84db
--- /dev/null
+++ b/tv/input/1.0/vts/types.vts
@@ -0,0 +1,1836 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "types"
+
+package: "android.hardware.tv.input"
+
+import: "android.hardware.audio.common@2.0::types"
+
+attribute: {
+    name: "::android::hardware::audio::common::V2_0::AudioHandleConsts"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "AUDIO_IO_HANDLE_NONE"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "AUDIO_MODULE_HANDLE_NONE"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "AUDIO_PORT_HANDLE_NONE"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "AUDIO_PATCH_HANDLE_NONE"
+        scalar_value: {
+            int32_t: 0
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::audio::common::V2_0::Uuid"
+    type: TYPE_STRUCT
+    struct_value: {
+        name: "timeLow"
+        type: TYPE_SCALAR
+        scalar_type: "uint32_t"
+    }
+    struct_value: {
+        name: "timeMid"
+        type: TYPE_SCALAR
+        scalar_type: "uint16_t"
+    }
+    struct_value: {
+        name: "versionAndTimeHigh"
+        type: TYPE_SCALAR
+        scalar_type: "uint16_t"
+    }
+    struct_value: {
+        name: "variantAndClockSeqHigh"
+        type: TYPE_SCALAR
+        scalar_type: "uint16_t"
+    }
+    struct_value: {
+        name: "node"
+        type: TYPE_ARRAY
+        vector_value: {
+            vector_size: 6
+            type: TYPE_SCALAR
+            scalar_type: "uint8_t"
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::audio::common::V2_0::AudioStreamType"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "DEFAULT"
+        scalar_value: {
+            int32_t: -1
+        }
+        enumerator: "MIN"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "VOICE_CALL"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "SYSTEM"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "RING"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "MUSIC"
+        scalar_value: {
+            int32_t: 3
+        }
+        enumerator: "ALARM"
+        scalar_value: {
+            int32_t: 4
+        }
+        enumerator: "NOTIFICATION"
+        scalar_value: {
+            int32_t: 5
+        }
+        enumerator: "BLUETOOTH_SCO"
+        scalar_value: {
+            int32_t: 6
+        }
+        enumerator: "ENFORCED_AUDIBLE"
+        scalar_value: {
+            int32_t: 7
+        }
+        enumerator: "DTMF"
+        scalar_value: {
+            int32_t: 8
+        }
+        enumerator: "TTS"
+        scalar_value: {
+            int32_t: 9
+        }
+        enumerator: "ACCESSIBILITY"
+        scalar_value: {
+            int32_t: 10
+        }
+        enumerator: "REROUTING"
+        scalar_value: {
+            int32_t: 11
+        }
+        enumerator: "PATCH"
+        scalar_value: {
+            int32_t: 12
+        }
+        enumerator: "PUBLIC_CNT"
+        scalar_value: {
+            int32_t: 10
+        }
+        enumerator: "FOR_POLICY_CNT"
+        scalar_value: {
+            int32_t: 12
+        }
+        enumerator: "CNT"
+        scalar_value: {
+            int32_t: 13
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::audio::common::V2_0::AudioSource"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "DEFAULT"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "MIC"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "VOICE_UPLINK"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "VOICE_DOWNLINK"
+        scalar_value: {
+            int32_t: 3
+        }
+        enumerator: "VOICE_CALL"
+        scalar_value: {
+            int32_t: 4
+        }
+        enumerator: "CAMCORDER"
+        scalar_value: {
+            int32_t: 5
+        }
+        enumerator: "VOICE_RECOGNITION"
+        scalar_value: {
+            int32_t: 6
+        }
+        enumerator: "VOICE_COMMUNICATION"
+        scalar_value: {
+            int32_t: 7
+        }
+        enumerator: "REMOTE_SUBMIX"
+        scalar_value: {
+            int32_t: 8
+        }
+        enumerator: "UNPROCESSED"
+        scalar_value: {
+            int32_t: 9
+        }
+        enumerator: "CNT"
+        scalar_value: {
+            int32_t: 10
+        }
+        enumerator: "MAX"
+        scalar_value: {
+            int32_t: 9
+        }
+        enumerator: "FM_TUNER"
+        scalar_value: {
+            int32_t: 1998
+        }
+        enumerator: "HOTWORD"
+        scalar_value: {
+            int32_t: 1999
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::audio::common::V2_0::AudioSessionConsts"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "OUTPUT_STAGE"
+        scalar_value: {
+            int32_t: -1
+        }
+        enumerator: "OUTPUT_MIX"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "ALLOCATE"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "NONE"
+        scalar_value: {
+            int32_t: 0
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::audio::common::V2_0::AudioFormat"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "uint32_t"
+
+        enumerator: "INVALID"
+        scalar_value: {
+            uint32_t: 4294967295
+        }
+        enumerator: "DEFAULT"
+        scalar_value: {
+            uint32_t: 0
+        }
+        enumerator: "PCM"
+        scalar_value: {
+            uint32_t: 0
+        }
+        enumerator: "MP3"
+        scalar_value: {
+            uint32_t: 16777216
+        }
+        enumerator: "AMR_NB"
+        scalar_value: {
+            uint32_t: 33554432
+        }
+        enumerator: "AMR_WB"
+        scalar_value: {
+            uint32_t: 50331648
+        }
+        enumerator: "AAC"
+        scalar_value: {
+            uint32_t: 67108864
+        }
+        enumerator: "HE_AAC_V1"
+        scalar_value: {
+            uint32_t: 83886080
+        }
+        enumerator: "HE_AAC_V2"
+        scalar_value: {
+            uint32_t: 100663296
+        }
+        enumerator: "VORBIS"
+        scalar_value: {
+            uint32_t: 117440512
+        }
+        enumerator: "OPUS"
+        scalar_value: {
+            uint32_t: 134217728
+        }
+        enumerator: "AC3"
+        scalar_value: {
+            uint32_t: 150994944
+        }
+        enumerator: "E_AC3"
+        scalar_value: {
+            uint32_t: 167772160
+        }
+        enumerator: "DTS"
+        scalar_value: {
+            uint32_t: 184549376
+        }
+        enumerator: "DTS_HD"
+        scalar_value: {
+            uint32_t: 201326592
+        }
+        enumerator: "IEC61937"
+        scalar_value: {
+            uint32_t: 218103808
+        }
+        enumerator: "DOLBY_TRUEHD"
+        scalar_value: {
+            uint32_t: 234881024
+        }
+        enumerator: "MAIN_MASK"
+        scalar_value: {
+            uint32_t: 4278190080
+        }
+        enumerator: "SUB_MASK"
+        scalar_value: {
+            uint32_t: 16777215
+        }
+        enumerator: "PCM_SUB_16_BIT"
+        scalar_value: {
+            uint32_t: 1
+        }
+        enumerator: "PCM_SUB_8_BIT"
+        scalar_value: {
+            uint32_t: 2
+        }
+        enumerator: "PCM_SUB_32_BIT"
+        scalar_value: {
+            uint32_t: 3
+        }
+        enumerator: "PCM_SUB_8_24_BIT"
+        scalar_value: {
+            uint32_t: 4
+        }
+        enumerator: "PCM_SUB_FLOAT"
+        scalar_value: {
+            uint32_t: 5
+        }
+        enumerator: "PCM_SUB_24_BIT_PACKED"
+        scalar_value: {
+            uint32_t: 6
+        }
+        enumerator: "MP3_SUB_NONE"
+        scalar_value: {
+            uint32_t: 0
+        }
+        enumerator: "AMR_SUB_NONE"
+        scalar_value: {
+            uint32_t: 0
+        }
+        enumerator: "AAC_SUB_MAIN"
+        scalar_value: {
+            uint32_t: 1
+        }
+        enumerator: "AAC_SUB_LC"
+        scalar_value: {
+            uint32_t: 2
+        }
+        enumerator: "AAC_SUB_SSR"
+        scalar_value: {
+            uint32_t: 4
+        }
+        enumerator: "AAC_SUB_LTP"
+        scalar_value: {
+            uint32_t: 8
+        }
+        enumerator: "AAC_SUB_HE_V1"
+        scalar_value: {
+            uint32_t: 16
+        }
+        enumerator: "AAC_SUB_SCALABLE"
+        scalar_value: {
+            uint32_t: 32
+        }
+        enumerator: "AAC_SUB_ERLC"
+        scalar_value: {
+            uint32_t: 64
+        }
+        enumerator: "AAC_SUB_LD"
+        scalar_value: {
+            uint32_t: 128
+        }
+        enumerator: "AAC_SUB_HE_V2"
+        scalar_value: {
+            uint32_t: 256
+        }
+        enumerator: "AAC_SUB_ELD"
+        scalar_value: {
+            uint32_t: 512
+        }
+        enumerator: "VORBIS_SUB_NONE"
+        scalar_value: {
+            uint32_t: 0
+        }
+        enumerator: "PCM_16_BIT"
+        scalar_value: {
+            uint32_t: 1
+        }
+        enumerator: "PCM_8_BIT"
+        scalar_value: {
+            uint32_t: 2
+        }
+        enumerator: "PCM_32_BIT"
+        scalar_value: {
+            uint32_t: 3
+        }
+        enumerator: "PCM_8_24_BIT"
+        scalar_value: {
+            uint32_t: 4
+        }
+        enumerator: "PCM_FLOAT"
+        scalar_value: {
+            uint32_t: 5
+        }
+        enumerator: "PCM_24_BIT_PACKED"
+        scalar_value: {
+            uint32_t: 6
+        }
+        enumerator: "AAC_MAIN"
+        scalar_value: {
+            uint32_t: 67108865
+        }
+        enumerator: "AAC_LC"
+        scalar_value: {
+            uint32_t: 67108866
+        }
+        enumerator: "AAC_SSR"
+        scalar_value: {
+            uint32_t: 67108868
+        }
+        enumerator: "AAC_LTP"
+        scalar_value: {
+            uint32_t: 67108872
+        }
+        enumerator: "AAC_HE_V1"
+        scalar_value: {
+            uint32_t: 67108880
+        }
+        enumerator: "AAC_SCALABLE"
+        scalar_value: {
+            uint32_t: 67108896
+        }
+        enumerator: "AAC_ERLC"
+        scalar_value: {
+            uint32_t: 67108928
+        }
+        enumerator: "AAC_LD"
+        scalar_value: {
+            uint32_t: 67108992
+        }
+        enumerator: "AAC_HE_V2"
+        scalar_value: {
+            uint32_t: 67109120
+        }
+        enumerator: "AAC_ELD"
+        scalar_value: {
+            uint32_t: 67109376
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::audio::common::V2_0::FixedChannelCount"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "FCC_2"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "FCC_8"
+        scalar_value: {
+            int32_t: 8
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::audio::common::V2_0::AudioChannelMask"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "uint32_t"
+
+        enumerator: "REPRESENTATION_POSITION"
+        scalar_value: {
+            uint32_t: 0
+        }
+        enumerator: "REPRESENTATION_INDEX"
+        scalar_value: {
+            uint32_t: 2
+        }
+        enumerator: "NONE"
+        scalar_value: {
+            uint32_t: 0
+        }
+        enumerator: "INVALID"
+        scalar_value: {
+            uint32_t: 3221225472
+        }
+        enumerator: "OUT_FRONT_LEFT"
+        scalar_value: {
+            uint32_t: 1
+        }
+        enumerator: "OUT_FRONT_RIGHT"
+        scalar_value: {
+            uint32_t: 2
+        }
+        enumerator: "OUT_FRONT_CENTER"
+        scalar_value: {
+            uint32_t: 4
+        }
+        enumerator: "OUT_LOW_FREQUENCY"
+        scalar_value: {
+            uint32_t: 8
+        }
+        enumerator: "OUT_BACK_LEFT"
+        scalar_value: {
+            uint32_t: 16
+        }
+        enumerator: "OUT_BACK_RIGHT"
+        scalar_value: {
+            uint32_t: 32
+        }
+        enumerator: "OUT_FRONT_LEFT_OF_CENTER"
+        scalar_value: {
+            uint32_t: 64
+        }
+        enumerator: "OUT_FRONT_RIGHT_OF_CENTER"
+        scalar_value: {
+            uint32_t: 128
+        }
+        enumerator: "OUT_BACK_CENTER"
+        scalar_value: {
+            uint32_t: 256
+        }
+        enumerator: "OUT_SIDE_LEFT"
+        scalar_value: {
+            uint32_t: 512
+        }
+        enumerator: "OUT_SIDE_RIGHT"
+        scalar_value: {
+            uint32_t: 1024
+        }
+        enumerator: "OUT_TOP_CENTER"
+        scalar_value: {
+            uint32_t: 2048
+        }
+        enumerator: "OUT_TOP_FRONT_LEFT"
+        scalar_value: {
+            uint32_t: 4096
+        }
+        enumerator: "OUT_TOP_FRONT_CENTER"
+        scalar_value: {
+            uint32_t: 8192
+        }
+        enumerator: "OUT_TOP_FRONT_RIGHT"
+        scalar_value: {
+            uint32_t: 16384
+        }
+        enumerator: "OUT_TOP_BACK_LEFT"
+        scalar_value: {
+            uint32_t: 32768
+        }
+        enumerator: "OUT_TOP_BACK_CENTER"
+        scalar_value: {
+            uint32_t: 65536
+        }
+        enumerator: "OUT_TOP_BACK_RIGHT"
+        scalar_value: {
+            uint32_t: 131072
+        }
+        enumerator: "OUT_MONO"
+        scalar_value: {
+            uint32_t: 1
+        }
+        enumerator: "OUT_STEREO"
+        scalar_value: {
+            uint32_t: 3
+        }
+        enumerator: "OUT_QUAD"
+        scalar_value: {
+            uint32_t: 51
+        }
+        enumerator: "OUT_QUAD_BACK"
+        scalar_value: {
+            uint32_t: 51
+        }
+        enumerator: "OUT_QUAD_SIDE"
+        scalar_value: {
+            uint32_t: 1539
+        }
+        enumerator: "OUT_5POINT1"
+        scalar_value: {
+            uint32_t: 63
+        }
+        enumerator: "OUT_5POINT1_BACK"
+        scalar_value: {
+            uint32_t: 63
+        }
+        enumerator: "OUT_5POINT1_SIDE"
+        scalar_value: {
+            uint32_t: 1551
+        }
+        enumerator: "OUT_7POINT1"
+        scalar_value: {
+            uint32_t: 1599
+        }
+        enumerator: "OUT_ALL"
+        scalar_value: {
+            uint32_t: 262143
+        }
+        enumerator: "IN_LEFT"
+        scalar_value: {
+            uint32_t: 4
+        }
+        enumerator: "IN_RIGHT"
+        scalar_value: {
+            uint32_t: 8
+        }
+        enumerator: "IN_FRONT"
+        scalar_value: {
+            uint32_t: 16
+        }
+        enumerator: "IN_BACK"
+        scalar_value: {
+            uint32_t: 32
+        }
+        enumerator: "IN_LEFT_PROCESSED"
+        scalar_value: {
+            uint32_t: 64
+        }
+        enumerator: "IN_RIGHT_PROCESSED"
+        scalar_value: {
+            uint32_t: 128
+        }
+        enumerator: "IN_FRONT_PROCESSED"
+        scalar_value: {
+            uint32_t: 256
+        }
+        enumerator: "IN_BACK_PROCESSED"
+        scalar_value: {
+            uint32_t: 512
+        }
+        enumerator: "IN_PRESSURE"
+        scalar_value: {
+            uint32_t: 1024
+        }
+        enumerator: "IN_X_AXIS"
+        scalar_value: {
+            uint32_t: 2048
+        }
+        enumerator: "IN_Y_AXIS"
+        scalar_value: {
+            uint32_t: 4096
+        }
+        enumerator: "IN_Z_AXIS"
+        scalar_value: {
+            uint32_t: 8192
+        }
+        enumerator: "IN_VOICE_UPLINK"
+        scalar_value: {
+            uint32_t: 16384
+        }
+        enumerator: "IN_VOICE_DNLINK"
+        scalar_value: {
+            uint32_t: 32768
+        }
+        enumerator: "IN_MONO"
+        scalar_value: {
+            uint32_t: 16
+        }
+        enumerator: "IN_STEREO"
+        scalar_value: {
+            uint32_t: 12
+        }
+        enumerator: "IN_FRONT_BACK"
+        scalar_value: {
+            uint32_t: 48
+        }
+        enumerator: "IN_ALL"
+        scalar_value: {
+            uint32_t: 65532
+        }
+        enumerator: "COUNT_MAX"
+        scalar_value: {
+            uint32_t: 30
+        }
+        enumerator: "INDEX_HDR"
+        scalar_value: {
+            uint32_t: 2147483648
+        }
+        enumerator: "INDEX_MASK_1"
+        scalar_value: {
+            uint32_t: 2147483649
+        }
+        enumerator: "INDEX_MASK_2"
+        scalar_value: {
+            uint32_t: 2147483651
+        }
+        enumerator: "INDEX_MASK_3"
+        scalar_value: {
+            uint32_t: 2147483655
+        }
+        enumerator: "INDEX_MASK_4"
+        scalar_value: {
+            uint32_t: 2147483663
+        }
+        enumerator: "INDEX_MASK_5"
+        scalar_value: {
+            uint32_t: 2147483679
+        }
+        enumerator: "INDEX_MASK_6"
+        scalar_value: {
+            uint32_t: 2147483711
+        }
+        enumerator: "INDEX_MASK_7"
+        scalar_value: {
+            uint32_t: 2147483775
+        }
+        enumerator: "INDEX_MASK_8"
+        scalar_value: {
+            uint32_t: 2147483903
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::audio::common::V2_0::AudioInterleave"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "LEFT"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "RIGHT"
+        scalar_value: {
+            int32_t: 1
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::audio::common::V2_0::AudioMode"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "INVALID"
+        scalar_value: {
+            int32_t: -2
+        }
+        enumerator: "CURRENT"
+        scalar_value: {
+            int32_t: -1
+        }
+        enumerator: "NORMAL"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "RINGTONE"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "IN_CALL"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "IN_COMMUNICATION"
+        scalar_value: {
+            int32_t: 3
+        }
+        enumerator: "CNT"
+        scalar_value: {
+            int32_t: 4
+        }
+        enumerator: "MAX"
+        scalar_value: {
+            int32_t: 3
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::audio::common::V2_0::AudioDevice"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "uint32_t"
+
+        enumerator: "NONE"
+        scalar_value: {
+            uint32_t: 0
+        }
+        enumerator: "BIT_IN"
+        scalar_value: {
+            uint32_t: 2147483648
+        }
+        enumerator: "BIT_DEFAULT"
+        scalar_value: {
+            uint32_t: 1073741824
+        }
+        enumerator: "OUT_EARPIECE"
+        scalar_value: {
+            uint32_t: 1
+        }
+        enumerator: "OUT_SPEAKER"
+        scalar_value: {
+            uint32_t: 2
+        }
+        enumerator: "OUT_WIRED_HEADSET"
+        scalar_value: {
+            uint32_t: 4
+        }
+        enumerator: "OUT_WIRED_HEADPHONE"
+        scalar_value: {
+            uint32_t: 8
+        }
+        enumerator: "OUT_BLUETOOTH_SCO"
+        scalar_value: {
+            uint32_t: 16
+        }
+        enumerator: "OUT_BLUETOOTH_SCO_HEADSET"
+        scalar_value: {
+            uint32_t: 32
+        }
+        enumerator: "OUT_BLUETOOTH_SCO_CARKIT"
+        scalar_value: {
+            uint32_t: 64
+        }
+        enumerator: "OUT_BLUETOOTH_A2DP"
+        scalar_value: {
+            uint32_t: 128
+        }
+        enumerator: "OUT_BLUETOOTH_A2DP_HEADPHONES"
+        scalar_value: {
+            uint32_t: 256
+        }
+        enumerator: "OUT_BLUETOOTH_A2DP_SPEAKER"
+        scalar_value: {
+            uint32_t: 512
+        }
+        enumerator: "OUT_AUX_DIGITAL"
+        scalar_value: {
+            uint32_t: 1024
+        }
+        enumerator: "OUT_HDMI"
+        scalar_value: {
+            uint32_t: 1024
+        }
+        enumerator: "OUT_ANLG_DOCK_HEADSET"
+        scalar_value: {
+            uint32_t: 2048
+        }
+        enumerator: "OUT_DGTL_DOCK_HEADSET"
+        scalar_value: {
+            uint32_t: 4096
+        }
+        enumerator: "OUT_USB_ACCESSORY"
+        scalar_value: {
+            uint32_t: 8192
+        }
+        enumerator: "OUT_USB_DEVICE"
+        scalar_value: {
+            uint32_t: 16384
+        }
+        enumerator: "OUT_REMOTE_SUBMIX"
+        scalar_value: {
+            uint32_t: 32768
+        }
+        enumerator: "OUT_TELEPHONY_TX"
+        scalar_value: {
+            uint32_t: 65536
+        }
+        enumerator: "OUT_LINE"
+        scalar_value: {
+            uint32_t: 131072
+        }
+        enumerator: "OUT_HDMI_ARC"
+        scalar_value: {
+            uint32_t: 262144
+        }
+        enumerator: "OUT_SPDIF"
+        scalar_value: {
+            uint32_t: 524288
+        }
+        enumerator: "OUT_FM"
+        scalar_value: {
+            uint32_t: 1048576
+        }
+        enumerator: "OUT_AUX_LINE"
+        scalar_value: {
+            uint32_t: 2097152
+        }
+        enumerator: "OUT_SPEAKER_SAFE"
+        scalar_value: {
+            uint32_t: 4194304
+        }
+        enumerator: "OUT_IP"
+        scalar_value: {
+            uint32_t: 8388608
+        }
+        enumerator: "OUT_BUS"
+        scalar_value: {
+            uint32_t: 16777216
+        }
+        enumerator: "OUT_DEFAULT"
+        scalar_value: {
+            uint32_t: 1073741824
+        }
+        enumerator: "OUT_ALL"
+        scalar_value: {
+            uint32_t: 1107296255
+        }
+        enumerator: "OUT_ALL_A2DP"
+        scalar_value: {
+            uint32_t: 896
+        }
+        enumerator: "OUT_ALL_SCO"
+        scalar_value: {
+            uint32_t: 112
+        }
+        enumerator: "OUT_ALL_USB"
+        scalar_value: {
+            uint32_t: 24576
+        }
+        enumerator: "IN_COMMUNICATION"
+        scalar_value: {
+            uint32_t: 2147483649
+        }
+        enumerator: "IN_AMBIENT"
+        scalar_value: {
+            uint32_t: 2147483650
+        }
+        enumerator: "IN_BUILTIN_MIC"
+        scalar_value: {
+            uint32_t: 2147483652
+        }
+        enumerator: "IN_BLUETOOTH_SCO_HEADSET"
+        scalar_value: {
+            uint32_t: 2147483656
+        }
+        enumerator: "IN_WIRED_HEADSET"
+        scalar_value: {
+            uint32_t: 2147483664
+        }
+        enumerator: "IN_AUX_DIGITAL"
+        scalar_value: {
+            uint32_t: 2147483680
+        }
+        enumerator: "IN_HDMI"
+        scalar_value: {
+            uint32_t: 2147483680
+        }
+        enumerator: "IN_VOICE_CALL"
+        scalar_value: {
+            uint32_t: 2147483712
+        }
+        enumerator: "IN_TELEPHONY_RX"
+        scalar_value: {
+            uint32_t: 2147483712
+        }
+        enumerator: "IN_BACK_MIC"
+        scalar_value: {
+            uint32_t: 2147483776
+        }
+        enumerator: "IN_REMOTE_SUBMIX"
+        scalar_value: {
+            uint32_t: 2147483904
+        }
+        enumerator: "IN_ANLG_DOCK_HEADSET"
+        scalar_value: {
+            uint32_t: 2147484160
+        }
+        enumerator: "IN_DGTL_DOCK_HEADSET"
+        scalar_value: {
+            uint32_t: 2147484672
+        }
+        enumerator: "IN_USB_ACCESSORY"
+        scalar_value: {
+            uint32_t: 2147485696
+        }
+        enumerator: "IN_USB_DEVICE"
+        scalar_value: {
+            uint32_t: 2147487744
+        }
+        enumerator: "IN_FM_TUNER"
+        scalar_value: {
+            uint32_t: 2147491840
+        }
+        enumerator: "IN_TV_TUNER"
+        scalar_value: {
+            uint32_t: 2147500032
+        }
+        enumerator: "IN_LINE"
+        scalar_value: {
+            uint32_t: 2147516416
+        }
+        enumerator: "IN_SPDIF"
+        scalar_value: {
+            uint32_t: 2147549184
+        }
+        enumerator: "IN_BLUETOOTH_A2DP"
+        scalar_value: {
+            uint32_t: 2147614720
+        }
+        enumerator: "IN_LOOPBACK"
+        scalar_value: {
+            uint32_t: 2147745792
+        }
+        enumerator: "IN_IP"
+        scalar_value: {
+            uint32_t: 2148007936
+        }
+        enumerator: "IN_BUS"
+        scalar_value: {
+            uint32_t: 2148532224
+        }
+        enumerator: "IN_DEFAULT"
+        scalar_value: {
+            uint32_t: 3221225472
+        }
+        enumerator: "IN_ALL"
+        scalar_value: {
+            uint32_t: 3223322623
+        }
+        enumerator: "IN_ALL_SCO"
+        scalar_value: {
+            uint32_t: 2147483656
+        }
+        enumerator: "IN_ALL_USB"
+        scalar_value: {
+            uint32_t: 2147489792
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::audio::common::V2_0::AudioOutputFlag"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "NONE"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "DIRECT"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "PRIMARY"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "FAST"
+        scalar_value: {
+            int32_t: 4
+        }
+        enumerator: "DEEP_BUFFER"
+        scalar_value: {
+            int32_t: 8
+        }
+        enumerator: "COMPRESS_OFFLOAD"
+        scalar_value: {
+            int32_t: 16
+        }
+        enumerator: "NON_BLOCKING"
+        scalar_value: {
+            int32_t: 32
+        }
+        enumerator: "HW_AV_SYNC"
+        scalar_value: {
+            int32_t: 64
+        }
+        enumerator: "TTS"
+        scalar_value: {
+            int32_t: 128
+        }
+        enumerator: "RAW"
+        scalar_value: {
+            int32_t: 256
+        }
+        enumerator: "SYNC"
+        scalar_value: {
+            int32_t: 512
+        }
+        enumerator: "IEC958_NONAUDIO"
+        scalar_value: {
+            int32_t: 1024
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::audio::common::V2_0::AudioInputFlag"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "NONE"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "FAST"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "HW_HOTWORD"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "RAW"
+        scalar_value: {
+            int32_t: 4
+        }
+        enumerator: "SYNC"
+        scalar_value: {
+            int32_t: 8
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::audio::common::V2_0::AudioOffloadInfo"
+    type: TYPE_STRUCT
+    struct_value: {
+        name: "sampleRateHz"
+        type: TYPE_SCALAR
+        scalar_type: "uint32_t"
+    }
+    struct_value: {
+        name: "channelMask"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::audio::common::V2_0::AudioChannelMask"
+    }
+    struct_value: {
+        name: "format"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::audio::common::V2_0::AudioFormat"
+    }
+    struct_value: {
+        name: "streamType"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::audio::common::V2_0::AudioStreamType"
+    }
+    struct_value: {
+        name: "bitRatePerSecond"
+        type: TYPE_SCALAR
+        scalar_type: "uint32_t"
+    }
+    struct_value: {
+        name: "durationMicroseconds"
+        type: TYPE_SCALAR
+        scalar_type: "int64_t"
+    }
+    struct_value: {
+        name: "hasVideo"
+        type: TYPE_SCALAR
+        scalar_type: "bool_t"
+    }
+    struct_value: {
+        name: "isStreaming"
+        type: TYPE_SCALAR
+        scalar_type: "bool_t"
+    }
+}
+
+attribute: {
+    name: "::android::hardware::audio::common::V2_0::AudioConfig"
+    type: TYPE_STRUCT
+    struct_value: {
+        name: "sampleRateHz"
+        type: TYPE_SCALAR
+        scalar_type: "uint32_t"
+    }
+    struct_value: {
+        name: "channelMask"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::audio::common::V2_0::AudioChannelMask"
+    }
+    struct_value: {
+        name: "format"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::audio::common::V2_0::AudioFormat"
+    }
+    struct_value: {
+        name: "offloadInfo"
+        type: TYPE_STRUCT
+        predefined_type: "::android::hardware::audio::common::V2_0::AudioOffloadInfo"
+    }
+    struct_value: {
+        name: "frameCount"
+        type: TYPE_SCALAR
+        scalar_type: "uint64_t"
+    }
+}
+
+attribute: {
+    name: "::android::hardware::audio::common::V2_0::AudioGainMode"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "uint32_t"
+
+        enumerator: "JOINT"
+        scalar_value: {
+            uint32_t: 1
+        }
+        enumerator: "CHANNELS"
+        scalar_value: {
+            uint32_t: 2
+        }
+        enumerator: "RAMP"
+        scalar_value: {
+            uint32_t: 4
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::audio::common::V2_0::AudioGain"
+    type: TYPE_STRUCT
+    struct_value: {
+        name: "mode"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::audio::common::V2_0::AudioGainMode"
+    }
+    struct_value: {
+        name: "channelMask"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::audio::common::V2_0::AudioChannelMask"
+    }
+    struct_value: {
+        name: "minValue"
+        type: TYPE_SCALAR
+        scalar_type: "int32_t"
+    }
+    struct_value: {
+        name: "maxValue"
+        type: TYPE_SCALAR
+        scalar_type: "int32_t"
+    }
+    struct_value: {
+        name: "defaultValue"
+        type: TYPE_SCALAR
+        scalar_type: "int32_t"
+    }
+    struct_value: {
+        name: "stepValue"
+        type: TYPE_SCALAR
+        scalar_type: "uint32_t"
+    }
+    struct_value: {
+        name: "minRampMs"
+        type: TYPE_SCALAR
+        scalar_type: "uint32_t"
+    }
+    struct_value: {
+        name: "maxRampMs"
+        type: TYPE_SCALAR
+        scalar_type: "uint32_t"
+    }
+}
+
+attribute: {
+    name: "::android::hardware::audio::common::V2_0::AudioGainConfig"
+    type: TYPE_STRUCT
+    struct_value: {
+        name: "index"
+        type: TYPE_SCALAR
+        scalar_type: "int32_t"
+    }
+    struct_value: {
+        name: "mode"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::audio::common::V2_0::AudioGainMode"
+    }
+    struct_value: {
+        name: "channelMask"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::audio::common::V2_0::AudioChannelMask"
+    }
+    struct_value: {
+        name: "values"
+        type: TYPE_ARRAY
+        vector_value: {
+            vector_size: 32
+            type: TYPE_SCALAR
+            scalar_type: "int32_t"
+        }
+    }
+    struct_value: {
+        name: "rampDurationMs"
+        type: TYPE_SCALAR
+        scalar_type: "uint32_t"
+    }
+}
+
+attribute: {
+    name: "::android::hardware::audio::common::V2_0::AudioPortRole"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "NONE"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "SOURCE"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "SINK"
+        scalar_value: {
+            int32_t: 2
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::audio::common::V2_0::AudioPortType"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "NONE"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "DEVICE"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "MIX"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "SESSION"
+        scalar_value: {
+            int32_t: 3
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::audio::common::V2_0::AudioPortConfigDeviceExt"
+    type: TYPE_STRUCT
+    struct_value: {
+        name: "hwModule"
+        type: TYPE_SCALAR
+        scalar_type: "int32_t"
+    }
+    struct_value: {
+        name: "type"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::audio::common::V2_0::AudioDevice"
+    }
+    struct_value: {
+        name: "address"
+        type: TYPE_ARRAY
+        vector_value: {
+            vector_size: 32
+            type: TYPE_SCALAR
+            scalar_type: "uint8_t"
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::audio::common::V2_0::AudioPortConfigSessionExt"
+    type: TYPE_STRUCT
+    struct_value: {
+        name: "session"
+        type: TYPE_SCALAR
+        scalar_type: "int32_t"
+    }
+}
+
+attribute: {
+    name: "::android::hardware::audio::common::V2_0::AudioPortConfigMask"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "uint32_t"
+
+        enumerator: "SAMPLE_RATE"
+        scalar_value: {
+            uint32_t: 1
+        }
+        enumerator: "CHANNEL_MASK"
+        scalar_value: {
+            uint32_t: 2
+        }
+        enumerator: "FORMAT"
+        scalar_value: {
+            uint32_t: 4
+        }
+        enumerator: "GAIN"
+        scalar_value: {
+            uint32_t: 8
+        }
+        enumerator: "ALL"
+        scalar_value: {
+            uint32_t: 15
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::audio::common::V2_0::AudioPortConfig"
+    type: TYPE_STRUCT
+    sub_struct: {
+        name: "::android::hardware::audio::common::V2_0::AudioPortConfig::Ext"
+        type: TYPE_UNION
+        sub_union: {
+            name: "::android::hardware::audio::common::V2_0::AudioPortConfig::Ext::AudioPortConfigMixExt"
+            type: TYPE_STRUCT
+            sub_struct: {
+                name: "::android::hardware::audio::common::V2_0::AudioPortConfig::Ext::AudioPortConfigMixExt::UseCase"
+                type: TYPE_UNION
+                union_value: {
+                    name: "stream"
+                    type: TYPE_ENUM
+                    predefined_type: "::android::hardware::audio::common::V2_0::AudioStreamType"
+                }
+                union_value: {
+                    name: "source"
+                    type: TYPE_ENUM
+                    predefined_type: "::android::hardware::audio::common::V2_0::AudioSource"
+                }
+            }
+            struct_value: {
+                name: "hwModule"
+                type: TYPE_SCALAR
+                scalar_type: "int32_t"
+            }
+            struct_value: {
+                name: "ioHandle"
+                type: TYPE_SCALAR
+                scalar_type: "int32_t"
+            }
+            struct_value: {
+                name: "useCase"
+                type: TYPE_UNION
+                predefined_type: "::android::hardware::audio::common::V2_0::AudioPortConfig::Ext::AudioPortConfigMixExt::UseCase"
+            }
+        }
+        union_value: {
+            name: "device"
+            type: TYPE_STRUCT
+            predefined_type: "::android::hardware::audio::common::V2_0::AudioPortConfigDeviceExt"
+        }
+        union_value: {
+            name: "mix"
+            type: TYPE_STRUCT
+            predefined_type: "::android::hardware::audio::common::V2_0::AudioPortConfig::Ext::AudioPortConfigMixExt"
+        }
+        union_value: {
+            name: "session"
+            type: TYPE_STRUCT
+            predefined_type: "::android::hardware::audio::common::V2_0::AudioPortConfigSessionExt"
+        }
+    }
+    struct_value: {
+        name: "id"
+        type: TYPE_SCALAR
+        scalar_type: "int32_t"
+    }
+    struct_value: {
+        name: "configMask"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::audio::common::V2_0::AudioPortConfigMask"
+    }
+    struct_value: {
+        name: "sampleRateHz"
+        type: TYPE_SCALAR
+        scalar_type: "uint32_t"
+    }
+    struct_value: {
+        name: "channelMask"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::audio::common::V2_0::AudioChannelMask"
+    }
+    struct_value: {
+        name: "format"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::audio::common::V2_0::AudioFormat"
+    }
+    struct_value: {
+        name: "gain"
+        type: TYPE_STRUCT
+        predefined_type: "::android::hardware::audio::common::V2_0::AudioGainConfig"
+    }
+    struct_value: {
+        name: "type"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::audio::common::V2_0::AudioPortType"
+    }
+    struct_value: {
+        name: "role"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::audio::common::V2_0::AudioPortRole"
+    }
+    struct_value: {
+        name: "ext"
+        type: TYPE_UNION
+        predefined_type: "::android::hardware::audio::common::V2_0::AudioPortConfig::Ext"
+    }
+}
+
+attribute: {
+    name: "::android::hardware::audio::common::V2_0::AudioPortDeviceExt"
+    type: TYPE_STRUCT
+    struct_value: {
+        name: "hwModule"
+        type: TYPE_SCALAR
+        scalar_type: "int32_t"
+    }
+    struct_value: {
+        name: "type"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::audio::common::V2_0::AudioDevice"
+    }
+    struct_value: {
+        name: "address"
+        type: TYPE_ARRAY
+        vector_value: {
+            vector_size: 32
+            type: TYPE_SCALAR
+            scalar_type: "uint8_t"
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::audio::common::V2_0::AudioMixLatencyClass"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "LOW"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "NORMAL"
+        scalar_value: {
+            int32_t: 1
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::audio::common::V2_0::AudioPortMixExt"
+    type: TYPE_STRUCT
+    struct_value: {
+        name: "hwModule"
+        type: TYPE_SCALAR
+        scalar_type: "int32_t"
+    }
+    struct_value: {
+        name: "ioHandle"
+        type: TYPE_SCALAR
+        scalar_type: "int32_t"
+    }
+    struct_value: {
+        name: "latencyClass"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::audio::common::V2_0::AudioMixLatencyClass"
+    }
+}
+
+attribute: {
+    name: "::android::hardware::audio::common::V2_0::AudioPortSessionExt"
+    type: TYPE_STRUCT
+    struct_value: {
+        name: "session"
+        type: TYPE_SCALAR
+        scalar_type: "int32_t"
+    }
+}
+
+attribute: {
+    name: "::android::hardware::audio::common::V2_0::AudioPort"
+    type: TYPE_STRUCT
+    sub_struct: {
+        name: "::android::hardware::audio::common::V2_0::AudioPort::Ext"
+        type: TYPE_UNION
+        union_value: {
+            name: "device"
+            type: TYPE_STRUCT
+            predefined_type: "::android::hardware::audio::common::V2_0::AudioPortDeviceExt"
+        }
+        union_value: {
+            name: "mix"
+            type: TYPE_STRUCT
+            predefined_type: "::android::hardware::audio::common::V2_0::AudioPortMixExt"
+        }
+        union_value: {
+            name: "session"
+            type: TYPE_STRUCT
+            predefined_type: "::android::hardware::audio::common::V2_0::AudioPortSessionExt"
+        }
+    }
+    struct_value: {
+        name: "id"
+        type: TYPE_SCALAR
+        scalar_type: "int32_t"
+    }
+    struct_value: {
+        name: "role"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::audio::common::V2_0::AudioPortRole"
+    }
+    struct_value: {
+        name: "name"
+        type: TYPE_STRING
+    }
+    struct_value: {
+        name: "sampleRates"
+        type: TYPE_VECTOR
+        vector_value: {
+            type: TYPE_SCALAR
+            scalar_type: "uint32_t"
+        }
+    }
+    struct_value: {
+        name: "channelMasks"
+        type: TYPE_VECTOR
+        vector_value: {
+            type: TYPE_ENUM
+            predefined_type: "::android::hardware::audio::common::V2_0::AudioChannelMask"
+        }
+    }
+    struct_value: {
+        name: "formats"
+        type: TYPE_VECTOR
+        vector_value: {
+            type: TYPE_ENUM
+            predefined_type: "::android::hardware::audio::common::V2_0::AudioFormat"
+        }
+    }
+    struct_value: {
+        name: "gains"
+        type: TYPE_VECTOR
+        vector_value: {
+            type: TYPE_STRUCT
+            predefined_type: "::android::hardware::audio::common::V2_0::AudioGain"
+        }
+    }
+    struct_value: {
+        name: "activeConfig"
+        type: TYPE_STRUCT
+        predefined_type: "::android::hardware::audio::common::V2_0::AudioPortConfig"
+    }
+    struct_value: {
+        name: "type"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::audio::common::V2_0::AudioPortType"
+    }
+    struct_value: {
+        name: "ext"
+        type: TYPE_UNION
+        predefined_type: "::android::hardware::audio::common::V2_0::AudioPort::Ext"
+    }
+}
+
+attribute: {
+    name: "::android::hardware::tv::input::V1_0::Result"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "OK"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "UNKNOWN"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "NO_RESOURCE"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "INVALID_ARGUMENTS"
+        scalar_value: {
+            int32_t: 3
+        }
+        enumerator: "INVALID_STATE"
+        scalar_value: {
+            int32_t: 4
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::tv::input::V1_0::TvInputType"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "OTHER"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "TUNER"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "COMPOSITE"
+        scalar_value: {
+            int32_t: 3
+        }
+        enumerator: "SVIDEO"
+        scalar_value: {
+            int32_t: 4
+        }
+        enumerator: "SCART"
+        scalar_value: {
+            int32_t: 5
+        }
+        enumerator: "COMPONENT"
+        scalar_value: {
+            int32_t: 6
+        }
+        enumerator: "VGA"
+        scalar_value: {
+            int32_t: 7
+        }
+        enumerator: "DVI"
+        scalar_value: {
+            int32_t: 8
+        }
+        enumerator: "HDMI"
+        scalar_value: {
+            int32_t: 9
+        }
+        enumerator: "DISPLAY_PORT"
+        scalar_value: {
+            int32_t: 10
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::tv::input::V1_0::TvInputDeviceInfo"
+    type: TYPE_STRUCT
+    struct_value: {
+        name: "deviceId"
+        type: TYPE_SCALAR
+        scalar_type: "int32_t"
+    }
+    struct_value: {
+        name: "type"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::tv::input::V1_0::TvInputType"
+    }
+    struct_value: {
+        name: "portId"
+        type: TYPE_SCALAR
+        scalar_type: "uint32_t"
+    }
+    struct_value: {
+        name: "audioType"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::audio::common::V2_0::AudioDevice"
+    }
+    struct_value: {
+        name: "audioAddress"
+        type: TYPE_ARRAY
+        vector_value: {
+            vector_size: 32
+            type: TYPE_SCALAR
+            scalar_type: "uint8_t"
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::tv::input::V1_0::TvInputEventType"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "DEVICE_AVAILABLE"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "DEVICE_UNAVAILABLE"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "STREAM_CONFIGURATIONS_CHANGED"
+        scalar_value: {
+            int32_t: 3
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::tv::input::V1_0::TvInputEvent"
+    type: TYPE_STRUCT
+    struct_value: {
+        name: "type"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::tv::input::V1_0::TvInputEventType"
+    }
+    struct_value: {
+        name: "deviceInfo"
+        type: TYPE_STRUCT
+        predefined_type: "::android::hardware::tv::input::V1_0::TvInputDeviceInfo"
+    }
+}
+
+attribute: {
+    name: "::android::hardware::tv::input::V1_0::TvStreamConfig"
+    type: TYPE_STRUCT
+    struct_value: {
+        name: "streamId"
+        type: TYPE_SCALAR
+        scalar_type: "int32_t"
+    }
+    struct_value: {
+        name: "maxVideoWidth"
+        type: TYPE_SCALAR
+        scalar_type: "uint32_t"
+    }
+    struct_value: {
+        name: "maxVideoHeight"
+        type: TYPE_SCALAR
+        scalar_type: "uint32_t"
+    }
+}
+
diff --git a/vehicle/2.0/types.hal b/vehicle/2.0/types.hal
index b19621c..0e0e3ea 100644
--- a/vehicle/2.0/types.hal
+++ b/vehicle/2.0/types.hal
@@ -2073,7 +2073,7 @@
 
     METER_PER_SEC  = 0x01,
     RPM            = 0x02,
-    HZ             = 0x03,
+    HERTZ          = 0x03,
     PERCENTILE     = 0x10,
     MILLIMETER     = 0x20,
     METER          = 0x21,
@@ -2430,7 +2430,7 @@
 };
 
 
-enum SubscribeFlags {
+enum SubscribeFlags : int32_t {
   UNDEFINED = 0x0,
 
   /*
@@ -2477,7 +2477,7 @@
 };
 
 /* Error codes used in vehicle HAL interface. */
-enum StatusCode {
+enum StatusCode : int32_t {
   OK = 0,
 
   /* Try again. */
diff --git a/vehicle/2.0/vts/Android.mk b/vehicle/2.0/vts/Android.mk
new file mode 100644
index 0000000..8370067
--- /dev/null
+++ b/vehicle/2.0/vts/Android.mk
@@ -0,0 +1,120 @@
+#
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+# build VTS driver for Vehicle v2.0.
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := libvts_driver_hidl_vehicle@2.0
+
+LOCAL_SRC_FILES := \
+  Vehicle.vts \
+  VehicleCallback.vts \
+  types.vts \
+
+LOCAL_SHARED_LIBRARIES += \
+  android.hardware.vehicle@2.0 \
+  libbase \
+  libutils \
+  libcutils \
+  liblog \
+  libhidlbase \
+  libhidltransport \
+  libhwbinder \
+  libprotobuf-cpp-full \
+  libvts_common \
+  libvts_datatype \
+  libvts_measurement \
+  libvts_multidevice_proto \
+
+LOCAL_PROTOC_OPTIMIZE_TYPE := full
+
+LOCAL_MULTILIB := both
+
+include $(BUILD_SHARED_LIBRARY)
+
+
+# build profiler for Vehicle.
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := libvts_profiler_hidl_vehicle@2.0
+
+LOCAL_SRC_FILES := \
+  Vehicle.vts \
+  types.vts \
+
+LOCAL_C_INCLUDES += \
+  test/vts/drivers/libprofiling \
+
+LOCAL_VTS_MODE := PROFILER
+
+LOCAL_SHARED_LIBRARIES := \
+  android.hardware.vehicle@2.0 \
+  libbase \
+  libcutils \
+  liblog \
+  libhidlbase \
+  libhidltransport \
+  libhwbinder \
+  libprotobuf-cpp-full \
+  libvts_common \
+  libvts_multidevice_proto \
+  libvts_profiling \
+  libutils \
+
+LOCAL_PROTOC_OPTIMIZE_TYPE := full
+
+LOCAL_MULTILIB := both
+
+include $(BUILD_SHARED_LIBRARY)
+
+
+# build profiler for VehicleCallback.
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := libvts_profiler_hidl_vehicle_callback_@2.0
+
+LOCAL_SRC_FILES := \
+  Vehicle.vts \
+  types.vts \
+
+LOCAL_C_INCLUDES += \
+  test/vts/drivers/libprofiling \
+
+LOCAL_VTS_MODE := PROFILER
+
+LOCAL_SHARED_LIBRARIES := \
+  android.hardware.vehicle@2.0 \
+  libbase \
+  libcutils \
+  liblog \
+  libhidlbase \
+  libhidltransport \
+  libhwbinder \
+  libprotobuf-cpp-full \
+  libvts_common \
+  libvts_multidevice_proto \
+  libvts_profiling \
+  libutils \
+
+LOCAL_PROTOC_OPTIMIZE_TYPE := full
+
+LOCAL_MULTILIB := both
+
+include $(BUILD_SHARED_LIBRARY)
+
+include $(call all-makefiles-under,$(LOCAL_PATH))
\ No newline at end of file
diff --git a/vehicle/2.0/vts/Vehicle.vts b/vehicle/2.0/vts/Vehicle.vts
new file mode 100644
index 0000000..7fecfa9
--- /dev/null
+++ b/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.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
new file mode 100644
index 0000000..b5ee152
--- /dev/null
+++ b/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.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/vehicle/2.0/vts/types.vts b/vehicle/2.0/vts/types.vts
new file mode 100644
index 0000000..fc63add
--- /dev/null
+++ b/vehicle/2.0/vts/types.vts
@@ -0,0 +1,1821 @@
+component_class: HAL_HIDL
+component_type_version: 2.0
+component_name: "types"
+
+package: "android.hardware.vehicle"
+
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehiclePropertyType"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "STRING"
+        scalar_value: {
+            int32_t: 1048576
+        }
+        enumerator: "BOOLEAN"
+        scalar_value: {
+            int32_t: 2097152
+        }
+        enumerator: "INT32"
+        scalar_value: {
+            int32_t: 4194304
+        }
+        enumerator: "INT32_VEC"
+        scalar_value: {
+            int32_t: 4259840
+        }
+        enumerator: "INT64"
+        scalar_value: {
+            int32_t: 5242880
+        }
+        enumerator: "FLOAT"
+        scalar_value: {
+            int32_t: 6291456
+        }
+        enumerator: "FLOAT_VEC"
+        scalar_value: {
+            int32_t: 6356992
+        }
+        enumerator: "BYTES"
+        scalar_value: {
+            int32_t: 7340032
+        }
+        enumerator: "MASK"
+        scalar_value: {
+            int32_t: 16711680
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleArea"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "GLOBAL"
+        scalar_value: {
+            int32_t: 16777216
+        }
+        enumerator: "ZONE"
+        scalar_value: {
+            int32_t: 33554432
+        }
+        enumerator: "WINDOW"
+        scalar_value: {
+            int32_t: 50331648
+        }
+        enumerator: "MIRROR"
+        scalar_value: {
+            int32_t: 67108864
+        }
+        enumerator: "SEAT"
+        scalar_value: {
+            int32_t: 83886080
+        }
+        enumerator: "DOOR"
+        scalar_value: {
+            int32_t: 100663296
+        }
+        enumerator: "MASK"
+        scalar_value: {
+            int32_t: 251658240
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehiclePropertyGroup"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "SYSTEM"
+        scalar_value: {
+            int32_t: 268435456
+        }
+        enumerator: "VENDOR"
+        scalar_value: {
+            int32_t: 536870912
+        }
+        enumerator: "MASK"
+        scalar_value: {
+            int32_t: -268435456
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleProperty"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "INVALID"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "INFO_VIN"
+        scalar_value: {
+            int32_t: 286261504
+        }
+        enumerator: "INFO_MAKE"
+        scalar_value: {
+            int32_t: 286261505
+        }
+        enumerator: "INFO_MODEL"
+        scalar_value: {
+            int32_t: 286261506
+        }
+        enumerator: "INFO_MODEL_YEAR"
+        scalar_value: {
+            int32_t: 289407235
+        }
+        enumerator: "INFO_FUEL_CAPACITY"
+        scalar_value: {
+            int32_t: 291504388
+        }
+        enumerator: "PERF_ODOMETER"
+        scalar_value: {
+            int32_t: 291504644
+        }
+        enumerator: "PERF_VEHICLE_SPEED"
+        scalar_value: {
+            int32_t: 291504647
+        }
+        enumerator: "ENGINE_COOLANT_TEMP"
+        scalar_value: {
+            int32_t: 291504897
+        }
+        enumerator: "ENGINE_OIL_TEMP"
+        scalar_value: {
+            int32_t: 291504900
+        }
+        enumerator: "ENGINE_RPM"
+        scalar_value: {
+            int32_t: 291504901
+        }
+        enumerator: "GEAR_SELECTION"
+        scalar_value: {
+            int32_t: 289408000
+        }
+        enumerator: "CURRENT_GEAR"
+        scalar_value: {
+            int32_t: 289408001
+        }
+        enumerator: "PARKING_BRAKE_ON"
+        scalar_value: {
+            int32_t: 287310850
+        }
+        enumerator: "DRIVING_STATUS"
+        scalar_value: {
+            int32_t: 289408004
+        }
+        enumerator: "FUEL_LEVEL_LOW"
+        scalar_value: {
+            int32_t: 287310853
+        }
+        enumerator: "NIGHT_MODE"
+        scalar_value: {
+            int32_t: 287310855
+        }
+        enumerator: "TURN_SIGNAL_STATE"
+        scalar_value: {
+            int32_t: 289408008
+        }
+        enumerator: "HVAC_FAN_SPEED"
+        scalar_value: {
+            int32_t: 306185472
+        }
+        enumerator: "HVAC_FAN_DIRECTION"
+        scalar_value: {
+            int32_t: 306185473
+        }
+        enumerator: "HVAC_TEMPERATURE_CURRENT"
+        scalar_value: {
+            int32_t: 308282626
+        }
+        enumerator: "HVAC_TEMPERATURE_SET"
+        scalar_value: {
+            int32_t: 308282627
+        }
+        enumerator: "HVAC_DEFROSTER"
+        scalar_value: {
+            int32_t: 320865540
+        }
+        enumerator: "HVAC_AC_ON"
+        scalar_value: {
+            int32_t: 304088325
+        }
+        enumerator: "HVAC_MAX_AC_ON"
+        scalar_value: {
+            int32_t: 304088326
+        }
+        enumerator: "HVAC_MAX_DEFROST_ON"
+        scalar_value: {
+            int32_t: 304088327
+        }
+        enumerator: "HVAC_RECIRC_ON"
+        scalar_value: {
+            int32_t: 304088328
+        }
+        enumerator: "HVAC_DUAL_ON"
+        scalar_value: {
+            int32_t: 304088329
+        }
+        enumerator: "HVAC_AUTO_ON"
+        scalar_value: {
+            int32_t: 304088330
+        }
+        enumerator: "HVAC_SEAT_TEMPERATURE"
+        scalar_value: {
+            int32_t: 356517131
+        }
+        enumerator: "HVAC_SIDE_MIRROR_HEAT"
+        scalar_value: {
+            int32_t: 339739916
+        }
+        enumerator: "HVAC_STEERING_WHEEL_TEMP"
+        scalar_value: {
+            int32_t: 289408269
+        }
+        enumerator: "HVAC_TEMPERATURE_UNITS"
+        scalar_value: {
+            int32_t: 306185486
+        }
+        enumerator: "HVAC_ACTUAL_FAN_SPEED_RPM"
+        scalar_value: {
+            int32_t: 306185487
+        }
+        enumerator: "HVAC_FAN_DIRECTION_AVAILABLE"
+        scalar_value: {
+            int32_t: 306185489
+        }
+        enumerator: "HVAC_POWER_ON"
+        scalar_value: {
+            int32_t: 304088336
+        }
+        enumerator: "ENV_OUTSIDE_TEMPERATURE"
+        scalar_value: {
+            int32_t: 291505923
+        }
+        enumerator: "ENV_CABIN_TEMPERATURE"
+        scalar_value: {
+            int32_t: 291505924
+        }
+        enumerator: "RADIO_PRESET"
+        scalar_value: {
+            int32_t: 289474561
+        }
+        enumerator: "AUDIO_FOCUS"
+        scalar_value: {
+            int32_t: 289474816
+        }
+        enumerator: "AUDIO_VOLUME"
+        scalar_value: {
+            int32_t: 289474817
+        }
+        enumerator: "AUDIO_VOLUME_LIMIT"
+        scalar_value: {
+            int32_t: 289474818
+        }
+        enumerator: "AUDIO_ROUTING_POLICY"
+        scalar_value: {
+            int32_t: 289474819
+        }
+        enumerator: "AUDIO_HW_VARIANT"
+        scalar_value: {
+            int32_t: 289409284
+        }
+        enumerator: "AUDIO_EXT_ROUTING_HINT"
+        scalar_value: {
+            int32_t: 289474821
+        }
+        enumerator: "AP_POWER_STATE"
+        scalar_value: {
+            int32_t: 2560
+        }
+        enumerator: "DISPLAY_BRIGHTNESS"
+        scalar_value: {
+            int32_t: 289409537
+        }
+        enumerator: "AP_POWER_BOOTUP_REASON"
+        scalar_value: {
+            int32_t: 289409538
+        }
+        enumerator: "HW_KEY_INPUT"
+        scalar_value: {
+            int32_t: 289475088
+        }
+        enumerator: "INSTRUMENT_CLUSTER_INFO"
+        scalar_value: {
+            int32_t: 289475104
+        }
+        enumerator: "UNIX_TIME"
+        scalar_value: {
+            int32_t: 290458160
+        }
+        enumerator: "CURRENT_TIME_IN_SECONDS"
+        scalar_value: {
+            int32_t: 289409585
+        }
+        enumerator: "DOOR_POS"
+        scalar_value: {
+            int32_t: 373295872
+        }
+        enumerator: "DOOR_MOVE"
+        scalar_value: {
+            int32_t: 373295873
+        }
+        enumerator: "DOOR_LOCK"
+        scalar_value: {
+            int32_t: 371198722
+        }
+        enumerator: "MIRROR_Z_POS"
+        scalar_value: {
+            int32_t: 339741504
+        }
+        enumerator: "MIRROR_Z_MOVE"
+        scalar_value: {
+            int32_t: 339741505
+        }
+        enumerator: "MIRROR_Y_POS"
+        scalar_value: {
+            int32_t: 339741506
+        }
+        enumerator: "MIRROR_Y_MOVE"
+        scalar_value: {
+            int32_t: 339741507
+        }
+        enumerator: "MIRROR_LOCK"
+        scalar_value: {
+            int32_t: 287312708
+        }
+        enumerator: "MIRROR_FOLD"
+        scalar_value: {
+            int32_t: 287312709
+        }
+        enumerator: "SEAT_MEMORY_SELECT"
+        scalar_value: {
+            int32_t: 356518784
+        }
+        enumerator: "SEAT_MEMORY_SET"
+        scalar_value: {
+            int32_t: 356518785
+        }
+        enumerator: "SEAT_BELT_BUCKLED"
+        scalar_value: {
+            int32_t: 354421634
+        }
+        enumerator: "SEAT_BELT_HEIGHT_POS"
+        scalar_value: {
+            int32_t: 356518787
+        }
+        enumerator: "SEAT_BELT_HEIGHT_MOVE"
+        scalar_value: {
+            int32_t: 356518788
+        }
+        enumerator: "SEAT_FORE_AFT_POS"
+        scalar_value: {
+            int32_t: 356518789
+        }
+        enumerator: "SEAT_FORE_AFT_MOVE"
+        scalar_value: {
+            int32_t: 356518790
+        }
+        enumerator: "SEAT_BACKREST_ANGLE_1_POS"
+        scalar_value: {
+            int32_t: 356518791
+        }
+        enumerator: "SEAT_BACKREST_ANGLE_1_MOVE"
+        scalar_value: {
+            int32_t: 356518792
+        }
+        enumerator: "SEAT_BACKREST_ANGLE_2_POS"
+        scalar_value: {
+            int32_t: 356518793
+        }
+        enumerator: "SEAT_BACKREST_ANGLE_2_MOVE"
+        scalar_value: {
+            int32_t: 356518794
+        }
+        enumerator: "SEAT_HEIGHT_POS"
+        scalar_value: {
+            int32_t: 356518795
+        }
+        enumerator: "SEAT_HEIGHT_MOVE"
+        scalar_value: {
+            int32_t: 356518796
+        }
+        enumerator: "SEAT_DEPTH_POS"
+        scalar_value: {
+            int32_t: 356518797
+        }
+        enumerator: "SEAT_DEPTH_MOVE"
+        scalar_value: {
+            int32_t: 356518798
+        }
+        enumerator: "SEAT_TILT_POS"
+        scalar_value: {
+            int32_t: 356518799
+        }
+        enumerator: "SEAT_TILT_MOVE"
+        scalar_value: {
+            int32_t: 356518800
+        }
+        enumerator: "SEAT_LUMBAR_FORE_AFT_POS"
+        scalar_value: {
+            int32_t: 356518801
+        }
+        enumerator: "SEAT_LUMBAR_FORE_AFT_MOVE"
+        scalar_value: {
+            int32_t: 356518802
+        }
+        enumerator: "SEAT_LUMBAR_SIDE_SUPPORT_POS"
+        scalar_value: {
+            int32_t: 356518803
+        }
+        enumerator: "SEAT_LUMBAR_SIDE_SUPPORT_MOVE"
+        scalar_value: {
+            int32_t: 356518804
+        }
+        enumerator: "SEAT_HEADREST_HEIGHT_POS"
+        scalar_value: {
+            int32_t: 289409941
+        }
+        enumerator: "SEAT_HEADREST_HEIGHT_MOVE"
+        scalar_value: {
+            int32_t: 356518806
+        }
+        enumerator: "SEAT_HEADREST_ANGLE_POS"
+        scalar_value: {
+            int32_t: 356518807
+        }
+        enumerator: "SEAT_HEADREST_ANGLE_MOVE"
+        scalar_value: {
+            int32_t: 356518808
+        }
+        enumerator: "SEAT_HEADREST_FORE_AFT_POS"
+        scalar_value: {
+            int32_t: 356518809
+        }
+        enumerator: "SEAT_HEADREST_FORE_AFT_MOVE"
+        scalar_value: {
+            int32_t: 356518810
+        }
+        enumerator: "WINDOW_POS"
+        scalar_value: {
+            int32_t: 289409984
+        }
+        enumerator: "WINDOW_MOVE"
+        scalar_value: {
+            int32_t: 289409985
+        }
+        enumerator: "WINDOW_VENT_POS"
+        scalar_value: {
+            int32_t: 289409986
+        }
+        enumerator: "WINDOW_VENT_MOVE"
+        scalar_value: {
+            int32_t: 289409987
+        }
+        enumerator: "WINDOW_LOCK"
+        scalar_value: {
+            int32_t: 287312836
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleHvacFanDirection"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "FACE"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "FLOOR"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "FACE_AND_FLOOR"
+        scalar_value: {
+            int32_t: 3
+        }
+        enumerator: "DEFROST"
+        scalar_value: {
+            int32_t: 4
+        }
+        enumerator: "DEFROST_AND_FLOOR"
+        scalar_value: {
+            int32_t: 5
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleRadioConstants"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "VEHICLE_RADIO_PRESET_MIN_VALUE"
+        scalar_value: {
+            int32_t: 1
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleAudioFocusRequest"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "REQUEST_GAIN"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "REQUEST_GAIN_TRANSIENT"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "REQUEST_GAIN_TRANSIENT_MAY_DUCK"
+        scalar_value: {
+            int32_t: 3
+        }
+        enumerator: "REQUEST_GAIN_TRANSIENT_NO_DUCK"
+        scalar_value: {
+            int32_t: 4
+        }
+        enumerator: "REQUEST_RELEASE"
+        scalar_value: {
+            int32_t: 5
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleAudioFocusState"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "STATE_GAIN"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "STATE_GAIN_TRANSIENT"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "STATE_LOSS_TRANSIENT_CAN_DUCK"
+        scalar_value: {
+            int32_t: 3
+        }
+        enumerator: "STATE_LOSS_TRANSIENT"
+        scalar_value: {
+            int32_t: 4
+        }
+        enumerator: "STATE_LOSS"
+        scalar_value: {
+            int32_t: 5
+        }
+        enumerator: "STATE_LOSS_TRANSIENT_EXLCUSIVE"
+        scalar_value: {
+            int32_t: 6
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleAudioStreamFlag"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "STREAM0_FLAG"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "STREAM1_FLAG"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "STREAM2_FLAG"
+        scalar_value: {
+            int32_t: 4
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleAudioStream"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "STREAM0"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "STREAM1"
+        scalar_value: {
+            int32_t: 1
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleAudioExtFocusFlag"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "NONE_FLAG"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "PERMANENT_FLAG"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "TRANSIENT_FLAG"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "PLAY_ONLY_FLAG"
+        scalar_value: {
+            int32_t: 4
+        }
+        enumerator: "MUTE_MEDIA_FLAG"
+        scalar_value: {
+            int32_t: 8
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleAudioFocusIndex"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "FOCUS"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "STREAMS"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "EXTERNAL_FOCUS_STATE"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "AUDIO_CONTEXTS"
+        scalar_value: {
+            int32_t: 3
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleAudioContextFlag"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "MUSIC_FLAG"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "NAVIGATION_FLAG"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "VOICE_COMMAND_FLAG"
+        scalar_value: {
+            int32_t: 4
+        }
+        enumerator: "CALL_FLAG"
+        scalar_value: {
+            int32_t: 8
+        }
+        enumerator: "ALARM_FLAG"
+        scalar_value: {
+            int32_t: 16
+        }
+        enumerator: "NOTIFICATION_FLAG"
+        scalar_value: {
+            int32_t: 32
+        }
+        enumerator: "UNKNOWN_FLAG"
+        scalar_value: {
+            int32_t: 64
+        }
+        enumerator: "SAFETY_ALERT_FLAG"
+        scalar_value: {
+            int32_t: 128
+        }
+        enumerator: "CD_ROM_FLAG"
+        scalar_value: {
+            int32_t: 256
+        }
+        enumerator: "AUX_AUDIO_FLAG"
+        scalar_value: {
+            int32_t: 512
+        }
+        enumerator: "SYSTEM_SOUND_FLAG"
+        scalar_value: {
+            int32_t: 1024
+        }
+        enumerator: "RADIO_FLAG"
+        scalar_value: {
+            int32_t: 2048
+        }
+        enumerator: "EXT_SOURCE_FLAG"
+        scalar_value: {
+            int32_t: 4096
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleAudioVolumeCapabilityFlag"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "PERSISTENT_STORAGE"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "MASTER_VOLUME_ONLY"
+        scalar_value: {
+            int32_t: 2
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleAudioVolumeState"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "STATE_OK"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "LIMIT_REACHED"
+        scalar_value: {
+            int32_t: 1
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleAudioVolumeIndex"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "INDEX_STREAM"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "INDEX_VOLUME"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "INDEX_STATE"
+        scalar_value: {
+            int32_t: 2
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleAudioVolumeLimitIndex"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "STREAM"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "MAX_VOLUME"
+        scalar_value: {
+            int32_t: 1
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleAudioRoutingPolicyIndex"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "STREAM"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "CONTEXTS"
+        scalar_value: {
+            int32_t: 1
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleAudioHwVariantConfigFlag"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "INTERNAL_RADIO_FLAG"
+        scalar_value: {
+            int32_t: 1
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleApPowerStateConfigFlag"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "ENABLE_DEEP_SLEEP_FLAG"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "CONFIG_SUPPORT_TIMER_POWER_ON_FLAG"
+        scalar_value: {
+            int32_t: 2
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleApPowerState"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "OFF"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "DEEP_SLEEP"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "ON_DISP_OFF"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "ON_FULL"
+        scalar_value: {
+            int32_t: 3
+        }
+        enumerator: "SHUTDOWN_PREPARE"
+        scalar_value: {
+            int32_t: 4
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleApPowerStateShutdownParam"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "SHUTDOWN_IMMEDIATELY"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "CAN_SLEEP"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "SHUTDOWN_ONLY"
+        scalar_value: {
+            int32_t: 3
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleApPowerSetState"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "BOOT_COMPLETE"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "DEEP_SLEEP_ENTRY"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "DEEP_SLEEP_EXIT"
+        scalar_value: {
+            int32_t: 3
+        }
+        enumerator: "SHUTDOWN_POSTPONE"
+        scalar_value: {
+            int32_t: 4
+        }
+        enumerator: "SHUTDOWN_START"
+        scalar_value: {
+            int32_t: 5
+        }
+        enumerator: "DISPLAY_OFF"
+        scalar_value: {
+            int32_t: 6
+        }
+        enumerator: "DISPLAY_ON"
+        scalar_value: {
+            int32_t: 7
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleApPowerStateIndex"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "STATE"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "ADDITIONAL"
+        scalar_value: {
+            int32_t: 1
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleApPowerBootupReason"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "USER_POWER_ON"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "USER_UNLOCK"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "TIMER"
+        scalar_value: {
+            int32_t: 2
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleHwKeyInputAction"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "ACTION_DOWN"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "ACTION_UP"
+        scalar_value: {
+            int32_t: 1
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleDisplay"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "MAIN"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "INSTRUMENT_CLUSTER"
+        scalar_value: {
+            int32_t: 1
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleInstrumentClusterType"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "NONE"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "HAL_INTERFACE"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "EXTERNAL_DISPLAY"
+        scalar_value: {
+            int32_t: 2
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleUnit"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "SHOULD_NOT_USE"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "METER_PER_SEC"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "RPM"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "HERTZ"
+        scalar_value: {
+            int32_t: 3
+        }
+        enumerator: "PERCENTILE"
+        scalar_value: {
+            int32_t: 16
+        }
+        enumerator: "MILLIMETER"
+        scalar_value: {
+            int32_t: 32
+        }
+        enumerator: "METER"
+        scalar_value: {
+            int32_t: 33
+        }
+        enumerator: "KILOMETER"
+        scalar_value: {
+            int32_t: 35
+        }
+        enumerator: "CELSIUS"
+        scalar_value: {
+            int32_t: 48
+        }
+        enumerator: "FAHRENHEIT"
+        scalar_value: {
+            int32_t: 49
+        }
+        enumerator: "KELVIN"
+        scalar_value: {
+            int32_t: 50
+        }
+        enumerator: "MILLILITER"
+        scalar_value: {
+            int32_t: 64
+        }
+        enumerator: "NANO_SECS"
+        scalar_value: {
+            int32_t: 80
+        }
+        enumerator: "SECS"
+        scalar_value: {
+            int32_t: 83
+        }
+        enumerator: "YEAR"
+        scalar_value: {
+            int32_t: 89
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehiclePropertyChangeMode"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "STATIC"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "ON_CHANGE"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "CONTINUOUS"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "POLL"
+        scalar_value: {
+            int32_t: 3
+        }
+        enumerator: "ON_SET"
+        scalar_value: {
+            int32_t: 4
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehiclePropertyAccess"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "READ"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "WRITE"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "READ_WRITE"
+        scalar_value: {
+            int32_t: 3
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehiclePermissionModel"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "NO_RESTRICTION"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "OEM_ONLY"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "SYSTEM_APP_ONLY"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "OEM_OR_SYSTEM_APP"
+        scalar_value: {
+            int32_t: 3
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleDrivingStatus"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "UNRESTRICTED"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "NO_VIDEO"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "NO_KEYBOARD_INPUT"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "NO_VOICE_INPUT"
+        scalar_value: {
+            int32_t: 4
+        }
+        enumerator: "NO_CONFIG"
+        scalar_value: {
+            int32_t: 8
+        }
+        enumerator: "LIMIT_MESSAGE_LEN"
+        scalar_value: {
+            int32_t: 16
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleGear"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "GEAR_NEUTRAL"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "GEAR_REVERSE"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "GEAR_PARK"
+        scalar_value: {
+            int32_t: 4
+        }
+        enumerator: "GEAR_DRIVE"
+        scalar_value: {
+            int32_t: 8
+        }
+        enumerator: "GEAR_LOW"
+        scalar_value: {
+            int32_t: 16
+        }
+        enumerator: "GEAR_1"
+        scalar_value: {
+            int32_t: 16
+        }
+        enumerator: "GEAR_2"
+        scalar_value: {
+            int32_t: 32
+        }
+        enumerator: "GEAR_3"
+        scalar_value: {
+            int32_t: 64
+        }
+        enumerator: "GEAR_4"
+        scalar_value: {
+            int32_t: 128
+        }
+        enumerator: "GEAR_5"
+        scalar_value: {
+            int32_t: 256
+        }
+        enumerator: "GEAR_6"
+        scalar_value: {
+            int32_t: 512
+        }
+        enumerator: "GEAR_7"
+        scalar_value: {
+            int32_t: 1024
+        }
+        enumerator: "GEAR_8"
+        scalar_value: {
+            int32_t: 2048
+        }
+        enumerator: "GEAR_9"
+        scalar_value: {
+            int32_t: 4096
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleAreaZone"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "ROW_1_LEFT"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "ROW_1_CENTER"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "ROW_1_RIGHT"
+        scalar_value: {
+            int32_t: 4
+        }
+        enumerator: "ROW_1"
+        scalar_value: {
+            int32_t: 8
+        }
+        enumerator: "ROW_2_LEFT"
+        scalar_value: {
+            int32_t: 16
+        }
+        enumerator: "ROW_2_CENTER"
+        scalar_value: {
+            int32_t: 32
+        }
+        enumerator: "ROW_2_RIGHT"
+        scalar_value: {
+            int32_t: 64
+        }
+        enumerator: "ROW_2"
+        scalar_value: {
+            int32_t: 128
+        }
+        enumerator: "ROW_3_LEFT"
+        scalar_value: {
+            int32_t: 256
+        }
+        enumerator: "ROW_3_CENTER"
+        scalar_value: {
+            int32_t: 512
+        }
+        enumerator: "ROW_3_RIGHT"
+        scalar_value: {
+            int32_t: 1024
+        }
+        enumerator: "ROW_3"
+        scalar_value: {
+            int32_t: 2048
+        }
+        enumerator: "ROW_4_LEFT"
+        scalar_value: {
+            int32_t: 4096
+        }
+        enumerator: "ROW_4_CENTER"
+        scalar_value: {
+            int32_t: 8192
+        }
+        enumerator: "ROW_4_RIGHT"
+        scalar_value: {
+            int32_t: 16384
+        }
+        enumerator: "ROW_4"
+        scalar_value: {
+            int32_t: 32768
+        }
+        enumerator: "WHOLE_CABIN"
+        scalar_value: {
+            int32_t: -2147483648
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleAreaSeat"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "ROW_1_LEFT"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "ROW_1_CENTER"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "ROW_1_RIGHT"
+        scalar_value: {
+            int32_t: 4
+        }
+        enumerator: "ROW_2_LEFT"
+        scalar_value: {
+            int32_t: 16
+        }
+        enumerator: "ROW_2_CENTER"
+        scalar_value: {
+            int32_t: 32
+        }
+        enumerator: "ROW_2_RIGHT"
+        scalar_value: {
+            int32_t: 64
+        }
+        enumerator: "ROW_3_LEFT"
+        scalar_value: {
+            int32_t: 256
+        }
+        enumerator: "ROW_3_CENTER"
+        scalar_value: {
+            int32_t: 512
+        }
+        enumerator: "ROW_3_RIGHT"
+        scalar_value: {
+            int32_t: 1024
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleAreaWindow"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "FRONT_WINDSHIELD"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "REAR_WINDSHIELD"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "ROOF_TOP"
+        scalar_value: {
+            int32_t: 4
+        }
+        enumerator: "ROW_1_LEFT"
+        scalar_value: {
+            int32_t: 16
+        }
+        enumerator: "ROW_1_RIGHT"
+        scalar_value: {
+            int32_t: 32
+        }
+        enumerator: "ROW_2_LEFT"
+        scalar_value: {
+            int32_t: 256
+        }
+        enumerator: "ROW_2_RIGHT"
+        scalar_value: {
+            int32_t: 512
+        }
+        enumerator: "ROW_3_LEFT"
+        scalar_value: {
+            int32_t: 4096
+        }
+        enumerator: "ROW_3_RIGHT"
+        scalar_value: {
+            int32_t: 8192
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleAreaDoor"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "ROW_1_LEFT"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "ROW_1_RIGHT"
+        scalar_value: {
+            int32_t: 4
+        }
+        enumerator: "ROW_2_LEFT"
+        scalar_value: {
+            int32_t: 16
+        }
+        enumerator: "ROW_2_RIGHT"
+        scalar_value: {
+            int32_t: 64
+        }
+        enumerator: "ROW_3_LEFT"
+        scalar_value: {
+            int32_t: 256
+        }
+        enumerator: "ROW_3_RIGHT"
+        scalar_value: {
+            int32_t: 1024
+        }
+        enumerator: "HOOD"
+        scalar_value: {
+            int32_t: 268435456
+        }
+        enumerator: "REAR"
+        scalar_value: {
+            int32_t: 536870912
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleAreaMirror"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "DRIVER_LEFT"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "DRIVER_RIGHT"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "DRIVER_CENTER"
+        scalar_value: {
+            int32_t: 4
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleTurnSignal"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "NONE"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "RIGHT"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "LEFT"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "EMERGENCY"
+        scalar_value: {
+            int32_t: 4
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehicleAreaConfig"
+    type: TYPE_STRUCT
+    struct_value: {
+        name: "areaId"
+        type: TYPE_SCALAR
+        scalar_type: "int32_t"
+    }
+    struct_value: {
+        name: "minInt32Value"
+        type: TYPE_SCALAR
+        scalar_type: "int32_t"
+    }
+    struct_value: {
+        name: "maxInt32Value"
+        type: TYPE_SCALAR
+        scalar_type: "int32_t"
+    }
+    struct_value: {
+        name: "minInt64Value"
+        type: TYPE_SCALAR
+        scalar_type: "int64_t"
+    }
+    struct_value: {
+        name: "maxInt64Value"
+        type: TYPE_SCALAR
+        scalar_type: "int64_t"
+    }
+    struct_value: {
+        name: "minFloatValue"
+        type: TYPE_SCALAR
+        scalar_type: "float_t"
+    }
+    struct_value: {
+        name: "maxFloatValue"
+        type: TYPE_SCALAR
+        scalar_type: "float_t"
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehiclePropConfig"
+    type: TYPE_STRUCT
+    struct_value: {
+        name: "prop"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::vehicle::V2_0::VehicleProperty"
+    }
+    struct_value: {
+        name: "access"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::vehicle::V2_0::VehiclePropertyAccess"
+    }
+    struct_value: {
+        name: "changeMode"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::vehicle::V2_0::VehiclePropertyChangeMode"
+    }
+    struct_value: {
+        name: "permissionModel"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::vehicle::V2_0::VehiclePermissionModel"
+    }
+    struct_value: {
+        name: "supportedAreas"
+        type: TYPE_SCALAR
+        scalar_type: "int32_t"
+    }
+    struct_value: {
+        name: "areaConfigs"
+        type: TYPE_VECTOR
+        vector_value: {
+            type: TYPE_STRUCT
+            predefined_type: "::android::hardware::vehicle::V2_0::VehicleAreaConfig"
+        }
+    }
+    struct_value: {
+        name: "configFlags"
+        type: TYPE_SCALAR
+        scalar_type: "int32_t"
+    }
+    struct_value: {
+        name: "configArray"
+        type: TYPE_VECTOR
+        vector_value: {
+            type: TYPE_SCALAR
+            scalar_type: "int32_t"
+        }
+    }
+    struct_value: {
+        name: "configString"
+        type: TYPE_STRING
+    }
+    struct_value: {
+        name: "minSampleRate"
+        type: TYPE_SCALAR
+        scalar_type: "float_t"
+    }
+    struct_value: {
+        name: "maxSampleRate"
+        type: TYPE_SCALAR
+        scalar_type: "float_t"
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehiclePropValue"
+    type: TYPE_STRUCT
+    sub_struct: {
+        name: "::android::hardware::vehicle::V2_0::VehiclePropValue::RawValue"
+        type: TYPE_STRUCT
+        struct_value: {
+            name: "int32Values"
+            type: TYPE_VECTOR
+            vector_value: {
+                type: TYPE_SCALAR
+                scalar_type: "int32_t"
+            }
+        }
+        struct_value: {
+            name: "floatValues"
+            type: TYPE_VECTOR
+            vector_value: {
+                type: TYPE_SCALAR
+                scalar_type: "float_t"
+            }
+        }
+        struct_value: {
+            name: "int64Values"
+            type: TYPE_VECTOR
+            vector_value: {
+                type: TYPE_SCALAR
+                scalar_type: "int64_t"
+            }
+        }
+        struct_value: {
+            name: "bytes"
+            type: TYPE_VECTOR
+            vector_value: {
+                type: TYPE_SCALAR
+                scalar_type: "uint8_t"
+            }
+        }
+        struct_value: {
+            name: "stringValue"
+            type: TYPE_STRING
+        }
+    }
+    struct_value: {
+        name: "prop"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::vehicle::V2_0::VehicleProperty"
+    }
+    struct_value: {
+        name: "timestamp"
+        type: TYPE_SCALAR
+        scalar_type: "int64_t"
+    }
+    struct_value: {
+        name: "areaId"
+        type: TYPE_SCALAR
+        scalar_type: "int32_t"
+    }
+    struct_value: {
+        name: "value"
+        type: TYPE_STRUCT
+        predefined_type: "::android::hardware::vehicle::V2_0::VehiclePropValue::RawValue"
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::VehiclePropertyOperation"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "GENERIC"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "SET"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "GET"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "SUBSCRIBE"
+        scalar_value: {
+            int32_t: 3
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::SubscribeFlags"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "UNDEFINED"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "HAL_EVENT"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "SET_CALL"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "DEFAULT"
+        scalar_value: {
+            int32_t: 1
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::SubscribeOptions"
+    type: TYPE_STRUCT
+    struct_value: {
+        name: "propId"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::vehicle::V2_0::VehicleProperty"
+    }
+    struct_value: {
+        name: "vehicleAreas"
+        type: TYPE_SCALAR
+        scalar_type: "int32_t"
+    }
+    struct_value: {
+        name: "sampleRate"
+        type: TYPE_SCALAR
+        scalar_type: "float_t"
+    }
+    struct_value: {
+        name: "flags"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::vehicle::V2_0::SubscribeFlags"
+    }
+}
+
+attribute: {
+    name: "::android::hardware::vehicle::V2_0::StatusCode"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "OK"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "TRY_AGAIN"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "INVALID_ARG"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "NOT_AVAILABLE"
+        scalar_value: {
+            int32_t: 3
+        }
+        enumerator: "ACCESS_DENIED"
+        scalar_value: {
+            int32_t: 4
+        }
+        enumerator: "INTERNAL_ERROR"
+        scalar_value: {
+            int32_t: 5
+        }
+    }
+}
+
diff --git a/vibrator/1.0/default/Vibrator.h b/vibrator/1.0/default/Vibrator.h
index 36c4cc1..061b364 100644
--- a/vibrator/1.0/default/Vibrator.h
+++ b/vibrator/1.0/default/Vibrator.h
@@ -13,8 +13,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#ifndef HIDL_GENERATED_android_hardware_vibrator_V1_0_Vibrator_H_
-#define HIDL_GENERATED_android_hardware_vibrator_V1_0_Vibrator_H_
+#ifndef ANDROID_HARDWARE_VIBRATOR_V1_0_VIBRATOR_H
+#define ANDROID_HARDWARE_VIBRATOR_V1_0_VIBRATOR_H
 
 #include <android/hardware/vibrator/1.0/IVibrator.h>
 #include <hidl/Status.h>
@@ -53,4 +53,4 @@
 }  // namespace hardware
 }  // namespace android
 
-#endif  // HIDL_GENERATED_android_hardware_vibrator_V1_0_Vibrator_H_
+#endif  // ANDROID_HARDWARE_VIBRATOR_V1_0_VIBRATOR_H
diff --git a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/host_profiling/AndroidTest.xml b/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/host_profiling/AndroidTest.xml
index 713e9d0..54830f0 100644
--- a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/host_profiling/AndroidTest.xml
+++ b/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/host_profiling/AndroidTest.xml
@@ -24,6 +24,6 @@
     <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
         <option name="test-module-name" value="VibratorHidlProfilingTest" />
         <option name="test-case-path" value="vts/testcases/hal/vibrator/hidl/host/VibratorHidlTest" />
-        <option name="test-config-path" value="vts/testcases/hal/vibrator/hidl/host_profiling/VibratorHidlProfilingTest.config" />
+        <option name="enable-profiling" value="true" />
     </test>
 </configuration>
diff --git a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/host_profiling/VibratorHidlProfilingTest.config b/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/host_profiling/VibratorHidlProfilingTest.config
deleted file mode 100644
index 912d8d5..0000000
--- a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/host_profiling/VibratorHidlProfilingTest.config
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-    "enable_profiling": true
-}
\ No newline at end of file
diff --git a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target_profiling/AndroidTest.xml b/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target_profiling/AndroidTest.xml
index addd67e..4643e23 100644
--- a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target_profiling/AndroidTest.xml
+++ b/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target_profiling/AndroidTest.xml
@@ -24,9 +24,9 @@
             _32bit::DATA/nativetest/vibrator_hidl_hal_test/vibrator_hidl_hal_test,
             _64bit::DATA/nativetest64/vibrator_hidl_hal_test/vibrator_hidl_hal_test,
             "/>
-        <option name="test-config-path" value="vts/testcases/hal/vibrator/hidl/target_profiling/VibratorHidlTargetProfilingTest.config" />
         <option name="binary-test-type" value="gtest" />
         <option name="test-timeout" value="1m" />
+        <option name="enable-profiling" value="true" />
     </test>
 </configuration>
 
diff --git a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target_profiling/VibratorHidlTargetProfilingTest.config b/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target_profiling/VibratorHidlTargetProfilingTest.config
deleted file mode 100644
index 912d8d5..0000000
--- a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/target_profiling/VibratorHidlTargetProfilingTest.config
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-    "enable_profiling": true
-}
\ No newline at end of file
diff --git a/vr/1.0/default/Vr.h b/vr/1.0/default/Vr.h
index 90694d9..dd5e764 100644
--- a/vr/1.0/default/Vr.h
+++ b/vr/1.0/default/Vr.h
@@ -13,8 +13,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#ifndef HIDL_GENERATED_android_hardware_vr_V1_0_Vr_H_
-#define HIDL_GENERATED_android_hardware_vr_V1_0_Vr_H_
+#ifndef ANDROID_HARDWARE_VR_V1_0_VR_H
+#define ANDROID_HARDWARE_VR_V1_0_VR_H
 
 #include <android/hardware/vr/1.0/IVr.h>
 #include <hardware/vr.h>
@@ -48,4 +48,4 @@
 }  // namespace hardware
 }  // namespace android
 
-#endif  // HIDL_GENERATED_android_hardware_vr_V1_0_Vr_H_
+#endif  // ANDROID_HARDWARE_VR_V1_0_VR_H
diff --git a/wifi/1.0/default/Android.mk b/wifi/1.0/default/Android.mk
index 646613b..62d2e0b 100644
--- a/wifi/1.0/default/Android.mk
+++ b/wifi/1.0/default/Android.mk
@@ -16,7 +16,7 @@
 include $(CLEAR_VARS)
 LOCAL_MODULE := android.hardware.wifi@1.0-service
 LOCAL_MODULE_RELATIVE_PATH := hw
-LOCAL_CPPFLAGS := -std=c++11 -Wall -Wno-unused-parameter -Werror -Wextra
+LOCAL_CPPFLAGS := -Wall -Wno-unused-parameter -Werror -Wextra
 LOCAL_SRC_FILES := \
     service.cpp \
     wifi.cpp \
diff --git a/wifi/1.0/types.hal b/wifi/1.0/types.hal
index 066662c..9e53377 100644
--- a/wifi/1.0/types.hal
+++ b/wifi/1.0/types.hal
@@ -486,7 +486,7 @@
 /**
  * Mask of flags set in the |ScanData| instance.
  */
-enum StaScanDataFlagMask {
+enum StaScanDataFlagMask : int32_t {
   /**
    * Indicates that a scan was interrupted/did not occur so results may be
    * incomplete.