Merge "Move example extensions to test folder."
diff --git a/audio/common/2.0/vts/types.vts b/audio/common/2.0/vts/types.vts
index 8d1a9db..d790573 100644
--- a/audio/common/2.0/vts/types.vts
+++ b/audio/common/2.0/vts/types.vts
@@ -56,8 +56,8 @@
     struct_value: {
         name: "node"
         type: TYPE_ARRAY
+        vector_size: 6
         vector_value: {
-            vector_size: 6
             type: TYPE_SCALAR
             scalar_type: "uint8_t"
         }
@@ -381,10 +381,14 @@
         scalar_value: {
             uint32_t: 553648128
         }
-        enumerator: "LDAC"
+        enumerator: "AC4"
         scalar_value: {
             uint32_t: 570425344
         }
+        enumerator: "LDAC"
+        scalar_value: {
+            uint32_t: 587202560
+        }
         enumerator: "MAIN_MASK"
         scalar_value: {
             uint32_t: 4278190080
@@ -811,6 +815,10 @@
         scalar_value: {
             uint32_t: 48
         }
+        enumerator: "IN_6"
+        scalar_value: {
+            uint32_t: 252
+        }
         enumerator: "IN_VOICE_UPLINK_MONO"
         scalar_value: {
             uint32_t: 16400
@@ -1357,13 +1365,17 @@
         scalar_value: {
             int32_t: 15
         }
-        enumerator: "CNT"
+        enumerator: "ASSISTANT"
         scalar_value: {
             int32_t: 16
         }
+        enumerator: "CNT"
+        scalar_value: {
+            int32_t: 17
+        }
         enumerator: "MAX"
         scalar_value: {
-            int32_t: 15
+            int32_t: 16
         }
     }
 }
@@ -1545,8 +1557,8 @@
     struct_value: {
         name: "values"
         type: TYPE_ARRAY
+        vector_size: 32
         vector_value: {
-            vector_size: 32
             type: TYPE_SCALAR
             scalar_type: "int32_t"
         }
@@ -1620,8 +1632,8 @@
     struct_value: {
         name: "address"
         type: TYPE_ARRAY
+        vector_size: 32
         vector_value: {
-            vector_size: 32
             type: TYPE_SCALAR
             scalar_type: "uint8_t"
         }
@@ -1785,8 +1797,8 @@
     struct_value: {
         name: "address"
         type: TYPE_ARRAY
+        vector_size: 32
         vector_value: {
-            vector_size: 32
             type: TYPE_SCALAR
             scalar_type: "uint8_t"
         }
@@ -1925,3 +1937,18 @@
     }
 }
 
+attribute: {
+    name: "::android::hardware::audio::common::V2_0::ThreadInfo"
+    type: TYPE_STRUCT
+    struct_value: {
+        name: "pid"
+        type: TYPE_SCALAR
+        scalar_type: "int64_t"
+    }
+    struct_value: {
+        name: "tid"
+        type: TYPE_SCALAR
+        scalar_type: "int64_t"
+    }
+}
+
diff --git a/automotive/vehicle/2.0/types.hal b/automotive/vehicle/2.0/types.hal
index fa432f4..68a8a17 100644
--- a/automotive/vehicle/2.0/types.hal
+++ b/automotive/vehicle/2.0/types.hal
@@ -1764,7 +1764,7 @@
      * Its contents are to be interpreted as follows:
      * the indices defined in VmsMessageIntegerValuesIndex are to be used to
      * read from int32Values;
-     * stringValue is a serialized VMS message as defined in the vms protocol
+     * bytes is a serialized VMS message as defined in the vms protocol
      * which is opaque to the framework;
      *
      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
@@ -3203,11 +3203,14 @@
  */
 enum VmsMessageIntegerValuesIndex : int32_t {
   /* The message type as enumerated by VmsMessageType enum. */
-  VMS_MESSAGE_TYPE = 1,
+  VMS_MESSAGE_TYPE = 0,
 
   /* The layer ID as defined in the vms protocol. */
-  VMS_LAYER_ID = 2,
+  VMS_LAYER_ID = 1,
 
   /* The version of the VMS layer. */
-  VMS_LAYER_VERSION = 3,
+  VMS_LAYER_VERSION = 2,
+
+  /* The number of bytes in the payload */
+  VMS_PAYLOAD_SIZE_BYTES = 3,
 };
diff --git a/automotive/vehicle/2.0/vts/Vehicle.vts b/automotive/vehicle/2.0/vts/Vehicle.vts
index 535d4b8..aa12f0c 100644
--- a/automotive/vehicle/2.0/vts/Vehicle.vts
+++ b/automotive/vehicle/2.0/vts/Vehicle.vts
@@ -6,6 +6,7 @@
 
 import: "android.hardware.automotive.vehicle@2.0::IVehicleCallback"
 import: "android.hardware.automotive.vehicle@2.0::types"
+import: "android.hidl.base@1.0::types"
 
 interface: {
     api: {
@@ -35,8 +36,8 @@
         arg: {
             type: TYPE_VECTOR
             vector_value: {
-                type: TYPE_ENUM
-                predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehicleProperty"
+                type: TYPE_SCALAR
+                scalar_type: "int32_t"
             }
         }
     }
@@ -77,8 +78,7 @@
         }
         arg: {
             type: TYPE_HIDL_CALLBACK
-            predefined_type: "IVehicleCallback"
-            is_callback: true
+            predefined_type: "::android::hardware::automotive::vehicle::V2_0::IVehicleCallback"
         }
         arg: {
             type: TYPE_VECTOR
@@ -97,12 +97,11 @@
         }
         arg: {
             type: TYPE_HIDL_CALLBACK
-            predefined_type: "IVehicleCallback"
-            is_callback: true
+            predefined_type: "::android::hardware::automotive::vehicle::V2_0::IVehicleCallback"
         }
         arg: {
-            type: TYPE_ENUM
-            predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehicleProperty"
+            type: TYPE_SCALAR
+            scalar_type: "int32_t"
         }
     }
 
diff --git a/automotive/vehicle/2.0/vts/VehicleCallback.vts b/automotive/vehicle/2.0/vts/VehicleCallback.vts
index 3589fde..e4815d5 100644
--- a/automotive/vehicle/2.0/vts/VehicleCallback.vts
+++ b/automotive/vehicle/2.0/vts/VehicleCallback.vts
@@ -5,6 +5,7 @@
 package: "android.hardware.automotive.vehicle"
 
 import: "android.hardware.automotive.vehicle@2.0::types"
+import: "android.hidl.base@1.0::types"
 
 interface: {
     api: {
@@ -33,8 +34,8 @@
             predefined_type: "::android::hardware::automotive::vehicle::V2_0::StatusCode"
         }
         arg: {
-            type: TYPE_ENUM
-            predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehicleProperty"
+            type: TYPE_SCALAR
+            scalar_type: "int32_t"
         }
         arg: {
             type: TYPE_SCALAR
diff --git a/automotive/vehicle/2.0/vts/types.vts b/automotive/vehicle/2.0/vts/types.vts
index b8a9f83..3868c99 100644
--- a/automotive/vehicle/2.0/vts/types.vts
+++ b/automotive/vehicle/2.0/vts/types.vts
@@ -162,6 +162,10 @@
         scalar_value: {
             int32_t: 291504901
         }
+        enumerator: "WHEEL_TICK"
+        scalar_value: {
+            int32_t: 291570438
+        }
         enumerator: "GEAR_SELECTION"
         scalar_value: {
             int32_t: 289408000
@@ -282,10 +286,18 @@
         scalar_value: {
             int32_t: 289474816
         }
+        enumerator: "AUDIO_FOCUS_EXT_SYNC"
+        scalar_value: {
+            int32_t: 289474832
+        }
         enumerator: "AUDIO_VOLUME"
         scalar_value: {
             int32_t: 289474817
         }
+        enumerator: "AUDIO_VOLUME_EXT_SYNC"
+        scalar_value: {
+            int32_t: 289474833
+        }
         enumerator: "AUDIO_VOLUME_LIMIT"
         scalar_value: {
             int32_t: 289474818
@@ -302,9 +314,17 @@
         scalar_value: {
             int32_t: 289474821
         }
+        enumerator: "AUDIO_STREAM_STATE"
+        scalar_value: {
+            int32_t: 289474822
+        }
+        enumerator: "AUDIO_PARAMETERS"
+        scalar_value: {
+            int32_t: 286263559
+        }
         enumerator: "AP_POWER_STATE"
         scalar_value: {
-            int32_t: 2560
+            int32_t: 289475072
         }
         enumerator: "DISPLAY_BRIGHTNESS"
         scalar_value: {
@@ -506,6 +526,14 @@
         scalar_value: {
             int32_t: 299896065
         }
+        enumerator: "OBD2_FREEZE_FRAME_INFO"
+        scalar_value: {
+            int32_t: 299896066
+        }
+        enumerator: "OBD2_FREEZE_FRAME_CLEAR"
+        scalar_value: {
+            int32_t: 299896067
+        }
     }
 }
 
@@ -1585,8 +1613,8 @@
     type: TYPE_STRUCT
     struct_value: {
         name: "prop"
-        type: TYPE_ENUM
-        predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehicleProperty"
+        type: TYPE_SCALAR
+        scalar_type: "int32_t"
     }
     struct_value: {
         name: "access"
@@ -1685,8 +1713,8 @@
     }
     struct_value: {
         name: "prop"
-        type: TYPE_ENUM
-        predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehicleProperty"
+        type: TYPE_SCALAR
+        scalar_type: "int32_t"
     }
     struct_value: {
         name: "timestamp"
@@ -1793,8 +1821,8 @@
     type: TYPE_STRUCT
     struct_value: {
         name: "propId"
-        type: TYPE_ENUM
-        predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehicleProperty"
+        type: TYPE_SCALAR
+        scalar_type: "int32_t"
     }
     struct_value: {
         name: "vehicleAreas"
@@ -2104,6 +2132,35 @@
 }
 
 attribute: {
+    name: "::android::hardware::automotive::vehicle::V2_0::Wheel"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "UNKNOWN"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "LEFT_FRONT"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "RIGHT_FRONT"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "LEFT_REAR"
+        scalar_value: {
+            int32_t: 4
+        }
+        enumerator: "RIGHT_REAR"
+        scalar_value: {
+            int32_t: 8
+        }
+    }
+}
+
+attribute: {
     name: "::android::hardware::automotive::vehicle::V2_0::SecondaryAirStatus"
     type: TYPE_ENUM
     enum_value: {
@@ -2251,6 +2308,14 @@
         scalar_value: {
             int32_t: 2
         }
+        enumerator: "IGNITION_SPECIFIC_MONITORS"
+        scalar_value: {
+            int32_t: 3
+        }
+        enumerator: "INTAKE_AIR_TEMPERATURE"
+        scalar_value: {
+            int32_t: 4
+        }
         enumerator: "COMMANDED_SECONDARY_AIR_STATUS"
         scalar_value: {
             int32_t: 5
@@ -2671,3 +2736,45 @@
     }
 }
 
+attribute: {
+    name: "::android::hardware::automotive::vehicle::V2_0::VmsMessageType"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "SUBSCRIBE"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "UNSUBSCRIBE"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "DATA"
+        scalar_value: {
+            int32_t: 3
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::automotive::vehicle::V2_0::VmsMessageIntegerValuesIndex"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "VMS_MESSAGE_TYPE"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "VMS_LAYER_ID"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "VMS_LAYER_VERSION"
+        scalar_value: {
+            int32_t: 3
+        }
+    }
+}
+
diff --git a/biometrics/fingerprint/2.1/vts/BiometricsFingerprint.vts b/biometrics/fingerprint/2.1/vts/BiometricsFingerprint.vts
index 475333e..0581da0 100644
--- a/biometrics/fingerprint/2.1/vts/BiometricsFingerprint.vts
+++ b/biometrics/fingerprint/2.1/vts/BiometricsFingerprint.vts
@@ -9,276 +9,6 @@
 import: "android.hidl.base@1.0::types"
 
 interface: {
-    attribute: {
-        name: "::android::hardware::biometrics::fingerprint::V2_1::RequestStatus"
-        type: TYPE_ENUM
-        enum_value: {
-            scalar_type: "int32_t"
-
-            enumerator: "SYS_UNKNOWN"
-            scalar_value: {
-                int32_t: 1
-            }
-            enumerator: "SYS_OK"
-            scalar_value: {
-                int32_t: 0
-            }
-            enumerator: "SYS_ENOENT"
-            scalar_value: {
-                int32_t: -2
-            }
-            enumerator: "SYS_EINTR"
-            scalar_value: {
-                int32_t: -4
-            }
-            enumerator: "SYS_EIO"
-            scalar_value: {
-                int32_t: -5
-            }
-            enumerator: "SYS_EAGAIN"
-            scalar_value: {
-                int32_t: -11
-            }
-            enumerator: "SYS_ENOMEM"
-            scalar_value: {
-                int32_t: -12
-            }
-            enumerator: "SYS_EACCES"
-            scalar_value: {
-                int32_t: -13
-            }
-            enumerator: "SYS_EFAULT"
-            scalar_value: {
-                int32_t: -14
-            }
-            enumerator: "SYS_EBUSY"
-            scalar_value: {
-                int32_t: -16
-            }
-            enumerator: "SYS_EINVAL"
-            scalar_value: {
-                int32_t: -22
-            }
-            enumerator: "SYS_ENOSPC"
-            scalar_value: {
-                int32_t: -28
-            }
-            enumerator: "SYS_ETIMEDOUT"
-            scalar_value: {
-                int32_t: -110
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintError"
-        type: TYPE_ENUM
-        enum_value: {
-            scalar_type: "int32_t"
-
-            enumerator: "ERROR_NO_ERROR"
-            scalar_value: {
-                int32_t: 0
-            }
-            enumerator: "ERROR_HW_UNAVAILABLE"
-            scalar_value: {
-                int32_t: 1
-            }
-            enumerator: "ERROR_UNABLE_TO_PROCESS"
-            scalar_value: {
-                int32_t: 2
-            }
-            enumerator: "ERROR_TIMEOUT"
-            scalar_value: {
-                int32_t: 3
-            }
-            enumerator: "ERROR_NO_SPACE"
-            scalar_value: {
-                int32_t: 4
-            }
-            enumerator: "ERROR_CANCELED"
-            scalar_value: {
-                int32_t: 5
-            }
-            enumerator: "ERROR_UNABLE_TO_REMOVE"
-            scalar_value: {
-                int32_t: 6
-            }
-            enumerator: "ERROR_LOCKOUT"
-            scalar_value: {
-                int32_t: 7
-            }
-            enumerator: "ERROR_VENDOR"
-            scalar_value: {
-                int32_t: 8
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo"
-        type: TYPE_ENUM
-        enum_value: {
-            scalar_type: "int32_t"
-
-            enumerator: "ACQUIRED_GOOD"
-            scalar_value: {
-                int32_t: 0
-            }
-            enumerator: "ACQUIRED_PARTIAL"
-            scalar_value: {
-                int32_t: 1
-            }
-            enumerator: "ACQUIRED_INSUFFICIENT"
-            scalar_value: {
-                int32_t: 2
-            }
-            enumerator: "ACQUIRED_IMAGER_DIRTY"
-            scalar_value: {
-                int32_t: 3
-            }
-            enumerator: "ACQUIRED_TOO_SLOW"
-            scalar_value: {
-                int32_t: 4
-            }
-            enumerator: "ACQUIRED_TOO_FAST"
-            scalar_value: {
-                int32_t: 5
-            }
-            enumerator: "ACQUIRED_VENDOR"
-            scalar_value: {
-                int32_t: 6
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintFingerId"
-        type: TYPE_STRUCT
-        struct_value: {
-            name: "gid"
-            type: TYPE_SCALAR
-            scalar_type: "uint32_t"
-        }
-        struct_value: {
-            name: "fid"
-            type: TYPE_SCALAR
-            scalar_type: "uint32_t"
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintEnroll"
-        type: TYPE_STRUCT
-        struct_value: {
-            name: "finger"
-            type: TYPE_STRUCT
-            predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintFingerId"
-        }
-        struct_value: {
-            name: "samplesRemaining"
-            type: TYPE_SCALAR
-            scalar_type: "uint32_t"
-        }
-        struct_value: {
-            name: "msg"
-            type: TYPE_SCALAR
-            scalar_type: "uint64_t"
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintIterator"
-        type: TYPE_STRUCT
-        struct_value: {
-            name: "finger"
-            type: TYPE_STRUCT
-            predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintFingerId"
-        }
-        struct_value: {
-            name: "remainingTemplates"
-            type: TYPE_SCALAR
-            scalar_type: "uint32_t"
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquired"
-        type: TYPE_STRUCT
-        struct_value: {
-            name: "acquiredInfo"
-            type: TYPE_ENUM
-            predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo"
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintAuthenticated"
-        type: TYPE_STRUCT
-        struct_value: {
-            name: "finger"
-            type: TYPE_STRUCT
-            predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintFingerId"
-        }
-        struct_value: {
-            name: "hat"
-            type: TYPE_ARRAY
-            vector_size: 69
-            vector_value: {
-                type: TYPE_SCALAR
-                scalar_type: "uint8_t"
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintMsgType"
-        type: TYPE_ENUM
-        enum_value: {
-            scalar_type: "int32_t"
-
-            enumerator: "ERROR"
-            scalar_value: {
-                int32_t: -1
-            }
-            enumerator: "ACQUIRED"
-            scalar_value: {
-                int32_t: 1
-            }
-            enumerator: "TEMPLATE_ENROLLING"
-            scalar_value: {
-                int32_t: 3
-            }
-            enumerator: "TEMPLATE_REMOVED"
-            scalar_value: {
-                int32_t: 4
-            }
-            enumerator: "AUTHENTICATED"
-            scalar_value: {
-                int32_t: 5
-            }
-            enumerator: "TEMPLATE_ENUMERATING"
-            scalar_value: {
-                int32_t: 6
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hidl::base::V1_0::DebugInfo"
-        type: TYPE_STRUCT
-        struct_value: {
-            name: "pid"
-            type: TYPE_SCALAR
-            scalar_type: "int32_t"
-        }
-        struct_value: {
-            name: "ptr"
-            type: TYPE_SCALAR
-            scalar_type: "uint64_t"
-        }
-    }
-
     api: {
         name: "setNotify"
         return_type_hidl: {
diff --git a/biometrics/fingerprint/2.1/vts/BiometricsFingerprintClientCallback.vts b/biometrics/fingerprint/2.1/vts/BiometricsFingerprintClientCallback.vts
index 7cf4003..dedda65 100644
--- a/biometrics/fingerprint/2.1/vts/BiometricsFingerprintClientCallback.vts
+++ b/biometrics/fingerprint/2.1/vts/BiometricsFingerprintClientCallback.vts
@@ -8,276 +8,6 @@
 import: "android.hidl.base@1.0::types"
 
 interface: {
-    attribute: {
-        name: "::android::hardware::biometrics::fingerprint::V2_1::RequestStatus"
-        type: TYPE_ENUM
-        enum_value: {
-            scalar_type: "int32_t"
-
-            enumerator: "SYS_UNKNOWN"
-            scalar_value: {
-                int32_t: 1
-            }
-            enumerator: "SYS_OK"
-            scalar_value: {
-                int32_t: 0
-            }
-            enumerator: "SYS_ENOENT"
-            scalar_value: {
-                int32_t: -2
-            }
-            enumerator: "SYS_EINTR"
-            scalar_value: {
-                int32_t: -4
-            }
-            enumerator: "SYS_EIO"
-            scalar_value: {
-                int32_t: -5
-            }
-            enumerator: "SYS_EAGAIN"
-            scalar_value: {
-                int32_t: -11
-            }
-            enumerator: "SYS_ENOMEM"
-            scalar_value: {
-                int32_t: -12
-            }
-            enumerator: "SYS_EACCES"
-            scalar_value: {
-                int32_t: -13
-            }
-            enumerator: "SYS_EFAULT"
-            scalar_value: {
-                int32_t: -14
-            }
-            enumerator: "SYS_EBUSY"
-            scalar_value: {
-                int32_t: -16
-            }
-            enumerator: "SYS_EINVAL"
-            scalar_value: {
-                int32_t: -22
-            }
-            enumerator: "SYS_ENOSPC"
-            scalar_value: {
-                int32_t: -28
-            }
-            enumerator: "SYS_ETIMEDOUT"
-            scalar_value: {
-                int32_t: -110
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintError"
-        type: TYPE_ENUM
-        enum_value: {
-            scalar_type: "int32_t"
-
-            enumerator: "ERROR_NO_ERROR"
-            scalar_value: {
-                int32_t: 0
-            }
-            enumerator: "ERROR_HW_UNAVAILABLE"
-            scalar_value: {
-                int32_t: 1
-            }
-            enumerator: "ERROR_UNABLE_TO_PROCESS"
-            scalar_value: {
-                int32_t: 2
-            }
-            enumerator: "ERROR_TIMEOUT"
-            scalar_value: {
-                int32_t: 3
-            }
-            enumerator: "ERROR_NO_SPACE"
-            scalar_value: {
-                int32_t: 4
-            }
-            enumerator: "ERROR_CANCELED"
-            scalar_value: {
-                int32_t: 5
-            }
-            enumerator: "ERROR_UNABLE_TO_REMOVE"
-            scalar_value: {
-                int32_t: 6
-            }
-            enumerator: "ERROR_LOCKOUT"
-            scalar_value: {
-                int32_t: 7
-            }
-            enumerator: "ERROR_VENDOR"
-            scalar_value: {
-                int32_t: 8
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo"
-        type: TYPE_ENUM
-        enum_value: {
-            scalar_type: "int32_t"
-
-            enumerator: "ACQUIRED_GOOD"
-            scalar_value: {
-                int32_t: 0
-            }
-            enumerator: "ACQUIRED_PARTIAL"
-            scalar_value: {
-                int32_t: 1
-            }
-            enumerator: "ACQUIRED_INSUFFICIENT"
-            scalar_value: {
-                int32_t: 2
-            }
-            enumerator: "ACQUIRED_IMAGER_DIRTY"
-            scalar_value: {
-                int32_t: 3
-            }
-            enumerator: "ACQUIRED_TOO_SLOW"
-            scalar_value: {
-                int32_t: 4
-            }
-            enumerator: "ACQUIRED_TOO_FAST"
-            scalar_value: {
-                int32_t: 5
-            }
-            enumerator: "ACQUIRED_VENDOR"
-            scalar_value: {
-                int32_t: 6
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintFingerId"
-        type: TYPE_STRUCT
-        struct_value: {
-            name: "gid"
-            type: TYPE_SCALAR
-            scalar_type: "uint32_t"
-        }
-        struct_value: {
-            name: "fid"
-            type: TYPE_SCALAR
-            scalar_type: "uint32_t"
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintEnroll"
-        type: TYPE_STRUCT
-        struct_value: {
-            name: "finger"
-            type: TYPE_STRUCT
-            predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintFingerId"
-        }
-        struct_value: {
-            name: "samplesRemaining"
-            type: TYPE_SCALAR
-            scalar_type: "uint32_t"
-        }
-        struct_value: {
-            name: "msg"
-            type: TYPE_SCALAR
-            scalar_type: "uint64_t"
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintIterator"
-        type: TYPE_STRUCT
-        struct_value: {
-            name: "finger"
-            type: TYPE_STRUCT
-            predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintFingerId"
-        }
-        struct_value: {
-            name: "remainingTemplates"
-            type: TYPE_SCALAR
-            scalar_type: "uint32_t"
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquired"
-        type: TYPE_STRUCT
-        struct_value: {
-            name: "acquiredInfo"
-            type: TYPE_ENUM
-            predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo"
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintAuthenticated"
-        type: TYPE_STRUCT
-        struct_value: {
-            name: "finger"
-            type: TYPE_STRUCT
-            predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintFingerId"
-        }
-        struct_value: {
-            name: "hat"
-            type: TYPE_ARRAY
-            vector_size: 69
-            vector_value: {
-                type: TYPE_SCALAR
-                scalar_type: "uint8_t"
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintMsgType"
-        type: TYPE_ENUM
-        enum_value: {
-            scalar_type: "int32_t"
-
-            enumerator: "ERROR"
-            scalar_value: {
-                int32_t: -1
-            }
-            enumerator: "ACQUIRED"
-            scalar_value: {
-                int32_t: 1
-            }
-            enumerator: "TEMPLATE_ENROLLING"
-            scalar_value: {
-                int32_t: 3
-            }
-            enumerator: "TEMPLATE_REMOVED"
-            scalar_value: {
-                int32_t: 4
-            }
-            enumerator: "AUTHENTICATED"
-            scalar_value: {
-                int32_t: 5
-            }
-            enumerator: "TEMPLATE_ENUMERATING"
-            scalar_value: {
-                int32_t: 6
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hidl::base::V1_0::DebugInfo"
-        type: TYPE_STRUCT
-        struct_value: {
-            name: "pid"
-            type: TYPE_SCALAR
-            scalar_type: "int32_t"
-        }
-        struct_value: {
-            name: "ptr"
-            type: TYPE_SCALAR
-            scalar_type: "uint64_t"
-        }
-    }
-
     api: {
         name: "onEnrollResult"
         arg: {
diff --git a/biometrics/fingerprint/2.1/vts/functional/Android.bp b/biometrics/fingerprint/2.1/vts/functional/Android.bp
index 7d2e83f..25f7cc0 100644
--- a/biometrics/fingerprint/2.1/vts/functional/Android.bp
+++ b/biometrics/fingerprint/2.1/vts/functional/Android.bp
@@ -30,12 +30,8 @@
     ],
     static_libs: ["libgtest"],
     cflags: [
-        "--coverage",
         "-O0",
         "-g",
-    ],
-    ldflags: [
-        "--coverage"
     ]
 }
 
diff --git a/bluetooth/1.0/vts/functional/Android.bp b/bluetooth/1.0/vts/functional/Android.bp
index 7d04736..086ac99 100644
--- a/bluetooth/1.0/vts/functional/Android.bp
+++ b/bluetooth/1.0/vts/functional/Android.bp
@@ -31,11 +31,7 @@
     ],
     static_libs: ["libgtest"],
     cflags: [
-        "--coverage",
         "-O0",
         "-g",
     ],
-    ldflags: [
-        "--coverage",
-    ],
 }
diff --git a/boot/1.0/vts/BootControl.vts b/boot/1.0/vts/BootControl.vts
index 384ae50..b400f0e 100644
--- a/boot/1.0/vts/BootControl.vts
+++ b/boot/1.0/vts/BootControl.vts
@@ -5,6 +5,7 @@
 package: "android.hardware.boot"
 
 import: "android.hardware.boot@1.0::types"
+import: "android.hidl.base@1.0::types"
 
 interface: {
     api: {
diff --git a/boot/1.0/vts/functional/Android.bp b/boot/1.0/vts/functional/Android.bp
index 714a18b..6c28bf1 100644
--- a/boot/1.0/vts/functional/Android.bp
+++ b/boot/1.0/vts/functional/Android.bp
@@ -30,11 +30,7 @@
     ],
     static_libs: ["libgtest"],
     cflags: [
-        "--coverage",
         "-O0",
         "-g",
-    ],
-    ldflags: [
-        "--coverage"
     ]
 }
diff --git a/camera/device/3.2/default/CameraDeviceSession.cpp b/camera/device/3.2/default/CameraDeviceSession.cpp
index f37c45b..0f3d97b 100644
--- a/camera/device/3.2/default/CameraDeviceSession.cpp
+++ b/camera/device/3.2/default/CameraDeviceSession.cpp
@@ -194,9 +194,9 @@
             mRelease(mDevice, handle);
         } else {
             mModule->unregisterBuffer(mModule, handle);
-            native_handle_close(handle);
-            native_handle_delete(const_cast<native_handle_t*>(handle));
         }
+        native_handle_close(handle);
+        native_handle_delete(const_cast<native_handle_t*>(handle));
     }
 
     // gralloc1
diff --git a/contexthub/1.0/vts/Contexthub.vts b/contexthub/1.0/vts/Contexthub.vts
index b06efe6..a5cdc81 100644
--- a/contexthub/1.0/vts/Contexthub.vts
+++ b/contexthub/1.0/vts/Contexthub.vts
@@ -9,491 +9,6 @@
 import: "android.hidl.base@1.0::types"
 
 interface: {
-    attribute: {
-        name: "::android::hardware::contexthub::V1_0::Result"
-        type: TYPE_ENUM
-        enum_value: {
-            scalar_type: "uint32_t"
-
-            enumerator: "OK"
-            scalar_value: {
-                uint32_t: 0
-            }
-            enumerator: "UNKNOWN_FAILURE"
-            scalar_value: {
-                uint32_t: 1
-            }
-            enumerator: "BAD_PARAMS"
-            scalar_value: {
-                uint32_t: 2
-            }
-            enumerator: "NOT_INIT"
-            scalar_value: {
-                uint32_t: 3
-            }
-            enumerator: "TRANSACTION_FAILED"
-            scalar_value: {
-                uint32_t: 4
-            }
-            enumerator: "TRANSACTION_PENDING"
-            scalar_value: {
-                uint32_t: 5
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::contexthub::V1_0::NanoAppFlags"
-        type: TYPE_ENUM
-        enum_value: {
-            scalar_type: "uint32_t"
-
-            enumerator: "SIGNED"
-            scalar_value: {
-                uint32_t: 1
-            }
-            enumerator: "ENCRYPTED"
-            scalar_value: {
-                uint32_t: 2
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::contexthub::V1_0::NanoAppBinary"
-        type: TYPE_STRUCT
-        struct_value: {
-            name: "appId"
-            type: TYPE_SCALAR
-            scalar_type: "uint64_t"
-        }
-        struct_value: {
-            name: "appVersion"
-            type: TYPE_SCALAR
-            scalar_type: "uint32_t"
-        }
-        struct_value: {
-            name: "flags"
-            type: TYPE_MASK
-            scalar_type: "uint32_t"
-            predefined_type: "::android::hardware::contexthub::V1_0::NanoAppFlags"
-        }
-        struct_value: {
-            name: "targetChreApiMajorVersion"
-            type: TYPE_SCALAR
-            scalar_type: "uint8_t"
-        }
-        struct_value: {
-            name: "targetChreApiMinorVersion"
-            type: TYPE_SCALAR
-            scalar_type: "uint8_t"
-        }
-        struct_value: {
-            name: "customBinary"
-            type: TYPE_VECTOR
-            vector_value: {
-                type: TYPE_SCALAR
-                scalar_type: "uint8_t"
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::contexthub::V1_0::SensorType"
-        type: TYPE_ENUM
-        enum_value: {
-            scalar_type: "uint32_t"
-
-            enumerator: "RESERVED"
-            scalar_value: {
-                uint32_t: 0
-            }
-            enumerator: "ACCELEROMETER"
-            scalar_value: {
-                uint32_t: 1
-            }
-            enumerator: "GYROSCOPE"
-            scalar_value: {
-                uint32_t: 2
-            }
-            enumerator: "MAGNETOMETER"
-            scalar_value: {
-                uint32_t: 3
-            }
-            enumerator: "BAROMETER"
-            scalar_value: {
-                uint32_t: 4
-            }
-            enumerator: "PROXIMITY_SENSOR"
-            scalar_value: {
-                uint32_t: 5
-            }
-            enumerator: "AMBIENT_LIGHT_SENSOR"
-            scalar_value: {
-                uint32_t: 6
-            }
-            enumerator: "STATIONARY_DETECT"
-            scalar_value: {
-                uint32_t: 7
-            }
-            enumerator: "INSTANT_MOTION_DETECT"
-            scalar_value: {
-                uint32_t: 8
-            }
-            enumerator: "GPS"
-            scalar_value: {
-                uint32_t: 256
-            }
-            enumerator: "WIFI"
-            scalar_value: {
-                uint32_t: 512
-            }
-            enumerator: "AUDIO"
-            scalar_value: {
-                uint32_t: 768
-            }
-            enumerator: "CAMERA"
-            scalar_value: {
-                uint32_t: 1024
-            }
-            enumerator: "BLE"
-            scalar_value: {
-                uint32_t: 1280
-            }
-            enumerator: "WWAN"
-            scalar_value: {
-                uint32_t: 1536
-            }
-            enumerator: "PRIVATE_SENSOR_BASE"
-            scalar_value: {
-                uint32_t: 65536
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::contexthub::V1_0::PhysicalSensor"
-        type: TYPE_STRUCT
-        struct_value: {
-            name: "sensorType"
-            type: TYPE_ENUM
-            predefined_type: "::android::hardware::contexthub::V1_0::SensorType"
-        }
-        struct_value: {
-            name: "type"
-            type: TYPE_STRING
-        }
-        struct_value: {
-            name: "name"
-            type: TYPE_STRING
-        }
-        struct_value: {
-            name: "vendor"
-            type: TYPE_STRING
-        }
-        struct_value: {
-            name: "version"
-            type: TYPE_SCALAR
-            scalar_type: "uint32_t"
-        }
-        struct_value: {
-            name: "fifoReservedCount"
-            type: TYPE_SCALAR
-            scalar_type: "uint32_t"
-        }
-        struct_value: {
-            name: "fifoMaxCount"
-            type: TYPE_SCALAR
-            scalar_type: "uint32_t"
-        }
-        struct_value: {
-            name: "minDelayMs"
-            type: TYPE_SCALAR
-            scalar_type: "uint64_t"
-        }
-        struct_value: {
-            name: "maxDelayMs"
-            type: TYPE_SCALAR
-            scalar_type: "uint64_t"
-        }
-        struct_value: {
-            name: "peakPowerMw"
-            type: TYPE_SCALAR
-            scalar_type: "float_t"
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::contexthub::V1_0::ContextHub"
-        type: TYPE_STRUCT
-        struct_value: {
-            name: "name"
-            type: TYPE_STRING
-        }
-        struct_value: {
-            name: "vendor"
-            type: TYPE_STRING
-        }
-        struct_value: {
-            name: "toolchain"
-            type: TYPE_STRING
-        }
-        struct_value: {
-            name: "platformVersion"
-            type: TYPE_SCALAR
-            scalar_type: "uint32_t"
-        }
-        struct_value: {
-            name: "toolchainVersion"
-            type: TYPE_SCALAR
-            scalar_type: "uint32_t"
-        }
-        struct_value: {
-            name: "hubId"
-            type: TYPE_SCALAR
-            scalar_type: "uint32_t"
-        }
-        struct_value: {
-            name: "peakMips"
-            type: TYPE_SCALAR
-            scalar_type: "float_t"
-        }
-        struct_value: {
-            name: "stoppedPowerDrawMw"
-            type: TYPE_SCALAR
-            scalar_type: "float_t"
-        }
-        struct_value: {
-            name: "sleepPowerDrawMw"
-            type: TYPE_SCALAR
-            scalar_type: "float_t"
-        }
-        struct_value: {
-            name: "peakPowerDrawMw"
-            type: TYPE_SCALAR
-            scalar_type: "float_t"
-        }
-        struct_value: {
-            name: "connectedSensors"
-            type: TYPE_VECTOR
-            vector_value: {
-                type: TYPE_STRUCT
-                predefined_type: "::android::hardware::contexthub::V1_0::PhysicalSensor"
-            }
-        }
-        struct_value: {
-            name: "maxSupportedMsgLen"
-            type: TYPE_SCALAR
-            scalar_type: "uint32_t"
-        }
-        struct_value: {
-            name: "chrePlatformId"
-            type: TYPE_SCALAR
-            scalar_type: "uint64_t"
-        }
-        struct_value: {
-            name: "chreApiMajorVersion"
-            type: TYPE_SCALAR
-            scalar_type: "uint8_t"
-        }
-        struct_value: {
-            name: "chreApiMinorVersion"
-            type: TYPE_SCALAR
-            scalar_type: "uint8_t"
-        }
-        struct_value: {
-            name: "chrePatchVersion"
-            type: TYPE_SCALAR
-            scalar_type: "uint16_t"
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::contexthub::V1_0::HostEndPoint"
-        type: TYPE_ENUM
-        enum_value: {
-            scalar_type: "uint16_t"
-
-            enumerator: "BROADCAST"
-            scalar_value: {
-                uint16_t: 65535
-            }
-            enumerator: "UNSPECIFIED"
-            scalar_value: {
-                uint16_t: 65534
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::contexthub::V1_0::ContextHubMsg"
-        type: TYPE_STRUCT
-        struct_value: {
-            name: "appName"
-            type: TYPE_SCALAR
-            scalar_type: "uint64_t"
-        }
-        struct_value: {
-            name: "hostEndPoint"
-            type: TYPE_SCALAR
-            scalar_type: "uint16_t"
-        }
-        struct_value: {
-            name: "msgType"
-            type: TYPE_SCALAR
-            scalar_type: "uint32_t"
-        }
-        struct_value: {
-            name: "msg"
-            type: TYPE_VECTOR
-            vector_value: {
-                type: TYPE_SCALAR
-                scalar_type: "uint8_t"
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::contexthub::V1_0::HubMemoryType"
-        type: TYPE_ENUM
-        enum_value: {
-            scalar_type: "uint32_t"
-
-            enumerator: "MAIN"
-            scalar_value: {
-                uint32_t: 0
-            }
-            enumerator: "SECONDARY"
-            scalar_value: {
-                uint32_t: 1
-            }
-            enumerator: "TCM"
-            scalar_value: {
-                uint32_t: 2
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::contexthub::V1_0::HubMemoryFlag"
-        type: TYPE_ENUM
-        enum_value: {
-            scalar_type: "uint32_t"
-
-            enumerator: "READ"
-            scalar_value: {
-                uint32_t: 1
-            }
-            enumerator: "WRITE"
-            scalar_value: {
-                uint32_t: 2
-            }
-            enumerator: "EXEC"
-            scalar_value: {
-                uint32_t: 4
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::contexthub::V1_0::MemRange"
-        type: TYPE_STRUCT
-        struct_value: {
-            name: "totalBytes"
-            type: TYPE_SCALAR
-            scalar_type: "uint32_t"
-        }
-        struct_value: {
-            name: "freeBytes"
-            type: TYPE_SCALAR
-            scalar_type: "uint32_t"
-        }
-        struct_value: {
-            name: "type"
-            type: TYPE_ENUM
-            predefined_type: "::android::hardware::contexthub::V1_0::HubMemoryType"
-        }
-        struct_value: {
-            name: "flags"
-            type: TYPE_MASK
-            scalar_type: "uint32_t"
-            predefined_type: "::android::hardware::contexthub::V1_0::HubMemoryFlag"
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::contexthub::V1_0::AsyncEventType"
-        type: TYPE_ENUM
-        enum_value: {
-            scalar_type: "uint32_t"
-
-            enumerator: "RESTARTED"
-            scalar_value: {
-                uint32_t: 1
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::contexthub::V1_0::TransactionResult"
-        type: TYPE_ENUM
-        enum_value: {
-            scalar_type: "int32_t"
-
-            enumerator: "SUCCESS"
-            scalar_value: {
-                int32_t: 0
-            }
-            enumerator: "FAILURE"
-            scalar_value: {
-                int32_t: 1
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::contexthub::V1_0::HubAppInfo"
-        type: TYPE_STRUCT
-        struct_value: {
-            name: "appId"
-            type: TYPE_SCALAR
-            scalar_type: "uint64_t"
-        }
-        struct_value: {
-            name: "version"
-            type: TYPE_SCALAR
-            scalar_type: "uint32_t"
-        }
-        struct_value: {
-            name: "memUsage"
-            type: TYPE_VECTOR
-            vector_value: {
-                type: TYPE_STRUCT
-                predefined_type: "::android::hardware::contexthub::V1_0::MemRange"
-            }
-        }
-        struct_value: {
-            name: "enabled"
-            type: TYPE_SCALAR
-            scalar_type: "bool_t"
-        }
-    }
-
-    attribute: {
-        name: "::android::hidl::base::V1_0::DebugInfo"
-        type: TYPE_STRUCT
-        struct_value: {
-            name: "pid"
-            type: TYPE_SCALAR
-            scalar_type: "int32_t"
-        }
-        struct_value: {
-            name: "ptr"
-            type: TYPE_SCALAR
-            scalar_type: "uint64_t"
-        }
-    }
-
     api: {
         name: "getHubs"
         return_type_hidl: {
diff --git a/contexthub/1.0/vts/ContexthubCallback.vts b/contexthub/1.0/vts/ContexthubCallback.vts
index 7897a83..59ff2fe 100644
--- a/contexthub/1.0/vts/ContexthubCallback.vts
+++ b/contexthub/1.0/vts/ContexthubCallback.vts
@@ -8,491 +8,6 @@
 import: "android.hidl.base@1.0::types"
 
 interface: {
-    attribute: {
-        name: "::android::hardware::contexthub::V1_0::Result"
-        type: TYPE_ENUM
-        enum_value: {
-            scalar_type: "uint32_t"
-
-            enumerator: "OK"
-            scalar_value: {
-                uint32_t: 0
-            }
-            enumerator: "UNKNOWN_FAILURE"
-            scalar_value: {
-                uint32_t: 1
-            }
-            enumerator: "BAD_PARAMS"
-            scalar_value: {
-                uint32_t: 2
-            }
-            enumerator: "NOT_INIT"
-            scalar_value: {
-                uint32_t: 3
-            }
-            enumerator: "TRANSACTION_FAILED"
-            scalar_value: {
-                uint32_t: 4
-            }
-            enumerator: "TRANSACTION_PENDING"
-            scalar_value: {
-                uint32_t: 5
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::contexthub::V1_0::NanoAppFlags"
-        type: TYPE_ENUM
-        enum_value: {
-            scalar_type: "uint32_t"
-
-            enumerator: "SIGNED"
-            scalar_value: {
-                uint32_t: 1
-            }
-            enumerator: "ENCRYPTED"
-            scalar_value: {
-                uint32_t: 2
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::contexthub::V1_0::NanoAppBinary"
-        type: TYPE_STRUCT
-        struct_value: {
-            name: "appId"
-            type: TYPE_SCALAR
-            scalar_type: "uint64_t"
-        }
-        struct_value: {
-            name: "appVersion"
-            type: TYPE_SCALAR
-            scalar_type: "uint32_t"
-        }
-        struct_value: {
-            name: "flags"
-            type: TYPE_MASK
-            scalar_type: "uint32_t"
-            predefined_type: "::android::hardware::contexthub::V1_0::NanoAppFlags"
-        }
-        struct_value: {
-            name: "targetChreApiMajorVersion"
-            type: TYPE_SCALAR
-            scalar_type: "uint8_t"
-        }
-        struct_value: {
-            name: "targetChreApiMinorVersion"
-            type: TYPE_SCALAR
-            scalar_type: "uint8_t"
-        }
-        struct_value: {
-            name: "customBinary"
-            type: TYPE_VECTOR
-            vector_value: {
-                type: TYPE_SCALAR
-                scalar_type: "uint8_t"
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::contexthub::V1_0::SensorType"
-        type: TYPE_ENUM
-        enum_value: {
-            scalar_type: "uint32_t"
-
-            enumerator: "RESERVED"
-            scalar_value: {
-                uint32_t: 0
-            }
-            enumerator: "ACCELEROMETER"
-            scalar_value: {
-                uint32_t: 1
-            }
-            enumerator: "GYROSCOPE"
-            scalar_value: {
-                uint32_t: 2
-            }
-            enumerator: "MAGNETOMETER"
-            scalar_value: {
-                uint32_t: 3
-            }
-            enumerator: "BAROMETER"
-            scalar_value: {
-                uint32_t: 4
-            }
-            enumerator: "PROXIMITY_SENSOR"
-            scalar_value: {
-                uint32_t: 5
-            }
-            enumerator: "AMBIENT_LIGHT_SENSOR"
-            scalar_value: {
-                uint32_t: 6
-            }
-            enumerator: "STATIONARY_DETECT"
-            scalar_value: {
-                uint32_t: 7
-            }
-            enumerator: "INSTANT_MOTION_DETECT"
-            scalar_value: {
-                uint32_t: 8
-            }
-            enumerator: "GPS"
-            scalar_value: {
-                uint32_t: 256
-            }
-            enumerator: "WIFI"
-            scalar_value: {
-                uint32_t: 512
-            }
-            enumerator: "AUDIO"
-            scalar_value: {
-                uint32_t: 768
-            }
-            enumerator: "CAMERA"
-            scalar_value: {
-                uint32_t: 1024
-            }
-            enumerator: "BLE"
-            scalar_value: {
-                uint32_t: 1280
-            }
-            enumerator: "WWAN"
-            scalar_value: {
-                uint32_t: 1536
-            }
-            enumerator: "PRIVATE_SENSOR_BASE"
-            scalar_value: {
-                uint32_t: 65536
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::contexthub::V1_0::PhysicalSensor"
-        type: TYPE_STRUCT
-        struct_value: {
-            name: "sensorType"
-            type: TYPE_ENUM
-            predefined_type: "::android::hardware::contexthub::V1_0::SensorType"
-        }
-        struct_value: {
-            name: "type"
-            type: TYPE_STRING
-        }
-        struct_value: {
-            name: "name"
-            type: TYPE_STRING
-        }
-        struct_value: {
-            name: "vendor"
-            type: TYPE_STRING
-        }
-        struct_value: {
-            name: "version"
-            type: TYPE_SCALAR
-            scalar_type: "uint32_t"
-        }
-        struct_value: {
-            name: "fifoReservedCount"
-            type: TYPE_SCALAR
-            scalar_type: "uint32_t"
-        }
-        struct_value: {
-            name: "fifoMaxCount"
-            type: TYPE_SCALAR
-            scalar_type: "uint32_t"
-        }
-        struct_value: {
-            name: "minDelayMs"
-            type: TYPE_SCALAR
-            scalar_type: "uint64_t"
-        }
-        struct_value: {
-            name: "maxDelayMs"
-            type: TYPE_SCALAR
-            scalar_type: "uint64_t"
-        }
-        struct_value: {
-            name: "peakPowerMw"
-            type: TYPE_SCALAR
-            scalar_type: "float_t"
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::contexthub::V1_0::ContextHub"
-        type: TYPE_STRUCT
-        struct_value: {
-            name: "name"
-            type: TYPE_STRING
-        }
-        struct_value: {
-            name: "vendor"
-            type: TYPE_STRING
-        }
-        struct_value: {
-            name: "toolchain"
-            type: TYPE_STRING
-        }
-        struct_value: {
-            name: "platformVersion"
-            type: TYPE_SCALAR
-            scalar_type: "uint32_t"
-        }
-        struct_value: {
-            name: "toolchainVersion"
-            type: TYPE_SCALAR
-            scalar_type: "uint32_t"
-        }
-        struct_value: {
-            name: "hubId"
-            type: TYPE_SCALAR
-            scalar_type: "uint32_t"
-        }
-        struct_value: {
-            name: "peakMips"
-            type: TYPE_SCALAR
-            scalar_type: "float_t"
-        }
-        struct_value: {
-            name: "stoppedPowerDrawMw"
-            type: TYPE_SCALAR
-            scalar_type: "float_t"
-        }
-        struct_value: {
-            name: "sleepPowerDrawMw"
-            type: TYPE_SCALAR
-            scalar_type: "float_t"
-        }
-        struct_value: {
-            name: "peakPowerDrawMw"
-            type: TYPE_SCALAR
-            scalar_type: "float_t"
-        }
-        struct_value: {
-            name: "connectedSensors"
-            type: TYPE_VECTOR
-            vector_value: {
-                type: TYPE_STRUCT
-                predefined_type: "::android::hardware::contexthub::V1_0::PhysicalSensor"
-            }
-        }
-        struct_value: {
-            name: "maxSupportedMsgLen"
-            type: TYPE_SCALAR
-            scalar_type: "uint32_t"
-        }
-        struct_value: {
-            name: "chrePlatformId"
-            type: TYPE_SCALAR
-            scalar_type: "uint64_t"
-        }
-        struct_value: {
-            name: "chreApiMajorVersion"
-            type: TYPE_SCALAR
-            scalar_type: "uint8_t"
-        }
-        struct_value: {
-            name: "chreApiMinorVersion"
-            type: TYPE_SCALAR
-            scalar_type: "uint8_t"
-        }
-        struct_value: {
-            name: "chrePatchVersion"
-            type: TYPE_SCALAR
-            scalar_type: "uint16_t"
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::contexthub::V1_0::HostEndPoint"
-        type: TYPE_ENUM
-        enum_value: {
-            scalar_type: "uint16_t"
-
-            enumerator: "BROADCAST"
-            scalar_value: {
-                uint16_t: 65535
-            }
-            enumerator: "UNSPECIFIED"
-            scalar_value: {
-                uint16_t: 65534
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::contexthub::V1_0::ContextHubMsg"
-        type: TYPE_STRUCT
-        struct_value: {
-            name: "appName"
-            type: TYPE_SCALAR
-            scalar_type: "uint64_t"
-        }
-        struct_value: {
-            name: "hostEndPoint"
-            type: TYPE_SCALAR
-            scalar_type: "uint16_t"
-        }
-        struct_value: {
-            name: "msgType"
-            type: TYPE_SCALAR
-            scalar_type: "uint32_t"
-        }
-        struct_value: {
-            name: "msg"
-            type: TYPE_VECTOR
-            vector_value: {
-                type: TYPE_SCALAR
-                scalar_type: "uint8_t"
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::contexthub::V1_0::HubMemoryType"
-        type: TYPE_ENUM
-        enum_value: {
-            scalar_type: "uint32_t"
-
-            enumerator: "MAIN"
-            scalar_value: {
-                uint32_t: 0
-            }
-            enumerator: "SECONDARY"
-            scalar_value: {
-                uint32_t: 1
-            }
-            enumerator: "TCM"
-            scalar_value: {
-                uint32_t: 2
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::contexthub::V1_0::HubMemoryFlag"
-        type: TYPE_ENUM
-        enum_value: {
-            scalar_type: "uint32_t"
-
-            enumerator: "READ"
-            scalar_value: {
-                uint32_t: 1
-            }
-            enumerator: "WRITE"
-            scalar_value: {
-                uint32_t: 2
-            }
-            enumerator: "EXEC"
-            scalar_value: {
-                uint32_t: 4
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::contexthub::V1_0::MemRange"
-        type: TYPE_STRUCT
-        struct_value: {
-            name: "totalBytes"
-            type: TYPE_SCALAR
-            scalar_type: "uint32_t"
-        }
-        struct_value: {
-            name: "freeBytes"
-            type: TYPE_SCALAR
-            scalar_type: "uint32_t"
-        }
-        struct_value: {
-            name: "type"
-            type: TYPE_ENUM
-            predefined_type: "::android::hardware::contexthub::V1_0::HubMemoryType"
-        }
-        struct_value: {
-            name: "flags"
-            type: TYPE_MASK
-            scalar_type: "uint32_t"
-            predefined_type: "::android::hardware::contexthub::V1_0::HubMemoryFlag"
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::contexthub::V1_0::AsyncEventType"
-        type: TYPE_ENUM
-        enum_value: {
-            scalar_type: "uint32_t"
-
-            enumerator: "RESTARTED"
-            scalar_value: {
-                uint32_t: 1
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::contexthub::V1_0::TransactionResult"
-        type: TYPE_ENUM
-        enum_value: {
-            scalar_type: "int32_t"
-
-            enumerator: "SUCCESS"
-            scalar_value: {
-                int32_t: 0
-            }
-            enumerator: "FAILURE"
-            scalar_value: {
-                int32_t: 1
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::contexthub::V1_0::HubAppInfo"
-        type: TYPE_STRUCT
-        struct_value: {
-            name: "appId"
-            type: TYPE_SCALAR
-            scalar_type: "uint64_t"
-        }
-        struct_value: {
-            name: "version"
-            type: TYPE_SCALAR
-            scalar_type: "uint32_t"
-        }
-        struct_value: {
-            name: "memUsage"
-            type: TYPE_VECTOR
-            vector_value: {
-                type: TYPE_STRUCT
-                predefined_type: "::android::hardware::contexthub::V1_0::MemRange"
-            }
-        }
-        struct_value: {
-            name: "enabled"
-            type: TYPE_SCALAR
-            scalar_type: "bool_t"
-        }
-    }
-
-    attribute: {
-        name: "::android::hidl::base::V1_0::DebugInfo"
-        type: TYPE_STRUCT
-        struct_value: {
-            name: "pid"
-            type: TYPE_SCALAR
-            scalar_type: "int32_t"
-        }
-        struct_value: {
-            name: "ptr"
-            type: TYPE_SCALAR
-            scalar_type: "uint64_t"
-        }
-    }
-
     api: {
         name: "handleClientMsg"
         arg: {
diff --git a/contexthub/1.0/vts/functional/Android.bp b/contexthub/1.0/vts/functional/Android.bp
index e78898e..1c011a0 100644
--- a/contexthub/1.0/vts/functional/Android.bp
+++ b/contexthub/1.0/vts/functional/Android.bp
@@ -27,12 +27,8 @@
     ],
     static_libs: ["libgtest"],
     cflags: [
-        "--coverage",
         "-O0",
         "-g",
-    ],
-    ldflags: [
-        "--coverage",
-    ],
+    ]
 }
 
diff --git a/drm/1.0/default/CryptoFactory.cpp b/drm/1.0/default/CryptoFactory.cpp
index 13cad67..e46233d 100644
--- a/drm/1.0/default/CryptoFactory.cpp
+++ b/drm/1.0/default/CryptoFactory.cpp
@@ -15,11 +15,10 @@
  */
 #define LOG_TAG "android.hardware.drm@1.0-impl"
 
-#include <utils/Log.h>
-
 #include "CryptoFactory.h"
 #include "CryptoPlugin.h"
 #include "TypeConvert.h"
+#include <utils/Log.h>
 
 namespace android {
 namespace hardware {
@@ -27,63 +26,45 @@
 namespace V1_0 {
 namespace implementation {
 
-CryptoFactory::CryptoFactory() :
-    trebleLoader("/vendor/lib/hw", "createCryptoFactory"),
-    legacyLoader("/vendor/lib/mediadrm", "createCryptoFactory") {
-}
-
-// Methods from ::android::hardware::drm::V1_0::ICryptoFactory follow.
-Return<bool> CryptoFactory::isCryptoSchemeSupported(
-        const hidl_array<uint8_t, 16>& uuid) {
-    return isCryptoSchemeSupported(trebleLoader, uuid) ||
-            isCryptoSchemeSupported(legacyLoader, uuid);
-}
-
-Return<void> CryptoFactory::createPlugin(const hidl_array<uint8_t, 16>& uuid,
-        const hidl_vec<uint8_t>& initData, createPlugin_cb _hidl_cb) {
-    sp<ICryptoPlugin> plugin = createTreblePlugin(uuid, initData);
-    if (plugin == nullptr) {
-        plugin = createLegacyPlugin(uuid, initData);
+    CryptoFactory::CryptoFactory() :
+        loader("/vendor/lib/mediadrm", "createCryptoFactory") {
     }
-    _hidl_cb(plugin != nullptr ? Status::OK : Status::ERROR_DRM_CANNOT_HANDLE, plugin);
-    return Void();
-}
 
-sp<ICryptoPlugin> CryptoFactory::createTreblePlugin(const hidl_array<uint8_t, 16>& uuid,
-        const hidl_vec<uint8_t>& initData) {
-    sp<ICryptoPlugin> plugin;
-    for (size_t i = 0; i < trebleLoader.factoryCount(); i++) {
-        Return<void> hResult = trebleLoader.getFactory(i)->createPlugin(uuid, initData,
-                [&](Status status, const sp<ICryptoPlugin>& hPlugin) {
-                    if (status == Status::OK) {
-                        plugin = hPlugin;
-                    }
+    // Methods from ::android::hardware::drm::V1_0::ICryptoFactory follow.
+    Return<bool> CryptoFactory::isCryptoSchemeSupported(
+            const hidl_array<uint8_t, 16>& uuid) {
+        for (size_t i = 0; i < loader.factoryCount(); i++) {
+            if (loader.getFactory(i)->isCryptoSchemeSupported(uuid.data())) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    Return<void> CryptoFactory::createPlugin(const hidl_array<uint8_t, 16>& uuid,
+            const hidl_vec<uint8_t>& initData, createPlugin_cb _hidl_cb) {
+        for (size_t i = 0; i < loader.factoryCount(); i++) {
+            if (loader.getFactory(i)->isCryptoSchemeSupported(uuid.data())) {
+                android::CryptoPlugin *legacyPlugin = NULL;
+                status_t status = loader.getFactory(i)->createPlugin(uuid.data(),
+                        initData.data(), initData.size(), &legacyPlugin);
+                CryptoPlugin *newPlugin = NULL;
+                if (legacyPlugin == NULL) {
+                    ALOGE("Crypto legacy HAL: failed to create crypto plugin");
+                } else {
+                    newPlugin = new CryptoPlugin(legacyPlugin);
                 }
-            );
-        if (plugin != nullptr) {
-            return plugin;
+                _hidl_cb(toStatus(status), newPlugin);
+                return Void();
+            }
         }
+        _hidl_cb(Status::ERROR_DRM_CANNOT_HANDLE, NULL);
+        return Void();
     }
-    return nullptr;
-}
 
-sp<ICryptoPlugin> CryptoFactory::createLegacyPlugin(const hidl_array<uint8_t, 16>& uuid,
-        const hidl_vec<uint8_t>& initData) {
-    android::CryptoPlugin *legacyPlugin = nullptr;
-    for (size_t i = 0; i < legacyLoader.factoryCount(); i++) {
-        legacyLoader.getFactory(i)->createPlugin(uuid.data(),
-                initData.data(), initData.size(), &legacyPlugin);
-        if (legacyPlugin) {
-            return new CryptoPlugin(legacyPlugin);
-        }
+    ICryptoFactory* HIDL_FETCH_ICryptoFactory(const char* /* name */) {
+        return new CryptoFactory();
     }
-    return nullptr;
-}
-
-
-ICryptoFactory* HIDL_FETCH_ICryptoFactory(const char* /* name */) {
-    return new CryptoFactory();
-}
 
 }  // namespace implementation
 }  // namespace V1_0
diff --git a/drm/1.0/default/CryptoFactory.h b/drm/1.0/default/CryptoFactory.h
index d774406..412b557 100644
--- a/drm/1.0/default/CryptoFactory.h
+++ b/drm/1.0/default/CryptoFactory.h
@@ -41,7 +41,8 @@
     CryptoFactory();
     virtual ~CryptoFactory() {}
 
-    // Methods from ::android::hardware::drmn::V1_0::ICryptoFactory follow.
+    // Methods from ::android::hardware::drm::V1_0::ICryptoFactory follow.
+
     Return<bool> isCryptoSchemeSupported(const hidl_array<uint8_t, 16>& uuid)
             override;
 
@@ -50,27 +51,7 @@
             override;
 
 private:
-    template <typename L> Return<bool> isCryptoSchemeSupported(
-            const L& loader, const hidl_array<uint8_t, 16>& uuid) {
-        for (size_t i = 0; i < loader.factoryCount(); i++) {
-           if (loader.getFactory(i)->isCryptoSchemeSupported(uuid.data())) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    sp<ICryptoPlugin> createTreblePlugin(const hidl_array<uint8_t, 16>& uuid,
-                    const hidl_vec<uint8_t>& initData);
-
-    sp<ICryptoPlugin> createLegacyPlugin(const hidl_array<uint8_t, 16>& uuid,
-                    const hidl_vec<uint8_t>& initData);
-
-    typedef android::PluginLoader<ICryptoFactory> PluginLoader;
-    PluginLoader trebleLoader;
-
-    typedef android::PluginLoader<android::CryptoFactory> LegacyLoader;
-    LegacyLoader legacyLoader;
+    android::PluginLoader<android::CryptoFactory> loader;
 
     CryptoFactory(const CryptoFactory &) = delete;
     void operator=(const CryptoFactory &) = delete;
diff --git a/drm/1.0/default/DrmFactory.cpp b/drm/1.0/default/DrmFactory.cpp
index c98c1da..92f54f1 100644
--- a/drm/1.0/default/DrmFactory.cpp
+++ b/drm/1.0/default/DrmFactory.cpp
@@ -15,11 +15,10 @@
  */
 #define LOG_TAG "android.hardware.drm@1.0-impl"
 
-#include <utils/Log.h>
-
 #include "DrmFactory.h"
 #include "DrmPlugin.h"
 #include "TypeConvert.h"
+#include <utils/Log.h>
 
 namespace android {
 namespace hardware {
@@ -27,66 +26,56 @@
 namespace V1_0 {
 namespace implementation {
 
-DrmFactory::DrmFactory() :
-    trebleLoader("/vendor/lib/hw", "createDrmFactory"),
-    legacyLoader("/vendor/lib/mediadrm", "createDrmFactory") {
-}
+    DrmFactory::DrmFactory() :
+        loader("/vendor/lib/mediadrm", "createDrmFactory") {
+    }
 
-// Methods from ::android::hardware::drm::V1_0::IDrmFactory follow.
-Return<bool> DrmFactory::isCryptoSchemeSupported(
-        const hidl_array<uint8_t, 16>& uuid) {
-    return isCryptoSchemeSupported(trebleLoader, uuid) ||
-            isCryptoSchemeSupported(legacyLoader, uuid);
-}
+    // Methods from ::android::hardware::drm::V1_0::IDrmFactory follow.
+    Return<bool> DrmFactory::isCryptoSchemeSupported (
+            const hidl_array<uint8_t, 16>& uuid) {
+        for (size_t i = 0; i < loader.factoryCount(); i++) {
+            if (loader.getFactory(i)->isCryptoSchemeSupported(uuid.data())) {
+                return true;
+            }
+        }
+        return false;
+    }
 
-Return<bool> DrmFactory::isContentTypeSupported (
-        const hidl_string& mimeType) {
-    return isContentTypeSupported<PluginLoader, hidl_string>(trebleLoader, mimeType) ||
-            isContentTypeSupported<LegacyLoader, String8>(legacyLoader, mimeType);
-}
+    Return<bool> DrmFactory::isContentTypeSupported (
+            const hidl_string& mimeType) {
+        for (size_t i = 0; i < loader.factoryCount(); i++) {
+            if (loader.getFactory(i)->isContentTypeSupported(String8(mimeType.c_str()))) {
+                return true;
+            }
+        }
+        return false;
+    }
 
     Return<void> DrmFactory::createPlugin(const hidl_array<uint8_t, 16>& uuid,
             const hidl_string& appPackageName, createPlugin_cb _hidl_cb) {
-        sp<IDrmPlugin> plugin = createTreblePlugin(uuid, appPackageName);
-    if (plugin == nullptr) {
-        plugin = createLegacyPlugin(uuid);
-    }
-    _hidl_cb(plugin != nullptr ? Status::OK : Status::ERROR_DRM_CANNOT_HANDLE, plugin);
-    return Void();
-}
 
-sp<IDrmPlugin> DrmFactory::createTreblePlugin(const hidl_array<uint8_t, 16>& uuid,
-        const hidl_string& appPackageName) {
-    sp<IDrmPlugin> plugin;
-    for (size_t i = 0; i < trebleLoader.factoryCount(); i++) {
-        Return<void> hResult = trebleLoader.getFactory(i)->createPlugin(uuid,
-                appPackageName, [&](Status status, const sp<IDrmPlugin>& hPlugin) {
-                    if (status == Status::OK) {
-                        plugin = hPlugin;
-                    }
+        for (size_t i = 0; i < loader.factoryCount(); i++) {
+            if (loader.getFactory(i)->isCryptoSchemeSupported(uuid.data())) {
+                android::DrmPlugin *legacyPlugin = NULL;
+                status_t status = loader.getFactory(i)->createDrmPlugin(
+                        uuid.data(), &legacyPlugin);
+                DrmPlugin *newPlugin = NULL;
+                if (legacyPlugin == NULL) {
+                    ALOGE("Drm legacy HAL: failed to create drm plugin");
+                } else {
+                    newPlugin = new DrmPlugin(legacyPlugin);
                 }
-            );
-        if (plugin != nullptr) {
-            return plugin;
+                _hidl_cb(toStatus(status), newPlugin);
+                return Void();
+            }
         }
+        _hidl_cb(Status::ERROR_DRM_CANNOT_HANDLE, NULL);
+        return Void();
     }
-    return nullptr;
-}
 
-sp<IDrmPlugin> DrmFactory::createLegacyPlugin(const hidl_array<uint8_t, 16>& uuid) {
-    android::DrmPlugin *legacyPlugin = nullptr;
-    for (size_t i = 0; i < legacyLoader.factoryCount(); i++) {
-        legacyLoader.getFactory(i)->createDrmPlugin(uuid.data(), &legacyPlugin);
-        if (legacyPlugin) {
-            return new DrmPlugin(legacyPlugin);
-        }
+    IDrmFactory* HIDL_FETCH_IDrmFactory(const char* /* name */) {
+        return new DrmFactory();
     }
-    return nullptr;
-}
-
-IDrmFactory* HIDL_FETCH_IDrmFactory(const char* /* name */) {
-    return new DrmFactory();
-}
 
 }  // namespace implementation
 }  // namespace V1_0
diff --git a/drm/1.0/default/DrmFactory.h b/drm/1.0/default/DrmFactory.h
index 2e71624..a008844 100644
--- a/drm/1.0/default/DrmFactory.h
+++ b/drm/1.0/default/DrmFactory.h
@@ -42,45 +42,18 @@
     virtual ~DrmFactory() {}
 
     // Methods from ::android::hardware::drm::V1_0::IDrmFactory follow.
+
     Return<bool> isCryptoSchemeSupported(const hidl_array<uint8_t, 16>& uuid)
             override;
 
-    Return<bool> isContentTypeSupported(const hidl_string& mimeType)
+    Return<bool> isContentTypeSupported(const hidl_string &mimeType)
             override;
 
     Return<void> createPlugin(const hidl_array<uint8_t, 16>& uuid,
             const hidl_string& appPackageName, createPlugin_cb _hidl_cb) override;
 
 private:
-    template <typename L> Return<bool> isCryptoSchemeSupported(
-            const L& loader, const hidl_array<uint8_t, 16>& uuid) {
-        for (size_t i = 0; i < loader.factoryCount(); i++) {
-            if (loader.getFactory(i)->isCryptoSchemeSupported(uuid.data())) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    template <typename L, typename S> Return<bool> isContentTypeSupported(
-            const L& loader, const hidl_string& mimeType) {
-        for (size_t i = 0; i < loader.factoryCount(); i++) {
-            if (loader.getFactory(i)->isContentTypeSupported(S(mimeType))) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    sp<IDrmPlugin> createTreblePlugin(const hidl_array<uint8_t, 16>& uuid,
-        const hidl_string& appPackageName);
-    sp<IDrmPlugin> createLegacyPlugin(const hidl_array<uint8_t, 16>& uuid);
-
-    typedef android::PluginLoader<IDrmFactory> PluginLoader;
-    PluginLoader trebleLoader;
-
-    typedef android::PluginLoader<android::DrmFactory> LegacyLoader;
-    LegacyLoader legacyLoader;
+    android::PluginLoader<android::DrmFactory> loader;
 
     DrmFactory(const DrmFactory &) = delete;
     void operator=(const DrmFactory &) = delete;
diff --git a/gatekeeper/1.0/vts/Gatekeeper.vts b/gatekeeper/1.0/vts/Gatekeeper.vts
index 25dc32f..9e63488 100644
--- a/gatekeeper/1.0/vts/Gatekeeper.vts
+++ b/gatekeeper/1.0/vts/Gatekeeper.vts
@@ -5,6 +5,7 @@
 package: "android.hardware.gatekeeper"
 
 import: "android.hardware.gatekeeper@1.0::types"
+import: "android.hidl.base@1.0::types"
 
 interface: {
     api: {
diff --git a/gatekeeper/1.0/vts/functional/Android.bp b/gatekeeper/1.0/vts/functional/Android.bp
index e79e40e..70a85c6 100644
--- a/gatekeeper/1.0/vts/functional/Android.bp
+++ b/gatekeeper/1.0/vts/functional/Android.bp
@@ -31,11 +31,7 @@
     ],
     static_libs: ["libgtest"],
     cflags: [
-        "--coverage",
         "-O0",
         "-g",
-    ],
-    ldflags: [
-        "--coverage"
     ]
 }
diff --git a/graphics/allocator/2.0/vts/Allocator.vts b/graphics/allocator/2.0/vts/Allocator.vts
index e767cbd..b26876d 100644
--- a/graphics/allocator/2.0/vts/Allocator.vts
+++ b/graphics/allocator/2.0/vts/Allocator.vts
@@ -6,6 +6,8 @@
 
 import: "android.hardware.graphics.allocator@2.0::IAllocatorClient"
 import: "android.hardware.graphics.allocator@2.0::types"
+import: "android.hardware.graphics.common@1.0::types"
+import: "android.hidl.base@1.0::types"
 
 interface: {
     attribute: {
@@ -73,8 +75,7 @@
         }
         return_type_hidl: {
             type: TYPE_HIDL_INTERFACE
-            predefined_type: "IAllocatorClient"
-            is_callback: false
+            predefined_type: "::android::hardware::graphics::allocator::V2_0::IAllocatorClient"
         }
         callflow: {
             entry: true
diff --git a/graphics/allocator/2.0/vts/AllocatorClient.vts b/graphics/allocator/2.0/vts/AllocatorClient.vts
index 2ab19f7..585c36c 100644
--- a/graphics/allocator/2.0/vts/AllocatorClient.vts
+++ b/graphics/allocator/2.0/vts/AllocatorClient.vts
@@ -6,475 +6,10 @@
 
 import: "android.hardware.graphics.allocator@2.0::types"
 import: "android.hardware.graphics.common@1.0::types"
+import: "android.hidl.base@1.0::types"
 
 interface: {
     attribute: {
-        name: "::android::hardware::graphics::common::V1_0::PixelFormat"
-        type: TYPE_ENUM
-        enum_value: {
-            scalar_type: "int32_t"
-
-            enumerator: "RGBA_8888"
-            scalar_value: {
-                int32_t: 1
-            }
-            enumerator: "RGBX_8888"
-            scalar_value: {
-                int32_t: 2
-            }
-            enumerator: "RGB_888"
-            scalar_value: {
-                int32_t: 3
-            }
-            enumerator: "RGB_565"
-            scalar_value: {
-                int32_t: 4
-            }
-            enumerator: "BGRA_8888"
-            scalar_value: {
-                int32_t: 5
-            }
-            enumerator: "RGBA_FP16"
-            scalar_value: {
-                int32_t: 22
-            }
-            enumerator: "YV12"
-            scalar_value: {
-                int32_t: 842094169
-            }
-            enumerator: "Y8"
-            scalar_value: {
-                int32_t: 538982489
-            }
-            enumerator: "Y16"
-            scalar_value: {
-                int32_t: 540422489
-            }
-            enumerator: "RAW16"
-            scalar_value: {
-                int32_t: 32
-            }
-            enumerator: "RAW10"
-            scalar_value: {
-                int32_t: 37
-            }
-            enumerator: "RAW12"
-            scalar_value: {
-                int32_t: 38
-            }
-            enumerator: "RAW_OPAQUE"
-            scalar_value: {
-                int32_t: 36
-            }
-            enumerator: "BLOB"
-            scalar_value: {
-                int32_t: 33
-            }
-            enumerator: "IMPLEMENTATION_DEFINED"
-            scalar_value: {
-                int32_t: 34
-            }
-            enumerator: "YCBCR_420_888"
-            scalar_value: {
-                int32_t: 35
-            }
-            enumerator: "YCBCR_422_888"
-            scalar_value: {
-                int32_t: 39
-            }
-            enumerator: "YCBCR_444_888"
-            scalar_value: {
-                int32_t: 40
-            }
-            enumerator: "FLEX_RGB_888"
-            scalar_value: {
-                int32_t: 41
-            }
-            enumerator: "FLEX_RGBA_8888"
-            scalar_value: {
-                int32_t: 42
-            }
-            enumerator: "YCBCR_422_SP"
-            scalar_value: {
-                int32_t: 16
-            }
-            enumerator: "YCRCB_420_SP"
-            scalar_value: {
-                int32_t: 17
-            }
-            enumerator: "YCBCR_422_I"
-            scalar_value: {
-                int32_t: 20
-            }
-            enumerator: "JPEG"
-            scalar_value: {
-                int32_t: 256
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::graphics::common::V1_0::Transform"
-        type: TYPE_ENUM
-        enum_value: {
-            scalar_type: "int32_t"
-
-            enumerator: "FLIP_H"
-            scalar_value: {
-                int32_t: 1
-            }
-            enumerator: "FLIP_V"
-            scalar_value: {
-                int32_t: 2
-            }
-            enumerator: "ROT_90"
-            scalar_value: {
-                int32_t: 4
-            }
-            enumerator: "ROT_180"
-            scalar_value: {
-                int32_t: 3
-            }
-            enumerator: "ROT_270"
-            scalar_value: {
-                int32_t: 7
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::graphics::common::V1_0::Dataspace"
-        type: TYPE_ENUM
-        enum_value: {
-            scalar_type: "int32_t"
-
-            enumerator: "UNKNOWN"
-            scalar_value: {
-                int32_t: 0
-            }
-            enumerator: "ARBITRARY"
-            scalar_value: {
-                int32_t: 1
-            }
-            enumerator: "STANDARD_SHIFT"
-            scalar_value: {
-                int32_t: 16
-            }
-            enumerator: "STANDARD_MASK"
-            scalar_value: {
-                int32_t: 4128768
-            }
-            enumerator: "STANDARD_UNSPECIFIED"
-            scalar_value: {
-                int32_t: 0
-            }
-            enumerator: "STANDARD_BT709"
-            scalar_value: {
-                int32_t: 65536
-            }
-            enumerator: "STANDARD_BT601_625"
-            scalar_value: {
-                int32_t: 131072
-            }
-            enumerator: "STANDARD_BT601_625_UNADJUSTED"
-            scalar_value: {
-                int32_t: 196608
-            }
-            enumerator: "STANDARD_BT601_525"
-            scalar_value: {
-                int32_t: 262144
-            }
-            enumerator: "STANDARD_BT601_525_UNADJUSTED"
-            scalar_value: {
-                int32_t: 327680
-            }
-            enumerator: "STANDARD_BT2020"
-            scalar_value: {
-                int32_t: 393216
-            }
-            enumerator: "STANDARD_BT2020_CONSTANT_LUMINANCE"
-            scalar_value: {
-                int32_t: 458752
-            }
-            enumerator: "STANDARD_BT470M"
-            scalar_value: {
-                int32_t: 524288
-            }
-            enumerator: "STANDARD_FILM"
-            scalar_value: {
-                int32_t: 589824
-            }
-            enumerator: "STANDARD_DCI_P3"
-            scalar_value: {
-                int32_t: 655360
-            }
-            enumerator: "STANDARD_ADOBE_RGB"
-            scalar_value: {
-                int32_t: 720896
-            }
-            enumerator: "TRANSFER_SHIFT"
-            scalar_value: {
-                int32_t: 22
-            }
-            enumerator: "TRANSFER_MASK"
-            scalar_value: {
-                int32_t: 130023424
-            }
-            enumerator: "TRANSFER_UNSPECIFIED"
-            scalar_value: {
-                int32_t: 0
-            }
-            enumerator: "TRANSFER_LINEAR"
-            scalar_value: {
-                int32_t: 4194304
-            }
-            enumerator: "TRANSFER_SRGB"
-            scalar_value: {
-                int32_t: 8388608
-            }
-            enumerator: "TRANSFER_SMPTE_170M"
-            scalar_value: {
-                int32_t: 12582912
-            }
-            enumerator: "TRANSFER_GAMMA2_2"
-            scalar_value: {
-                int32_t: 16777216
-            }
-            enumerator: "TRANSFER_GAMMA2_6"
-            scalar_value: {
-                int32_t: 20971520
-            }
-            enumerator: "TRANSFER_GAMMA2_8"
-            scalar_value: {
-                int32_t: 25165824
-            }
-            enumerator: "TRANSFER_ST2084"
-            scalar_value: {
-                int32_t: 29360128
-            }
-            enumerator: "TRANSFER_HLG"
-            scalar_value: {
-                int32_t: 33554432
-            }
-            enumerator: "RANGE_SHIFT"
-            scalar_value: {
-                int32_t: 27
-            }
-            enumerator: "RANGE_MASK"
-            scalar_value: {
-                int32_t: 939524096
-            }
-            enumerator: "RANGE_UNSPECIFIED"
-            scalar_value: {
-                int32_t: 0
-            }
-            enumerator: "RANGE_FULL"
-            scalar_value: {
-                int32_t: 134217728
-            }
-            enumerator: "RANGE_LIMITED"
-            scalar_value: {
-                int32_t: 268435456
-            }
-            enumerator: "RANGE_EXTENDED"
-            scalar_value: {
-                int32_t: 402653184
-            }
-            enumerator: "SRGB_LINEAR"
-            scalar_value: {
-                int32_t: 512
-            }
-            enumerator: "V0_SRGB_LINEAR"
-            scalar_value: {
-                int32_t: 138477568
-            }
-            enumerator: "V0_SCRGB_LINEAR"
-            scalar_value: {
-                int32_t: 406913024
-            }
-            enumerator: "SRGB"
-            scalar_value: {
-                int32_t: 513
-            }
-            enumerator: "V0_SRGB"
-            scalar_value: {
-                int32_t: 142671872
-            }
-            enumerator: "V0_SCRGB"
-            scalar_value: {
-                int32_t: 411107328
-            }
-            enumerator: "JFIF"
-            scalar_value: {
-                int32_t: 257
-            }
-            enumerator: "V0_JFIF"
-            scalar_value: {
-                int32_t: 146931712
-            }
-            enumerator: "BT601_625"
-            scalar_value: {
-                int32_t: 258
-            }
-            enumerator: "V0_BT601_625"
-            scalar_value: {
-                int32_t: 281149440
-            }
-            enumerator: "BT601_525"
-            scalar_value: {
-                int32_t: 259
-            }
-            enumerator: "V0_BT601_525"
-            scalar_value: {
-                int32_t: 281280512
-            }
-            enumerator: "BT709"
-            scalar_value: {
-                int32_t: 260
-            }
-            enumerator: "V0_BT709"
-            scalar_value: {
-                int32_t: 281083904
-            }
-            enumerator: "DCI_P3_LINEAR"
-            scalar_value: {
-                int32_t: 139067392
-            }
-            enumerator: "DCI_P3"
-            scalar_value: {
-                int32_t: 155844608
-            }
-            enumerator: "DISPLAY_P3_LINEAR"
-            scalar_value: {
-                int32_t: 139067392
-            }
-            enumerator: "DISPLAY_P3"
-            scalar_value: {
-                int32_t: 143261696
-            }
-            enumerator: "ADOBE_RGB"
-            scalar_value: {
-                int32_t: 151715840
-            }
-            enumerator: "BT2020_LINEAR"
-            scalar_value: {
-                int32_t: 138805248
-            }
-            enumerator: "BT2020"
-            scalar_value: {
-                int32_t: 147193856
-            }
-            enumerator: "DEPTH"
-            scalar_value: {
-                int32_t: 4096
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::graphics::common::V1_0::ColorMode"
-        type: TYPE_ENUM
-        enum_value: {
-            scalar_type: "int32_t"
-
-            enumerator: "NATIVE"
-            scalar_value: {
-                int32_t: 0
-            }
-            enumerator: "STANDARD_BT601_625"
-            scalar_value: {
-                int32_t: 1
-            }
-            enumerator: "STANDARD_BT601_625_UNADJUSTED"
-            scalar_value: {
-                int32_t: 2
-            }
-            enumerator: "STANDARD_BT601_525"
-            scalar_value: {
-                int32_t: 3
-            }
-            enumerator: "STANDARD_BT601_525_UNADJUSTED"
-            scalar_value: {
-                int32_t: 4
-            }
-            enumerator: "STANDARD_BT709"
-            scalar_value: {
-                int32_t: 5
-            }
-            enumerator: "DCI_P3"
-            scalar_value: {
-                int32_t: 6
-            }
-            enumerator: "SRGB"
-            scalar_value: {
-                int32_t: 7
-            }
-            enumerator: "ADOBE_RGB"
-            scalar_value: {
-                int32_t: 8
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::graphics::common::V1_0::ColorTransform"
-        type: TYPE_ENUM
-        enum_value: {
-            scalar_type: "int32_t"
-
-            enumerator: "IDENTITY"
-            scalar_value: {
-                int32_t: 0
-            }
-            enumerator: "ARBITRARY_MATRIX"
-            scalar_value: {
-                int32_t: 1
-            }
-            enumerator: "VALUE_INVERSE"
-            scalar_value: {
-                int32_t: 2
-            }
-            enumerator: "GRAYSCALE"
-            scalar_value: {
-                int32_t: 3
-            }
-            enumerator: "CORRECT_PROTANOPIA"
-            scalar_value: {
-                int32_t: 4
-            }
-            enumerator: "CORRECT_DEUTERANOPIA"
-            scalar_value: {
-                int32_t: 5
-            }
-            enumerator: "CORRECT_TRITANOPIA"
-            scalar_value: {
-                int32_t: 6
-            }
-        }
-    }
-
-    attribute: {
-        name: "::android::hardware::graphics::common::V1_0::Hdr"
-        type: TYPE_ENUM
-        enum_value: {
-            scalar_type: "int32_t"
-
-            enumerator: "DOLBY_VISION"
-            scalar_value: {
-                int32_t: 1
-            }
-            enumerator: "HDR10"
-            scalar_value: {
-                int32_t: 2
-            }
-            enumerator: "HLG"
-            scalar_value: {
-                int32_t: 3
-            }
-        }
-    }
-
-    attribute: {
         name: "::android::hardware::graphics::allocator::V2_0::IAllocatorClient::BufferDescriptorInfo"
         type: TYPE_STRUCT
         struct_value: {
diff --git a/graphics/allocator/2.0/vts/functional/Android.bp b/graphics/allocator/2.0/vts/functional/Android.bp
index 194b228..2f58836 100644
--- a/graphics/allocator/2.0/vts/functional/Android.bp
+++ b/graphics/allocator/2.0/vts/functional/Android.bp
@@ -31,11 +31,7 @@
     ],
     static_libs: ["libgtest"],
     cflags: [
-        "--coverage",
         "-O0",
         "-g",
-    ],
-    ldflags: [
-        "--coverage",
-    ],
+    ]
 }
diff --git a/graphics/allocator/2.0/vts/types.vts b/graphics/allocator/2.0/vts/types.vts
index 2b7e47a..4a8376c 100644
--- a/graphics/allocator/2.0/vts/types.vts
+++ b/graphics/allocator/2.0/vts/types.vts
@@ -84,6 +84,10 @@
         scalar_value: {
             uint64_t: 4194304
         }
+        enumerator: "SENSOR_DIRECT_DATA"
+        scalar_value: {
+            uint64_t: 8388608
+        }
     }
 }
 
@@ -129,6 +133,10 @@
         scalar_value: {
             uint64_t: 1048576
         }
+        enumerator: "GPU_DATA_BUFFER"
+        scalar_value: {
+            uint64_t: 8388608
+        }
     }
 }
 
diff --git a/graphics/composer/2.1/vts/Composer.vts b/graphics/composer/2.1/vts/Composer.vts
index ee5c650..e60e39c 100644
--- a/graphics/composer/2.1/vts/Composer.vts
+++ b/graphics/composer/2.1/vts/Composer.vts
@@ -4,8 +4,11 @@
 
 package: "android.hardware.graphics.composer"
 
+import: "android.hardware.graphics.common@1.0::types"
+import: "android.hardware.graphics.composer@2.1::IComposerCallback"
 import: "android.hardware.graphics.composer@2.1::IComposerClient"
 import: "android.hardware.graphics.composer@2.1::types"
+import: "android.hidl.base@1.0::types"
 
 interface: {
     attribute: {
@@ -73,8 +76,7 @@
         }
         return_type_hidl: {
             type: TYPE_HIDL_INTERFACE
-            predefined_type: "IComposerClient"
-            is_callback: false
+            predefined_type: "::android::hardware::graphics::composer::V2_1::IComposerClient"
         }
         callflow: {
             entry: true
diff --git a/graphics/composer/2.1/vts/ComposerCallback.vts b/graphics/composer/2.1/vts/ComposerCallback.vts
index a5a2aa9..b83cf94 100644
--- a/graphics/composer/2.1/vts/ComposerCallback.vts
+++ b/graphics/composer/2.1/vts/ComposerCallback.vts
@@ -5,6 +5,7 @@
 package: "android.hardware.graphics.composer"
 
 import: "android.hardware.graphics.composer@2.1::types"
+import: "android.hidl.base@1.0::types"
 
 interface: {
     attribute: {
diff --git a/graphics/composer/2.1/vts/ComposerClient.vts b/graphics/composer/2.1/vts/ComposerClient.vts
index db6b1ff..ac1d7fb 100644
--- a/graphics/composer/2.1/vts/ComposerClient.vts
+++ b/graphics/composer/2.1/vts/ComposerClient.vts
@@ -7,6 +7,7 @@
 import: "android.hardware.graphics.common@1.0::types"
 import: "android.hardware.graphics.composer@2.1::IComposerCallback"
 import: "android.hardware.graphics.composer@2.1::types"
+import: "android.hidl.base@1.0::types"
 
 interface: {
     attribute: {
@@ -422,8 +423,7 @@
         name: "registerCallback"
         arg: {
             type: TYPE_HIDL_CALLBACK
-            predefined_type: "IComposerCallback"
-            is_callback: true
+            predefined_type: "::android::hardware::graphics::composer::V2_1::IComposerCallback"
         }
         callflow: {
             entry: true
@@ -849,6 +849,11 @@
             predefined_type: "::android::hardware::graphics::composer::V2_1::Error"
         }
         arg: {
+            type: TYPE_FMQ_SYNC
+            fmq_value: {
+                type: TYPE_SCALAR
+                scalar_type: "uint32_t"
+            }
         }
         callflow: {
             next: "*"
@@ -862,6 +867,11 @@
             predefined_type: "::android::hardware::graphics::composer::V2_1::Error"
         }
         return_type_hidl: {
+            type: TYPE_FMQ_SYNC
+            fmq_value: {
+                type: TYPE_SCALAR
+                scalar_type: "uint32_t"
+            }
         }
         callflow: {
             next: "*"
diff --git a/graphics/composer/2.1/vts/functional/Android.bp b/graphics/composer/2.1/vts/functional/Android.bp
index c3f7636..aa2eae3 100644
--- a/graphics/composer/2.1/vts/functional/Android.bp
+++ b/graphics/composer/2.1/vts/functional/Android.bp
@@ -35,11 +35,7 @@
     ],
     static_libs: ["libgtest", "libhwcomposer-command-buffer"],
     cflags: [
-        "--coverage",
         "-O0",
         "-g",
-    ],
-    ldflags: [
-        "--coverage",
-    ],
+    ]
 }
diff --git a/graphics/mapper/2.0/vts/Mapper.vts b/graphics/mapper/2.0/vts/Mapper.vts
index 26e049f..baf95dc 100644
--- a/graphics/mapper/2.0/vts/Mapper.vts
+++ b/graphics/mapper/2.0/vts/Mapper.vts
@@ -7,6 +7,7 @@
 import: "android.hardware.graphics.allocator@2.0::types"
 import: "android.hardware.graphics.common@1.0::types"
 import: "android.hardware.graphics.mapper@2.0::types"
+import: "android.hidl.base@1.0::types"
 
 interface: {
     attribute: {
diff --git a/graphics/mapper/2.0/vts/functional/Android.bp b/graphics/mapper/2.0/vts/functional/Android.bp
index 27ea350..efb868b 100644
--- a/graphics/mapper/2.0/vts/functional/Android.bp
+++ b/graphics/mapper/2.0/vts/functional/Android.bp
@@ -34,11 +34,7 @@
     ],
     static_libs: ["libgtest"],
     cflags: [
-        "--coverage",
         "-O0",
         "-g",
-    ],
-    ldflags: [
-        "--coverage",
-    ],
+    ]
 }
diff --git a/ir/1.0/vts/functional/Android.bp b/ir/1.0/vts/functional/Android.bp
index c5265de..1acd2a0 100644
--- a/ir/1.0/vts/functional/Android.bp
+++ b/ir/1.0/vts/functional/Android.bp
@@ -30,11 +30,7 @@
     ],
     static_libs: ["libgtest"],
     cflags: [
-        "--coverage",
         "-O0",
         "-g",
     ],
-    ldflags: [
-        "--coverage"
-    ]
 }
diff --git a/keymaster/3.0/default/KeymasterDevice.cpp b/keymaster/3.0/default/KeymasterDevice.cpp
index 563ff84..24cf53a 100644
--- a/keymaster/3.0/default/KeymasterDevice.cpp
+++ b/keymaster/3.0/default/KeymasterDevice.cpp
@@ -375,6 +375,7 @@
 }
 
 Return<ErrorCode> KeymasterDevice::addRngEntropy(const hidl_vec<uint8_t>& data) {
+    if (!data.size()) return ErrorCode::OK;
     return legacy_enum_conversion(
         keymaster_device_->add_rng_entropy(keymaster_device_, &data[0], data.size()));
 }
diff --git a/light/2.0/vts/Light.vts b/light/2.0/vts/Light.vts
index 5d49822..163405f 100644
--- a/light/2.0/vts/Light.vts
+++ b/light/2.0/vts/Light.vts
@@ -5,6 +5,7 @@
 package: "android.hardware.light"
 
 import: "android.hardware.light@2.0::types"
+import: "android.hidl.base@1.0::types"
 
 interface: {
     api: {
diff --git a/light/2.0/vts/functional/Android.bp b/light/2.0/vts/functional/Android.bp
index 889457f..53f5d7f 100644
--- a/light/2.0/vts/functional/Android.bp
+++ b/light/2.0/vts/functional/Android.bp
@@ -27,12 +27,8 @@
     ],
     static_libs: ["libgtest"],
     cflags: [
-        "--coverage",
         "-O0",
         "-g",
-    ],
-    ldflags: [
-        "--coverage"
     ]
 }
 
diff --git a/media/omx/1.0/IOmxBufferProducer.hal b/media/omx/1.0/IOmxBufferProducer.hal
index d4cf5f7..7e2172b 100644
--- a/media/omx/1.0/IOmxBufferProducer.hal
+++ b/media/omx/1.0/IOmxBufferProducer.hal
@@ -72,12 +72,27 @@
     };
 
     /**
+     * Ref: frameworks/native/include/gui/FrameTimestamp.h: CompositorTiming
+     *
+     * The most recent compositor timing info sent from consumer to producer
+     * through a HIDL interface.
+     */
+    struct CompositorTiming {
+        int64_t deadlineNs;
+        int64_t intervalNs;
+        int64_t presentLatencyNs;
+    };
+
+    /**
      * Ref: frameworks/native/include/gui/FrameTimestamp.h: FrameEventHistoryDelta
      *
      * A collection of updates from consumer to producer that can be sent
      * through a HIDL interface.
      */
-    typedef vec<FrameEventsDelta> FrameEventHistoryDelta;
+    struct FrameEventHistoryDelta {
+        vec<FrameEventsDelta> deltas;
+        CompositorTiming compositorTiming;
+    };
 
     /**
      * Modes for disconnection.
diff --git a/memtrack/1.0/vts/Memtrack.vts b/memtrack/1.0/vts/Memtrack.vts
index 9fce2a0..42a422e 100644
--- a/memtrack/1.0/vts/Memtrack.vts
+++ b/memtrack/1.0/vts/Memtrack.vts
@@ -5,6 +5,7 @@
 package: "android.hardware.memtrack"
 
 import: "android.hardware.memtrack@1.0::types"
+import: "android.hidl.base@1.0::types"
 
 interface: {
     api: {
diff --git a/memtrack/1.0/vts/functional/Android.bp b/memtrack/1.0/vts/functional/Android.bp
index b3e560a..0f57adc 100644
--- a/memtrack/1.0/vts/functional/Android.bp
+++ b/memtrack/1.0/vts/functional/Android.bp
@@ -30,11 +30,7 @@
     ],
     static_libs: ["libgtest"],
     cflags: [
-        "--coverage",
         "-O0",
         "-g",
-    ],
-    ldflags: [
-        "--coverage"
     ]
 }
diff --git a/nfc/1.0/vts/functional/Android.bp b/nfc/1.0/vts/functional/Android.bp
index 021f7c1..0f9eb3d 100644
--- a/nfc/1.0/vts/functional/Android.bp
+++ b/nfc/1.0/vts/functional/Android.bp
@@ -31,11 +31,7 @@
     ],
     static_libs: ["libgtest"],
     cflags: [
-        "--coverage",
         "-O0",
         "-g",
     ],
-    ldflags: [
-        "--coverage"
-    ]
 }
diff --git a/power/1.0/vts/Power.vts b/power/1.0/vts/Power.vts
index 1711290..4d3d4ff 100644
--- a/power/1.0/vts/Power.vts
+++ b/power/1.0/vts/Power.vts
@@ -5,6 +5,7 @@
 package: "android.hardware.power"
 
 import: "android.hardware.power@1.0::types"
+import: "android.hidl.base@1.0::types"
 
 interface: {
     api: {
diff --git a/power/1.0/vts/functional/Android.bp b/power/1.0/vts/functional/Android.bp
index 81dc316..7aa2611 100644
--- a/power/1.0/vts/functional/Android.bp
+++ b/power/1.0/vts/functional/Android.bp
@@ -31,11 +31,7 @@
     ],
     static_libs: ["libgtest"],
     cflags: [
-        "--coverage",
         "-O0",
         "-g",
-    ],
-    ldflags: [
-        "--coverage"
     ]
 }
diff --git a/radio/1.0/vts/RadioResponse.vts b/radio/1.0/vts/RadioResponse.vts
index 99c953c..3d1364b 100644
--- a/radio/1.0/vts/RadioResponse.vts
+++ b/radio/1.0/vts/RadioResponse.vts
@@ -1014,6 +1014,14 @@
     }
 
     api: {
+        name: "reportStkServiceIsRunningResponse"
+        arg: {
+            type: TYPE_STRUCT
+            predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
+        }
+    }
+
+    api: {
         name: "getCdmaSubscriptionSourceResponse"
         arg: {
             type: TYPE_STRUCT
diff --git a/sensors/1.0/default/convert.cpp b/sensors/1.0/default/convert.cpp
index acff6ca..306d3a3 100644
--- a/sensors/1.0/default/convert.cpp
+++ b/sensors/1.0/default/convert.cpp
@@ -75,6 +75,10 @@
         case SensorType::META_DATA:
         {
             dst->u.meta.what = (MetaDataEventType)src.meta_data.what;
+            // Legacy HALs contain the handle reference in the meta data field.
+            // Copy that over to the handle of the event. In legacy HALs this
+            // field was expected to be 0.
+            dst->sensorHandle = src.meta_data.sensor;
             break;
         }
 
@@ -212,8 +216,12 @@
   switch (src.sensorType) {
       case SensorType::META_DATA:
       {
+          // Legacy HALs expect the handle reference in the meta data field.
+          // Copy it over from the handle of the event.
           dst->meta_data.what = (int32_t)src.u.meta.what;
-          dst->meta_data.sensor = dst->sensor;
+          dst->meta_data.sensor = src.sensorHandle;
+          // Set the sensor handle to 0 to maintain compatibility.
+          dst->sensor = 0;
           break;
       }
 
diff --git a/sensors/1.0/default/service.cpp b/sensors/1.0/default/service.cpp
index 5bcfe4b..65f6d81 100644
--- a/sensors/1.0/default/service.cpp
+++ b/sensors/1.0/default/service.cpp
@@ -23,5 +23,9 @@
 using android::hardware::defaultPassthroughServiceImplementation;
 
 int main() {
-    return defaultPassthroughServiceImplementation<ISensors>();
+    /* Sensors framework service needs at least two threads.
+     * One thread blocks on a "poll"
+     * The second thread is needed for all other HAL methods.
+     */
+    return defaultPassthroughServiceImplementation<ISensors>(2);
 }
diff --git a/sensors/1.0/vts/Sensors.vts b/sensors/1.0/vts/Sensors.vts
index 9e90755..558c36d 100644
--- a/sensors/1.0/vts/Sensors.vts
+++ b/sensors/1.0/vts/Sensors.vts
@@ -5,6 +5,7 @@
 package: "android.hardware.sensors"
 
 import: "android.hardware.sensors@1.0::types"
+import: "android.hidl.base@1.0::types"
 
 interface: {
     api: {
diff --git a/sensors/1.0/vts/types.vts b/sensors/1.0/vts/types.vts
index 1b48916..bc87823 100644
--- a/sensors/1.0/vts/types.vts
+++ b/sensors/1.0/vts/types.vts
@@ -374,6 +374,7 @@
     struct_value: {
         name: "flags"
         type: TYPE_MASK
+        scalar_type: "uint32_t"
         predefined_type: "::android::hardware::sensors::V1_0::SensorFlagBits"
     }
 }
@@ -546,8 +547,8 @@
     struct_value: {
         name: "uuid"
         type: TYPE_ARRAY
+        vector_size: 16
         vector_value: {
-            vector_size: 16
             type: TYPE_SCALAR
             scalar_type: "uint8_t"
         }
@@ -652,8 +653,8 @@
         union_value: {
             name: "data_int32"
             type: TYPE_ARRAY
+            vector_size: 14
             vector_value: {
-                vector_size: 14
                 type: TYPE_SCALAR
                 scalar_type: "int32_t"
             }
@@ -661,8 +662,8 @@
         union_value: {
             name: "data_float"
             type: TYPE_ARRAY
+            vector_size: 14
             vector_value: {
-                vector_size: 14
                 type: TYPE_SCALAR
                 scalar_type: "float_t"
             }
@@ -726,8 +727,8 @@
     union_value: {
         name: "pose6DOF"
         type: TYPE_ARRAY
+        vector_size: 15
         vector_value: {
-            vector_size: 15
             type: TYPE_SCALAR
             scalar_type: "float_t"
         }
@@ -745,8 +746,8 @@
     union_value: {
         name: "data"
         type: TYPE_ARRAY
+        vector_size: 16
         vector_value: {
-            vector_size: 16
             type: TYPE_SCALAR
             scalar_type: "float_t"
         }
diff --git a/thermal/1.0/vts/Thermal.vts b/thermal/1.0/vts/Thermal.vts
index e76d943..4611924 100644
--- a/thermal/1.0/vts/Thermal.vts
+++ b/thermal/1.0/vts/Thermal.vts
@@ -5,6 +5,7 @@
 package: "android.hardware.thermal"
 
 import: "android.hardware.thermal@1.0::types"
+import: "android.hidl.base@1.0::types"
 
 interface: {
     api: {
diff --git a/thermal/1.0/vts/functional/Android.bp b/thermal/1.0/vts/functional/Android.bp
index bef7bc2..fedb760 100644
--- a/thermal/1.0/vts/functional/Android.bp
+++ b/thermal/1.0/vts/functional/Android.bp
@@ -31,12 +31,8 @@
     ],
     static_libs: ["libgtest"],
     cflags: [
-        "--coverage",
         "-O0",
         "-g",
     ],
-    ldflags: [
-        "--coverage"
-    ]
 }
 
diff --git a/thermal/1.0/vts/types.vts b/thermal/1.0/vts/types.vts
index 1e60f48..f004bd8 100644
--- a/thermal/1.0/vts/types.vts
+++ b/thermal/1.0/vts/types.vts
@@ -9,27 +9,27 @@
     name: "::android::hardware::thermal::V1_0::TemperatureType"
     type: TYPE_ENUM
     enum_value: {
-        scalar_type: "uint32_t"
+        scalar_type: "int32_t"
 
         enumerator: "UNKNOWN"
         scalar_value: {
-            uint32_t: 1000
+            int32_t: -1
         }
         enumerator: "CPU"
         scalar_value: {
-            uint32_t: 0
+            int32_t: 0
         }
         enumerator: "GPU"
         scalar_value: {
-            uint32_t: 1
+            int32_t: 1
         }
         enumerator: "BATTERY"
         scalar_value: {
-            uint32_t: 2
+            int32_t: 2
         }
         enumerator: "SKIN"
         scalar_value: {
-            uint32_t: 3
+            int32_t: 3
         }
     }
 }
diff --git a/tv/cec/1.0/vts/HdmiCec.vts b/tv/cec/1.0/vts/HdmiCec.vts
index d7d09de..6e71d24 100644
--- a/tv/cec/1.0/vts/HdmiCec.vts
+++ b/tv/cec/1.0/vts/HdmiCec.vts
@@ -6,6 +6,7 @@
 
 import: "android.hardware.tv.cec@1.0::IHdmiCecCallback"
 import: "android.hardware.tv.cec@1.0::types"
+import: "android.hidl.base@1.0::types"
 
 interface: {
     api: {
@@ -67,8 +68,7 @@
         name: "setCallback"
         arg: {
             type: TYPE_HIDL_CALLBACK
-            predefined_type: "IHdmiCecCallback"
-            is_callback: true
+            predefined_type: "::android::hardware::tv::cec::V1_0::IHdmiCecCallback"
         }
         callflow: {
             next: "addLogicalAddress"
diff --git a/tv/cec/1.0/vts/HdmiCecCallback.vts b/tv/cec/1.0/vts/HdmiCecCallback.vts
index 864e6f5..a98db06 100644
--- a/tv/cec/1.0/vts/HdmiCecCallback.vts
+++ b/tv/cec/1.0/vts/HdmiCecCallback.vts
@@ -5,6 +5,7 @@
 package: "android.hardware.tv.cec"
 
 import: "android.hardware.tv.cec@1.0::types"
+import: "android.hidl.base@1.0::types"
 
 interface: {
     api: {
diff --git a/tv/input/1.0/vts/TvInput.vts b/tv/input/1.0/vts/TvInput.vts
index 73b322a..f049fc1 100644
--- a/tv/input/1.0/vts/TvInput.vts
+++ b/tv/input/1.0/vts/TvInput.vts
@@ -4,16 +4,17 @@
 
 package: "android.hardware.tv.input"
 
+import: "android.hardware.audio.common@2.0::types"
 import: "android.hardware.tv.input@1.0::ITvInputCallback"
 import: "android.hardware.tv.input@1.0::types"
+import: "android.hidl.base@1.0::types"
 
 interface: {
     api: {
         name: "setCallback"
         arg: {
             type: TYPE_HIDL_CALLBACK
-            predefined_type: "ITvInputCallback"
-            is_callback: true
+            predefined_type: "::android::hardware::tv::input::V1_0::ITvInputCallback"
         }
         callflow: {
             entry: true
diff --git a/tv/input/1.0/vts/TvInputCallback.vts b/tv/input/1.0/vts/TvInputCallback.vts
index b1738a8..8082b9f 100644
--- a/tv/input/1.0/vts/TvInputCallback.vts
+++ b/tv/input/1.0/vts/TvInputCallback.vts
@@ -4,7 +4,9 @@
 
 package: "android.hardware.tv.input"
 
+import: "android.hardware.audio.common@2.0::types"
 import: "android.hardware.tv.input@1.0::types"
+import: "android.hidl.base@1.0::types"
 
 interface: {
     api: {
diff --git a/tv/input/1.0/vts/functional/Android.bp b/tv/input/1.0/vts/functional/Android.bp
index 979eb99..c327733 100644
--- a/tv/input/1.0/vts/functional/Android.bp
+++ b/tv/input/1.0/vts/functional/Android.bp
@@ -31,13 +31,8 @@
     ],
     static_libs: ["libgtest"],
     cflags: [
-// TODO: add --coverage when the segfault issue is fixed.
-//        "--coverage",
         "-O0",
         "-g",
-    ],
-//    ldflags: [
-//        "--coverage"
-//    ]
+    ]
 }
 
diff --git a/tv/input/1.0/vts/types.vts b/tv/input/1.0/vts/types.vts
index d03e065..cb1d472 100644
--- a/tv/input/1.0/vts/types.vts
+++ b/tv/input/1.0/vts/types.vts
@@ -7,1926 +7,6 @@
 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: 11
-        }
-        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: "EVRC"
-        scalar_value: {
-            uint32_t: 268435456
-        }
-        enumerator: "EVRCB"
-        scalar_value: {
-            uint32_t: 285212672
-        }
-        enumerator: "EVRCWB"
-        scalar_value: {
-            uint32_t: 301989888
-        }
-        enumerator: "EVRCNW"
-        scalar_value: {
-            uint32_t: 318767104
-        }
-        enumerator: "AAC_ADIF"
-        scalar_value: {
-            uint32_t: 335544320
-        }
-        enumerator: "WMA"
-        scalar_value: {
-            uint32_t: 352321536
-        }
-        enumerator: "WMA_PRO"
-        scalar_value: {
-            uint32_t: 369098752
-        }
-        enumerator: "AMR_WB_PLUS"
-        scalar_value: {
-            uint32_t: 385875968
-        }
-        enumerator: "MP2"
-        scalar_value: {
-            uint32_t: 402653184
-        }
-        enumerator: "QCELP"
-        scalar_value: {
-            uint32_t: 419430400
-        }
-        enumerator: "DSD"
-        scalar_value: {
-            uint32_t: 436207616
-        }
-        enumerator: "FLAC"
-        scalar_value: {
-            uint32_t: 452984832
-        }
-        enumerator: "ALAC"
-        scalar_value: {
-            uint32_t: 469762048
-        }
-        enumerator: "APE"
-        scalar_value: {
-            uint32_t: 486539264
-        }
-        enumerator: "AAC_ADTS"
-        scalar_value: {
-            uint32_t: 503316480
-        }
-        enumerator: "SBC"
-        scalar_value: {
-            uint32_t: 520093696
-        }
-        enumerator: "APTX"
-        scalar_value: {
-            uint32_t: 536870912
-        }
-        enumerator: "APTX_HD"
-        scalar_value: {
-            uint32_t: 553648128
-        }
-        enumerator: "LDAC"
-        scalar_value: {
-            uint32_t: 570425344
-        }
-        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
-        }
-        enumerator: "AAC_ADTS_MAIN"
-        scalar_value: {
-            uint32_t: 503316481
-        }
-        enumerator: "AAC_ADTS_LC"
-        scalar_value: {
-            uint32_t: 503316482
-        }
-        enumerator: "AAC_ADTS_SSR"
-        scalar_value: {
-            uint32_t: 503316484
-        }
-        enumerator: "AAC_ADTS_LTP"
-        scalar_value: {
-            uint32_t: 503316488
-        }
-        enumerator: "AAC_ADTS_HE_V1"
-        scalar_value: {
-            uint32_t: 503316496
-        }
-        enumerator: "AAC_ADTS_SCALABLE"
-        scalar_value: {
-            uint32_t: 503316512
-        }
-        enumerator: "AAC_ADTS_ERLC"
-        scalar_value: {
-            uint32_t: 503316544
-        }
-        enumerator: "AAC_ADTS_LD"
-        scalar_value: {
-            uint32_t: 503316608
-        }
-        enumerator: "AAC_ADTS_HE_V2"
-        scalar_value: {
-            uint32_t: 503316736
-        }
-        enumerator: "AAC_ADTS_ELD"
-        scalar_value: {
-            uint32_t: 503316992
-        }
-    }
-}
-
-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_2POINT1"
-        scalar_value: {
-            uint32_t: 11
-        }
-        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_SURROUND"
-        scalar_value: {
-            uint32_t: 263
-        }
-        enumerator: "OUT_PENTA"
-        scalar_value: {
-            uint32_t: 55
-        }
-        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_6POINT1"
-        scalar_value: {
-            uint32_t: 319
-        }
-        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_VOICE_UPLINK_MONO"
-        scalar_value: {
-            uint32_t: 16400
-        }
-        enumerator: "IN_VOICE_DNLINK_MONO"
-        scalar_value: {
-            uint32_t: 32784
-        }
-        enumerator: "IN_VOICE_CALL_MONO"
-        scalar_value: {
-            uint32_t: 49168
-        }
-        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_PROXY"
-        scalar_value: {
-            uint32_t: 33554432
-        }
-        enumerator: "OUT_DEFAULT"
-        scalar_value: {
-            uint32_t: 1073741824
-        }
-        enumerator: "OUT_ALL"
-        scalar_value: {
-            uint32_t: 1140850687
-        }
-        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_PROXY"
-        scalar_value: {
-            uint32_t: 2164260864
-        }
-        enumerator: "IN_DEFAULT"
-        scalar_value: {
-            uint32_t: 3221225472
-        }
-        enumerator: "IN_ALL"
-        scalar_value: {
-            uint32_t: 3240099839
-        }
-        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
-        }
-        enumerator: "DIRECT_PCM"
-        scalar_value: {
-            int32_t: 8192
-        }
-        enumerator: "MMAP_NOIRQ"
-        scalar_value: {
-            int32_t: 16384
-        }
-    }
-}
-
-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
-        }
-        enumerator: "MMAP_NOIRQ"
-        scalar_value: {
-            int32_t: 16
-        }
-    }
-}
-
-attribute: {
-    name: "::android::hardware::audio::common::V2_0::AudioUsage"
-    type: TYPE_ENUM
-    enum_value: {
-        scalar_type: "int32_t"
-
-        enumerator: "UNKNOWN"
-        scalar_value: {
-            int32_t: 0
-        }
-        enumerator: "MEDIA"
-        scalar_value: {
-            int32_t: 1
-        }
-        enumerator: "VOICE_COMMUNICATION"
-        scalar_value: {
-            int32_t: 2
-        }
-        enumerator: "VOICE_COMMUNICATION_SIGNALLING"
-        scalar_value: {
-            int32_t: 3
-        }
-        enumerator: "ALARM"
-        scalar_value: {
-            int32_t: 4
-        }
-        enumerator: "NOTIFICATION"
-        scalar_value: {
-            int32_t: 5
-        }
-        enumerator: "NOTIFICATION_TELEPHONY_RINGTONE"
-        scalar_value: {
-            int32_t: 6
-        }
-        enumerator: "NOTIFICATION_COMMUNICATION_REQUEST"
-        scalar_value: {
-            int32_t: 7
-        }
-        enumerator: "NOTIFICATION_COMMUNICATION_INSTANT"
-        scalar_value: {
-            int32_t: 8
-        }
-        enumerator: "NOTIFICATION_COMMUNICATION_DELAYED"
-        scalar_value: {
-            int32_t: 9
-        }
-        enumerator: "NOTIFICATION_EVENT"
-        scalar_value: {
-            int32_t: 10
-        }
-        enumerator: "ASSISTANCE_ACCESSIBILITY"
-        scalar_value: {
-            int32_t: 11
-        }
-        enumerator: "ASSISTANCE_NAVIGATION_GUIDANCE"
-        scalar_value: {
-            int32_t: 12
-        }
-        enumerator: "ASSISTANCE_SONIFICATION"
-        scalar_value: {
-            int32_t: 13
-        }
-        enumerator: "GAME"
-        scalar_value: {
-            int32_t: 14
-        }
-        enumerator: "VIRTUAL_SOURCE"
-        scalar_value: {
-            int32_t: 15
-        }
-        enumerator: "CNT"
-        scalar_value: {
-            int32_t: 16
-        }
-        enumerator: "MAX"
-        scalar_value: {
-            int32_t: 15
-        }
-    }
-}
-
-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"
-    }
-    struct_value: {
-        name: "bitWidth"
-        type: TYPE_SCALAR
-        scalar_type: "uint32_t"
-    }
-    struct_value: {
-        name: "bufferSize"
-        type: TYPE_SCALAR
-        scalar_type: "uint32_t"
-    }
-    struct_value: {
-        name: "usage"
-        type: TYPE_ENUM
-        predefined_type: "::android::hardware::audio::common::V2_0::AudioUsage"
-    }
-}
-
-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: {
@@ -2030,8 +110,8 @@
     struct_value: {
         name: "audioAddress"
         type: TYPE_ARRAY
+        vector_size: 32
         vector_value: {
-            vector_size: 32
             type: TYPE_SCALAR
             scalar_type: "uint8_t"
         }
diff --git a/vibrator/1.0/vts/Vibrator.vts b/vibrator/1.0/vts/Vibrator.vts
index e0de3fb..07ec30e 100644
--- a/vibrator/1.0/vts/Vibrator.vts
+++ b/vibrator/1.0/vts/Vibrator.vts
@@ -5,6 +5,7 @@
 package: "android.hardware.vibrator"
 
 import: "android.hardware.vibrator@1.0::types"
+import: "android.hidl.base@1.0::types"
 
 interface: {
     api: {
diff --git a/vr/1.0/vts/Vr.vts b/vr/1.0/vts/Vr.vts
index 36ec11f..fdc4a5c 100644
--- a/vr/1.0/vts/Vr.vts
+++ b/vr/1.0/vts/Vr.vts
@@ -4,6 +4,7 @@
 
 package: "android.hardware.vr"
 
+import: "android.hidl.base@1.0::types"
 
 interface: {
     api: {
diff --git a/vr/1.0/vts/functional/Android.bp b/vr/1.0/vts/functional/Android.bp
index 551f27c..529f92d 100644
--- a/vr/1.0/vts/functional/Android.bp
+++ b/vr/1.0/vts/functional/Android.bp
@@ -26,11 +26,7 @@
     ],
     static_libs: ["libgtest"],
     cflags: [
-       "--coverage",
        "-O0",
         "-g",
-    ],
-    ldflags: [
-        "--coverage"
     ]
 }
diff --git a/wifi/.clang-format b/wifi/.clang-format
new file mode 100644
index 0000000..25ed932
--- /dev/null
+++ b/wifi/.clang-format
@@ -0,0 +1,2 @@
+BasedOnStyle: Google
+IndentWidth: 4
\ No newline at end of file
diff --git a/wifi/1.0/types.hal b/wifi/1.0/types.hal
index f777207..1c6d0e0 100644
--- a/wifi/1.0/types.hal
+++ b/wifi/1.0/types.hal
@@ -715,8 +715,8 @@
     * Value of 0:
     *  - reserved in 2.4GHz band
     *  - no wakeup at all in 5GHz band
-    * The publish/subscribe period values don't override the device level configurations if
-    * specified.
+    * The publish/subscribe period values don't override this device level configurations if
+    * it is specified.
     * Configuration is only used only if |validDiscoveryWindowIntervalVal| is set to true.
     * NAN Spec: Device Capability Attribute / 2.4 GHz DW, Device Capability Attribute / 5 GHz DW
     */
@@ -915,8 +915,8 @@
   /**
    * Indicates the interval between two Discovery Windows in which the device supporting the
    * service is awake to transmit or receive the Service Discovery frames. Valid values of Awake
-   * DW Interval are: 1, 2, 4, 8 and 16. A value of 0 will default to 1. Overrides any
-   * |NanBandSpecificConfig.discoveryWindowIntervalVal| configurations.
+   * DW Interval are: 1, 2, 4, 8 and 16. A value of 0 will default to 1. Does not override
+   * |NanBandSpecificConfig.discoveryWindowIntervalVal| configurations if those are specified.
    */
   uint16_t discoveryWindowPeriod;
   /**
diff --git a/wifi/1.0/vts/functional/Android.bp b/wifi/1.0/vts/functional/Android.bp
index 422eec5..8a5d7e0 100644
--- a/wifi/1.0/vts/functional/Android.bp
+++ b/wifi/1.0/vts/functional/Android.bp
@@ -21,6 +21,7 @@
         "main.cpp",
         "wifi_ap_iface_hidl_test.cpp",
         "wifi_chip_hidl_test.cpp",
+        "wifi_hidl_call_util_selftest.cpp",
         "wifi_hidl_test.cpp",
         "wifi_hidl_test_utils.cpp",
         "wifi_nan_iface_hidl_test.cpp",
@@ -40,11 +41,7 @@
     ],
     static_libs: ["libgtest"],
     cflags: [
-        "--coverage",
         "-O0",
         "-g",
     ],
-    ldflags: [
-        "--coverage"
-    ]
 }
diff --git a/wifi/1.0/vts/functional/wifi_hidl_call_util.h b/wifi/1.0/vts/functional/wifi_hidl_call_util.h
new file mode 100644
index 0000000..03200a0
--- /dev/null
+++ b/wifi/1.0/vts/functional/wifi_hidl_call_util.h
@@ -0,0 +1,123 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+#include <functional>
+#include <tuple>
+#include <type_traits>
+#include <utility>
+
+#include <gtest/gtest.h>
+
+namespace {
+namespace detail {
+template <typename>
+struct functionArgSaver;
+
+// Provides a std::function that takes one argument, and a buffer
+// wherein the function will store its argument. The buffer has
+// the same type as the argument, but with const and reference
+// modifiers removed.
+template <typename ArgT>
+struct functionArgSaver<std::function<void(ArgT)>> final {
+    using StorageT = typename std::remove_const<
+        typename std::remove_reference<ArgT>::type>::type;
+
+    std::function<void(ArgT)> saveArgs = [this](ArgT arg) {
+        this->saved_values = arg;
+    };
+
+    StorageT saved_values;
+};
+
+// Provides a std::function that takes two arguments, and a buffer
+// wherein the function will store its arguments. The buffer is a
+// std::pair, whose elements have the same types as the arguments
+// (but with const and reference modifiers removed).
+template <typename Arg1T, typename Arg2T>
+struct functionArgSaver<std::function<void(Arg1T, Arg2T)>> final {
+    using StorageT =
+        std::pair<typename std::remove_const<
+                      typename std::remove_reference<Arg1T>::type>::type,
+                  typename std::remove_const<
+                      typename std::remove_reference<Arg2T>::type>::type>;
+
+    std::function<void(Arg1T, Arg2T)> saveArgs = [this](Arg1T arg1,
+                                                        Arg2T arg2) {
+        this->saved_values = {arg1, arg2};
+    };
+
+    StorageT saved_values;
+};
+
+// Provides a std::function that takes three or more arguments, and a
+// buffer wherein the function will store its arguments. The buffer is a
+// std::tuple whose elements have the same types as the arguments (but
+// with const and reference modifiers removed).
+template <typename... ArgT>
+struct functionArgSaver<std::function<void(ArgT...)>> final {
+    using StorageT = std::tuple<typename std::remove_const<
+        typename std::remove_reference<ArgT>::type>::type...>;
+
+    std::function<void(ArgT...)> saveArgs = [this](ArgT... arg) {
+        this->saved_values = {arg...};
+    };
+
+    StorageT saved_values;
+};
+
+// Invokes |method| on |object|, providing |method| a CallbackT as the
+// final argument. Returns a copy of the parameters that |method| provided
+// to CallbackT. (The parameters are returned by value.)
+template <typename CallbackT, typename MethodT, typename ObjectT,
+          typename... ArgT>
+typename functionArgSaver<CallbackT>::StorageT invokeMethod(
+    MethodT method, ObjectT object, ArgT&&... methodArg) {
+    functionArgSaver<CallbackT> result_buffer;
+    const auto& res = ((*object).*method)(std::forward<ArgT>(methodArg)...,
+                                          result_buffer.saveArgs);
+    EXPECT_TRUE(res.isOk());
+    return result_buffer.saved_values;
+}
+}  // namespace detail
+}  // namespace
+
+// Invokes |method| on |strong_pointer|, passing provided arguments through to
+// |method|.
+//
+// Returns either:
+// - A copy of the result callback parameter (for callbacks with a single
+//   parameter), OR
+// - A pair containing a copy of the result callback parameters (for callbacks
+//   with two parameters), OR
+// - A tuple containing a copy of the result callback paramters (for callbacks
+//   with three or more parameters).
+//
+// Example usage:
+//   EXPECT_EQ(WifiStatusCode::SUCCESS,
+//       HIDL_INVOKE(strong_pointer, methodReturningWifiStatus).code);
+//   EXPECT_EQ(WifiStatusCode::SUCCESS,
+//       HIDL_INVOKE(strong_pointer, methodReturningWifiStatusAndOneMore)
+//         .first.code);
+//   EXPECT_EQ(WifiStatusCode::SUCCESS, std::get<0>(
+//       HIDL_INVOKE(strong_pointer, methodReturningWifiStatusAndTwoMore))
+//         .code);
+#define HIDL_INVOKE(strong_pointer, method, ...)                              \
+    (detail::invokeMethod<                                                    \
+        std::remove_reference<decltype(*strong_pointer)>::type::method##_cb>( \
+        &std::remove_reference<decltype(*strong_pointer)>::type::method,      \
+        strong_pointer, ##__VA_ARGS__))
diff --git a/wifi/1.0/vts/functional/wifi_hidl_call_util_selftest.cpp b/wifi/1.0/vts/functional/wifi_hidl_call_util_selftest.cpp
new file mode 100644
index 0000000..129bdb2
--- /dev/null
+++ b/wifi/1.0/vts/functional/wifi_hidl_call_util_selftest.cpp
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <functional>
+#include <type_traits>
+
+#include <hidl/Status.h>
+#include <utils/RefBase.h>
+#include <utils/StrongPointer.h>
+
+#include "wifi_hidl_call_util.h"
+
+namespace {
+/*
+ * Example of a user-defined data-type.
+ *
+ * Used to verify that, within the internals of HIDL_INVOKE,
+ * reference parameters are stored by copy.
+ */
+class Dummy {};
+
+/*
+ * Example of what a HIDL-generated proxy might look like.
+ */
+class IExample : public ::android::RefBase {
+   public:
+    // The callback type, for a method called startWithCallbackCopy, which
+    // has a callback that takes an |int|. Both the name, and the value,
+    // must match what would appear in HIDL-generated code.
+    using startWithCallbackCopy_cb = std::function<void(int)>;
+
+    // The callback type, for a method called startWithCallbackReference, which
+    // has a callback that takes an |int|. Both the name, and the value,
+    // must match what would appear in HIDL-generated code.
+    using startWithCallbackReference_cb = std::function<void(int)>;
+
+    // Constants which allow tests to verify that the proxy methods can
+    // correctly return a value. We use different values for by-copy and
+    // by-reference, to double-check that a call was dispatched properly.
+    static constexpr int kByCopyResult = 42;
+    static constexpr int kByReferenceResult = 420;
+
+    // Example of what a no-arg method would look like, if the callback
+    // is passed by-value.
+    ::android::hardware::Return<void> startWithCallbackCopy(
+        startWithCallbackCopy_cb _hidl_cb) {
+        _hidl_cb(kByCopyResult);
+        return ::android::hardware::Void();
+    }
+    // Example of what a no-arg method would look like, if the callback
+    // is passed by const-reference.
+    ::android::hardware::Return<void> startWithCallbackReference(
+        const startWithCallbackReference_cb& _hidl_cb) {
+        _hidl_cb(kByReferenceResult);
+        return ::android::hardware::Void();
+    }
+};
+
+constexpr int IExample::kByCopyResult;
+constexpr int IExample::kByReferenceResult;
+}  // namespace
+
+static_assert(std::is_same<int, detail::functionArgSaver<
+                                    std::function<void(int)>>::StorageT>::value,
+              "Single-arg result should be stored directly.");
+
+static_assert(
+    std::is_same<std::pair<int, long>, detail::functionArgSaver<std::function<
+                                           void(int, long)>>::StorageT>::value,
+    "Two-arg result should be stored as a pair.");
+
+static_assert(
+    std::is_same<std::tuple<char, int, long>,
+                 detail::functionArgSaver<
+                     std::function<void(char, int, long)>>::StorageT>::value,
+    "Three-arg result should be stored as a tuple.");
+
+static_assert(std::is_same<Dummy, detail::functionArgSaver<std::function<
+                                      void(const Dummy&)>>::StorageT>::value,
+              "Reference should be stored by copy.");
+
+/*
+ * Verifies that HIDL_INVOKE can be used with methods that take the result
+ * callback as a by-value parameter. (This reflects the current implementation
+ * of HIDL-generated code.)
+ */
+TEST(HidlInvokeTest, WorksWithMethodThatTakesResultCallbackByValue) {
+    ::android::sp<IExample> sp = new IExample();
+    EXPECT_EQ(IExample::kByCopyResult, HIDL_INVOKE(sp, startWithCallbackCopy));
+}
+
+/*
+ * Verifies that HIDL_INVOKE can be used with methods that take the result
+ * callback as a const-reference parameter. (This ensures that HIDL_INVOKE will
+ * continue to work, if the HIDL-generated code switches to const-ref.)
+ */
+TEST(HidlInvokeTest, WorksWithMethodThatTakesResultCallbackByConstReference) {
+    ::android::sp<IExample> sp = new IExample();
+    EXPECT_EQ(IExample::kByReferenceResult,
+              HIDL_INVOKE(sp, startWithCallbackReference));
+}
diff --git a/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp b/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp
index 050bba3..8f34a88 100644
--- a/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp
+++ b/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp
@@ -16,6 +16,7 @@
 
 #include <gtest/gtest.h>
 
+#include "wifi_hidl_call_util.h"
 #include "wifi_hidl_test_utils.h"
 
 using ::android::hardware::wifi::V1_0::IWifi;
@@ -52,41 +53,23 @@
         return nullptr;
     }
 
-    bool operation_failed = false;
-    wifi->start([&](WifiStatus status) {
-        if (status.code != WifiStatusCode::SUCCESS) {
-            operation_failed = true;
-        }
-    });
-    if (operation_failed) {
+    if (HIDL_INVOKE(wifi, start).code != WifiStatusCode::SUCCESS) {
         return nullptr;
     }
 
-    std::vector<ChipId> wifi_chip_ids;
-    wifi->getChipIds(
-        [&](const WifiStatus& status, const hidl_vec<ChipId>& chip_ids) {
-            if (status.code != WifiStatusCode::SUCCESS) {
-                operation_failed = true;
-            }
-            wifi_chip_ids = chip_ids;
-        });
-    // We don't expect more than 1 chip currently.
-    if (operation_failed || wifi_chip_ids.size() != 1) {
+    const auto& status_and_chip_ids = HIDL_INVOKE(wifi, getChipIds);
+    const auto& chip_ids = status_and_chip_ids.second;
+    if (status_and_chip_ids.first.code != WifiStatusCode::SUCCESS ||
+        chip_ids.size() != 1) {
         return nullptr;
     }
 
-    sp<IWifiChip> wifi_chip;
-    wifi->getChip(wifi_chip_ids[0],
-                  [&](const WifiStatus& status, const sp<IWifiChip>& chip) {
-                      if (status.code != WifiStatusCode::SUCCESS) {
-                          operation_failed = true;
-                      }
-                      wifi_chip = chip;
-                  });
-    if (operation_failed) {
+    const auto& status_and_chip = HIDL_INVOKE(wifi, getChip, chip_ids[0]);
+    if (status_and_chip.first.code != WifiStatusCode::SUCCESS) {
         return nullptr;
     }
-    return wifi_chip;
+
+    return status_and_chip.second;
 }
 
 // Since we currently only support one iface of each type. Just iterate thru the
@@ -116,30 +99,18 @@
 
 bool configureChipToSupportIfaceType(const sp<IWifiChip>& wifi_chip,
                                      IfaceType type) {
-    bool operation_failed = false;
-    std::vector<IWifiChip::ChipMode> chip_modes;
-    wifi_chip->getAvailableModes(
-        [&](WifiStatus status, const hidl_vec<IWifiChip::ChipMode>& modes) {
-            if (status.code != WifiStatusCode::SUCCESS) {
-                operation_failed = true;
-            }
-            chip_modes = modes;
-        });
-    if (operation_failed) {
+    const auto& status_and_modes = HIDL_INVOKE(wifi_chip, getAvailableModes);
+    if (status_and_modes.first.code != WifiStatusCode::SUCCESS) {
         return false;
     }
 
     ChipModeId mode_id;
-    if (!findModeToSupportIfaceType(type, chip_modes, &mode_id)) {
+    if (!findModeToSupportIfaceType(type, status_and_modes.second, &mode_id)) {
         return false;
     }
 
-    wifi_chip->configureChip(mode_id, [&](WifiStatus status) {
-        if (status.code != WifiStatusCode::SUCCESS) {
-            operation_failed = true;
-        }
-    });
-    if (operation_failed) {
+    if (HIDL_INVOKE(wifi_chip, configureChip, mode_id).code !=
+        WifiStatusCode::SUCCESS) {
         return false;
     }
     return true;
@@ -154,19 +125,11 @@
         return nullptr;
     }
 
-    bool operation_failed = false;
-    sp<IWifiApIface> wifi_ap_iface;
-    wifi_chip->createApIface(
-        [&](const WifiStatus& status, const sp<IWifiApIface>& iface) {
-            if (status.code != WifiStatusCode::SUCCESS) {
-                operation_failed = true;
-            }
-            wifi_ap_iface = iface;
-        });
-    if (operation_failed) {
+    const auto& status_and_iface = HIDL_INVOKE(wifi_chip, createApIface);
+    if (status_and_iface.first.code != WifiStatusCode::SUCCESS) {
         return nullptr;
     }
-    return wifi_ap_iface;
+    return status_and_iface.second;
 }
 
 sp<IWifiNanIface> getWifiNanIface() {
@@ -178,19 +141,11 @@
         return nullptr;
     }
 
-    bool operation_failed = false;
-    sp<IWifiNanIface> wifi_nan_iface;
-    wifi_chip->createNanIface(
-        [&](const WifiStatus& status, const sp<IWifiNanIface>& iface) {
-            if (status.code != WifiStatusCode::SUCCESS) {
-                operation_failed = true;
-            }
-            wifi_nan_iface = iface;
-        });
-    if (operation_failed) {
+    const auto& status_and_iface = HIDL_INVOKE(wifi_chip, createNanIface);
+    if (status_and_iface.first.code != WifiStatusCode::SUCCESS) {
         return nullptr;
     }
-    return wifi_nan_iface;
+    return status_and_iface.second;
 }
 
 sp<IWifiP2pIface> getWifiP2pIface() {
@@ -202,19 +157,11 @@
         return nullptr;
     }
 
-    bool operation_failed = false;
-    sp<IWifiP2pIface> wifi_p2p_iface;
-    wifi_chip->createP2pIface(
-        [&](const WifiStatus& status, const sp<IWifiP2pIface>& iface) {
-            if (status.code != WifiStatusCode::SUCCESS) {
-                operation_failed = true;
-            }
-            wifi_p2p_iface = iface;
-        });
-    if (operation_failed) {
+    const auto& status_and_iface = HIDL_INVOKE(wifi_chip, createP2pIface);
+    if (status_and_iface.first.code != WifiStatusCode::SUCCESS) {
         return nullptr;
     }
-    return wifi_p2p_iface;
+    return status_and_iface.second;
 }
 
 sp<IWifiStaIface> getWifiStaIface() {
@@ -226,19 +173,11 @@
         return nullptr;
     }
 
-    bool operation_failed = false;
-    sp<IWifiStaIface> wifi_sta_iface;
-    wifi_chip->createStaIface(
-        [&](const WifiStatus& status, const sp<IWifiStaIface>& iface) {
-            if (status.code != WifiStatusCode::SUCCESS) {
-                operation_failed = true;
-            }
-            wifi_sta_iface = iface;
-        });
-    if (operation_failed) {
+    const auto& status_and_iface = HIDL_INVOKE(wifi_chip, createStaIface);
+    if (status_and_iface.first.code != WifiStatusCode::SUCCESS) {
         return nullptr;
     }
-    return wifi_sta_iface;
+    return status_and_iface.second;
 }
 
 sp<IWifiRttController> getWifiRttController() {
@@ -251,26 +190,16 @@
         return nullptr;
     }
 
-    bool operation_failed = false;
-    sp<IWifiRttController> wifi_rtt_controller;
-    wifi_chip->createRttController(
-        wifi_sta_iface, [&](const WifiStatus& status,
-                            const sp<IWifiRttController>& controller) {
-            if (status.code != WifiStatusCode::SUCCESS) {
-                operation_failed = true;
-            }
-            wifi_rtt_controller = controller;
-        });
-    if (operation_failed) {
+    const auto& status_and_controller =
+        HIDL_INVOKE(wifi_chip, createRttController, wifi_sta_iface);
+    if (status_and_controller.first.code != WifiStatusCode::SUCCESS) {
         return nullptr;
     }
-    return wifi_rtt_controller;
+    return status_and_controller.second;
 }
 
 void stopWifi() {
     sp<IWifi> wifi = getWifi();
     ASSERT_NE(wifi, nullptr);
-    wifi->stop([](const WifiStatus& status) {
-        ASSERT_EQ(status.code, WifiStatusCode::SUCCESS);
-    });
+    ASSERT_EQ(HIDL_INVOKE(wifi, stop).code, WifiStatusCode::SUCCESS);
 }