Merge "Add a default implementation for fastboot HAL."
diff --git a/atrace/1.0/Android.bp b/atrace/1.0/Android.bp
index f7c9078..4d73cfd 100644
--- a/atrace/1.0/Android.bp
+++ b/atrace/1.0/Android.bp
@@ -13,10 +13,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "Status",
-        "TracingCategory",
-    ],
     gen_java: true,
 }
 
diff --git a/audio/2.0/Android.bp b/audio/2.0/Android.bp
index d6e481f..3495b1a 100644
--- a/audio/2.0/Android.bp
+++ b/audio/2.0/Android.bp
@@ -21,16 +21,6 @@
         "android.hardware.audio.effect@2.0",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "AudioDrain",
-        "DeviceAddress",
-        "MessageQueueFlagBits",
-        "MmapBufferInfo",
-        "MmapPosition",
-        "ParameterValue",
-        "Result",
-        "TimeSpec",
-    ],
     gen_java: false,
     gen_java_constants: true,
 }
diff --git a/audio/4.0/Android.bp b/audio/4.0/Android.bp
index 6e217d9..b97fe01 100644
--- a/audio/4.0/Android.bp
+++ b/audio/4.0/Android.bp
@@ -21,27 +21,6 @@
         "android.hardware.audio.effect@4.0",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "AudioDrain",
-        "AudioFrequencyResponsePoint",
-        "AudioMicrophoneChannelMapping",
-        "AudioMicrophoneCoordinate",
-        "AudioMicrophoneDirectionality",
-        "AudioMicrophoneLocation",
-        "DeviceAddress",
-        "MessageQueueFlagBits",
-        "MicrophoneInfo",
-        "MmapBufferFlag",
-        "MmapBufferInfo",
-        "MmapPosition",
-        "ParameterValue",
-        "PlaybackTrackMetadata",
-        "RecordTrackMetadata",
-        "Result",
-        "SinkMetadata",
-        "SourceMetadata",
-        "TimeSpec",
-    ],
     gen_java: false,
     gen_java_constants: true,
 }
diff --git a/audio/5.0/Android.bp b/audio/5.0/Android.bp
index ee023e3..f6ac2eb 100644
--- a/audio/5.0/Android.bp
+++ b/audio/5.0/Android.bp
@@ -20,23 +20,7 @@
         "android.hardware.audio.common@5.0",
         "android.hardware.audio.effect@5.0",
         "android.hidl.base@1.0",
-    ],
-    types: [
-        "AudioDrain",
-        "AudioFrequencyResponsePoint",
-        "AudioMicrophoneChannelMapping",
-        "AudioMicrophoneCoordinate",
-        "AudioMicrophoneDirectionality",
-        "AudioMicrophoneLocation",
-        "DeviceAddress",
-        "MessageQueueFlagBits",
-        "MicrophoneInfo",
-        "MmapBufferFlag",
-        "MmapBufferInfo",
-        "MmapPosition",
-        "ParameterValue",
-        "Result",
-        "TimeSpec",
+        "android.hidl.safe_union@1.0",
     ],
     gen_java: false,
     gen_java_constants: true,
diff --git a/audio/5.0/IDevice.hal b/audio/5.0/IDevice.hal
index afb4fad..9e45ba5 100644
--- a/audio/5.0/IDevice.hal
+++ b/audio/5.0/IDevice.hal
@@ -133,7 +133,7 @@
      * @param config stream configuration.
      * @param flags additional flags.
      * @param sinkMetadata Description of the audio that is suggested by the client.
-     *                     May be used by implementations to configure hardware effects.
+     *                     May be used by implementations to configure processing effects.
      * @return retval operation completion status.
      * @return inStream in case of success, created input stream.
      * @return suggestedConfig in case of invalid parameters, suggested config.
diff --git a/audio/5.0/IStreamIn.hal b/audio/5.0/IStreamIn.hal
index d33cfdc..b042960 100644
--- a/audio/5.0/IStreamIn.hal
+++ b/audio/5.0/IStreamIn.hal
@@ -165,4 +165,27 @@
      */
     getActiveMicrophones()
                generates(Result retval, vec<MicrophoneInfo> microphones);
+
+    /**
+     * Specifies the logical microphone (for processing).
+     *
+     * Optional method
+     *
+     * @param Direction constant
+     * @return retval OK if the call is successful, an error code otherwise.
+     */
+    setMicrophoneDirection(MicrophoneDirection direction)
+               generates(Result retval);
+
+    /**
+     * Specifies the zoom factor for the selected microphone (for processing).
+     *
+     * Optional method
+     *
+     * @param the desired field dimension of microphone capture. Range is from -1 (wide angle),
+     * though 0 (no zoom) to 1 (maximum zoom).
+     *
+     * @return retval OK if the call is not successful, an error code otherwise.
+     */
+    setMicrophoneFieldDimension(float zoom) generates(Result retval);
 };
diff --git a/audio/5.0/types.hal b/audio/5.0/types.hal
index 988f584..2c153c6 100644
--- a/audio/5.0/types.hal
+++ b/audio/5.0/types.hal
@@ -49,34 +49,11 @@
     uint64_t tvNSec;  // nanoseconds
 };
 
-/**
- * IEEE 802 MAC address.
- */
-typedef uint8_t[6] MacAddress;
-
 struct ParameterValue {
     string key;
     string value;
 };
 
-/**
- * Specifies a device in case when several devices of the same type
- * can be connected (e.g. BT A2DP, USB).
- */
-struct DeviceAddress {
-    AudioDevice device;  // discriminator
-    union Address {
-        MacAddress mac;     // used for BLUETOOTH_A2DP_*
-        uint8_t[4] ipv4;    // used for IP
-        struct Alsa {
-            int32_t card;
-            int32_t device;
-        } alsa;             // used for USB_*
-    } address;
-    string busAddress;      // used for BUS
-    string rSubmixAddress;  // used for REMOTE_SUBMIX
-};
-
 enum MmapBufferFlag : uint32_t {
     NONE    = 0x0,
     /**
@@ -244,3 +221,29 @@
      */
     AudioMicrophoneCoordinate               orientation;
 };
+
+/**
+ * Constants used by the HAL to determine how to select microphones and process those inputs in
+ * order to optimize for capture in the specified direction.
+ *
+ * MicrophoneDirection Constants are defined in MicrophoneDirection.java.
+ */
+@export(name="audio_microphone_direction_t", value_prefix="MIC_DIRECTION_")
+enum MicrophoneDirection : int32_t {
+    /**
+     * Don't do any directionality processing of the activated microphone(s).
+     */
+    UNSPECIFIED = 0,
+    /**
+     * Optimize capture for audio coming from the screen-side of the device.
+     */
+    FRONT = 1,
+    /**
+     * Optimize capture for audio coming from the side of the device opposite the screen.
+     */
+    BACK = 2,
+    /**
+     * Optimize capture for audio coming from an off-device microphone.
+     */
+    EXTERNAL = 3,
+};
diff --git a/audio/common/2.0/Android.bp b/audio/common/2.0/Android.bp
index 878b594..a64548f 100644
--- a/audio/common/2.0/Android.bp
+++ b/audio/common/2.0/Android.bp
@@ -9,39 +9,6 @@
     srcs: [
         "types.hal",
     ],
-    types: [
-        "AudioChannelMask",
-        "AudioConfig",
-        "AudioDevice",
-        "AudioFormat",
-        "AudioGain",
-        "AudioGainConfig",
-        "AudioGainMode",
-        "AudioHandleConsts",
-        "AudioInputFlag",
-        "AudioInterleave",
-        "AudioMixLatencyClass",
-        "AudioMode",
-        "AudioOffloadInfo",
-        "AudioOutputFlag",
-        "AudioPort",
-        "AudioPortConfig",
-        "AudioPortConfigDeviceExt",
-        "AudioPortConfigMask",
-        "AudioPortConfigSessionExt",
-        "AudioPortDeviceExt",
-        "AudioPortMixExt",
-        "AudioPortRole",
-        "AudioPortSessionExt",
-        "AudioPortType",
-        "AudioSessionConsts",
-        "AudioSource",
-        "AudioStreamType",
-        "AudioUsage",
-        "FixedChannelCount",
-        "ThreadInfo",
-        "Uuid",
-    ],
     gen_java: false,
     gen_java_constants: true,
 }
diff --git a/audio/common/4.0/Android.bp b/audio/common/4.0/Android.bp
index 9b737dc..cd504e5 100644
--- a/audio/common/4.0/Android.bp
+++ b/audio/common/4.0/Android.bp
@@ -9,39 +9,6 @@
     srcs: [
         "types.hal",
     ],
-    types: [
-        "AudioChannelMask",
-        "AudioConfig",
-        "AudioContentType",
-        "AudioDevice",
-        "AudioFormat",
-        "AudioGain",
-        "AudioGainConfig",
-        "AudioGainMode",
-        "AudioHandleConsts",
-        "AudioInputFlag",
-        "AudioMixLatencyClass",
-        "AudioMode",
-        "AudioOffloadInfo",
-        "AudioOutputFlag",
-        "AudioPort",
-        "AudioPortConfig",
-        "AudioPortConfigDeviceExt",
-        "AudioPortConfigMask",
-        "AudioPortConfigSessionExt",
-        "AudioPortDeviceExt",
-        "AudioPortMixExt",
-        "AudioPortRole",
-        "AudioPortSessionExt",
-        "AudioPortType",
-        "AudioSessionConsts",
-        "AudioSource",
-        "AudioStreamType",
-        "AudioUsage",
-        "FixedChannelCount",
-        "ThreadInfo",
-        "Uuid",
-    ],
     gen_java: false,
     gen_java_constants: true,
 }
diff --git a/audio/common/5.0/Android.bp b/audio/common/5.0/Android.bp
index c17f144..66c6fe8 100644
--- a/audio/common/5.0/Android.bp
+++ b/audio/common/5.0/Android.bp
@@ -9,42 +9,8 @@
     srcs: [
         "types.hal",
     ],
-    types: [
-        "AudioChannelMask",
-        "AudioConfig",
-        "AudioContentType",
-        "AudioDevice",
-        "AudioFormat",
-        "AudioGain",
-        "AudioGainConfig",
-        "AudioGainMode",
-        "AudioHandleConsts",
-        "AudioInputFlag",
-        "AudioMixLatencyClass",
-        "AudioMode",
-        "AudioOffloadInfo",
-        "AudioOutputFlag",
-        "AudioPort",
-        "AudioPortConfig",
-        "AudioPortConfigDeviceExt",
-        "AudioPortConfigMask",
-        "AudioPortConfigSessionExt",
-        "AudioPortDeviceExt",
-        "AudioPortMixExt",
-        "AudioPortRole",
-        "AudioPortSessionExt",
-        "AudioPortType",
-        "AudioSessionConsts",
-        "AudioSource",
-        "AudioStreamType",
-        "AudioUsage",
-        "FixedChannelCount",
-        "PlaybackTrackMetadata",
-        "RecordTrackMetadata",
-        "SinkMetadata",
-        "SourceMetadata",
-        "ThreadInfo",
-        "Uuid",
+    interfaces: [
+        "android.hidl.safe_union@1.0",
     ],
     gen_java: false,
     gen_java_constants: true,
diff --git a/audio/common/5.0/types.hal b/audio/common/5.0/types.hal
index 2ce2929..8f8a888 100644
--- a/audio/common/5.0/types.hal
+++ b/audio/common/5.0/types.hal
@@ -16,6 +16,8 @@
 
 package android.hardware.audio.common@5.0;
 
+import android.hidl.safe_union@1.0;
+
 /*
  *
  *  IDs and Handles
@@ -131,7 +133,18 @@
      * and raw signal analysis.
      */
     UNPROCESSED         = 9,
-
+    /**
+     * Source for capturing audio meant to be processed in real time and played back for live
+     * performance (e.g karaoke). The capture path will minimize latency and coupling with
+     * playback path.
+     */
+    VOICE_PERFORMANCE    = 10,
+    /**
+     * Source for an echo canceller to capture the reference signal to be cancelled.
+     * The echo reference signal will be captured as close as possible to the DAC in order
+     * to include all post processing applied to the playback path.
+     */
+    ECHO_REFERENCE      = 1997,
     FM_TUNER            = 1998,
 };
 
@@ -222,6 +235,12 @@
     LDAC                = 0x23000000UL,
     /** Dolby Metadata-enhanced Audio Transmission */
     MAT                 = 0x24000000UL,
+    AAC_LATM            = 0x25000000UL,
+    CELT                = 0x26000000UL,
+    APTX_ADAPTIVE       = 0x27000000UL,
+    LHDC                = 0x28000000UL,
+    LHDC_LL             = 0x29000000UL,
+
     /** Deprecated */
     MAIN_MASK           = 0xFF000000UL,
     SUB_MASK            = 0x00FFFFFFUL,
@@ -293,6 +312,9 @@
     MAT_1_0             = (MAT | MAT_SUB_1_0),
     MAT_2_0             = (MAT | MAT_SUB_2_0),
     MAT_2_1             = (MAT | MAT_SUB_2_1),
+    AAC_LATM_LC         = (AAC_LATM | AAC_SUB_LC),
+    AAC_LATM_HE_V1      = (AAC_LATM | AAC_SUB_HE_V1),
+    AAC_LATM_HE_V2      = (AAC_LATM | AAC_SUB_HE_V2),
 };
 
 /**
@@ -376,6 +398,16 @@
     OUT_TOP_SIDE_LEFT         = 0x40000,
     OUT_TOP_SIDE_RIGHT        = 0x80000,
 
+    /**
+     * Haptic channel characteristics are specific to a device and
+     * only used to play device specific resources (eg: ringtones).
+     * The HAL can freely map A and B to haptic controllers, the
+     * framework shall not interpret those values and forward them
+     * from the device audio assets.
+     */
+    OUT_HAPTIC_A              = 0x20000000,
+    OUT_HAPTIC_B              = 0x10000000,
+
     OUT_MONO     = OUT_FRONT_LEFT,
     OUT_STEREO   = (OUT_FRONT_LEFT | OUT_FRONT_RIGHT),
     OUT_2POINT1  = (OUT_FRONT_LEFT | OUT_FRONT_RIGHT | OUT_LOW_FREQUENCY),
@@ -423,6 +455,12 @@
     OUT_7POINT1POINT4  = (OUT_7POINT1 |
             OUT_TOP_FRONT_LEFT | OUT_TOP_FRONT_RIGHT |
             OUT_TOP_BACK_LEFT | OUT_TOP_BACK_RIGHT),
+    OUT_MONO_HAPTIC_A = (OUT_FRONT_LEFT | OUT_HAPTIC_A),
+    OUT_STEREO_HAPTIC_A = (OUT_FRONT_LEFT | OUT_FRONT_RIGHT | OUT_HAPTIC_A),
+    OUT_HAPTIC_AB = (OUT_HAPTIC_A | OUT_HAPTIC_B),
+    OUT_MONO_HAPTIC_AB = (OUT_FRONT_LEFT | OUT_HAPTIC_A | OUT_HAPTIC_B),
+    OUT_STEREO_HAPTIC_AB = (OUT_FRONT_LEFT | OUT_FRONT_RIGHT |
+            OUT_HAPTIC_A | OUT_HAPTIC_B),
     // Note that the 2.0 OUT_ALL* have been moved to helper functions
 
     /* These are bits only, not complete values */
@@ -580,12 +618,38 @@
     IN_PROXY                 = BIT_IN | 0x1000000,
     IN_USB_HEADSET           = BIT_IN | 0x2000000,
     IN_BLUETOOTH_BLE         = BIT_IN | 0x4000000,
+    IN_ECHO_REFERENCE        = BIT_IN | 0x10000000,
     IN_DEFAULT               = BIT_IN | BIT_DEFAULT,
 
     // Note that the 2.0 IN_ALL* have been moved to helper functions
 };
 
 /**
+ * IEEE 802 MAC address.
+ */
+typedef uint8_t[6] MacAddress;
+
+/**
+ * Specifies a device address in case when several devices of the same type
+ * can be connected (e.g. BT A2DP, USB).
+ */
+struct DeviceAddress {
+    AudioDevice device;  // discriminator
+    union Address {
+        MacAddress mac;     // used for BLUETOOTH_A2DP_*
+        uint8_t[4] ipv4;    // used for IP
+        struct Alsa {
+            int32_t card;
+            int32_t device;
+        } alsa;             // used for USB_*
+    } address;
+    /** Arbitrary BUS device unique address. Should not be interpreted by the framework. */
+    string busAddress;
+    /** Arbitrary REMOTE_SUBMIX device unique address. Should not be interpreted by the HAL. */
+    string rSubmixAddress;
+};
+
+/**
  * The audio output flags serve two purposes:
  *
  *  - when an AudioTrack is created they indicate a "wish" to be connected to an
@@ -732,9 +796,17 @@
      * Must not be negative.
      */
     float gain;
+    /**
+     * Indicates the destination of an input stream, can be left unspecified.
+     */
+    safe_union Destination {
+        Monostate unspecified;
+        DeviceAddress device;
+    };
+    Destination destination;
 };
 
-/** Metadatas of the source of a StreamIn. */
+/** Metadatas of the sink of a StreamIn. */
 struct SinkMetadata {
     vec<RecordTrackMetadata> tracks;
 };
diff --git a/audio/effect/2.0/Android.bp b/audio/effect/2.0/Android.bp
index c4f8b06..2dd1a0c 100644
--- a/audio/effect/2.0/Android.bp
+++ b/audio/effect/2.0/Android.bp
@@ -27,20 +27,6 @@
         "android.hardware.audio.common@2.0",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "AudioBuffer",
-        "EffectAuxChannelsConfig",
-        "EffectBufferAccess",
-        "EffectBufferConfig",
-        "EffectConfig",
-        "EffectConfigParameters",
-        "EffectDescriptor",
-        "EffectFeature",
-        "EffectFlags",
-        "EffectOffloadParameter",
-        "MessageQueueFlagBits",
-        "Result",
-    ],
     gen_java: false,
     gen_java_constants: true,
 }
diff --git a/audio/effect/4.0/Android.bp b/audio/effect/4.0/Android.bp
index e7676a9..2c32bcb 100644
--- a/audio/effect/4.0/Android.bp
+++ b/audio/effect/4.0/Android.bp
@@ -27,20 +27,6 @@
         "android.hardware.audio.common@4.0",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "AudioBuffer",
-        "EffectAuxChannelsConfig",
-        "EffectBufferAccess",
-        "EffectBufferConfig",
-        "EffectConfig",
-        "EffectConfigParameters",
-        "EffectDescriptor",
-        "EffectFeature",
-        "EffectFlags",
-        "EffectOffloadParameter",
-        "MessageQueueFlagBits",
-        "Result",
-    ],
     gen_java: false,
     gen_java_constants: true,
 }
diff --git a/audio/effect/5.0/Android.bp b/audio/effect/5.0/Android.bp
index d60d94a..32fe652 100644
--- a/audio/effect/5.0/Android.bp
+++ b/audio/effect/5.0/Android.bp
@@ -26,20 +26,7 @@
     interfaces: [
         "android.hardware.audio.common@5.0",
         "android.hidl.base@1.0",
-    ],
-    types: [
-        "AudioBuffer",
-        "EffectAuxChannelsConfig",
-        "EffectBufferAccess",
-        "EffectBufferConfig",
-        "EffectConfig",
-        "EffectConfigParameters",
-        "EffectDescriptor",
-        "EffectFeature",
-        "EffectFlags",
-        "EffectOffloadParameter",
-        "MessageQueueFlagBits",
-        "Result",
+        "android.hidl.safe_union@1.0",
     ],
     gen_java: false,
     gen_java_constants: true,
diff --git a/audio/effect/5.0/types.hal b/audio/effect/5.0/types.hal
index 84e1108..4b6c196 100644
--- a/audio/effect/5.0/types.hal
+++ b/audio/effect/5.0/types.hal
@@ -53,6 +53,7 @@
  * | Volume         | 6..8   | 0 none
  * | management     |        | 1 implements volume control
  * |                |        | 2 requires volume indication
+ * |                |        | 3 monitors requested volume
  * |                |        | 4 reserved
  * +----------------+--------+--------------------------------------------------
  * | Device         | 9..11  | 0 none
@@ -136,6 +137,7 @@
     VOLUME_MASK = ((1 << VOLUME_SIZE) -1) << VOLUME_SHIFT,
     VOLUME_CTRL = 1 << VOLUME_SHIFT,
     VOLUME_IND = 2 << VOLUME_SHIFT,
+    VOLUME_MONITOR = 3 << VOLUME_SHIFT,
     VOLUME_NONE = 0 << VOLUME_SHIFT,
 
     // Device indication
diff --git a/automotive/audiocontrol/1.0/Android.bp b/automotive/audiocontrol/1.0/Android.bp
index 9335a6c..7c51cf7 100644
--- a/automotive/audiocontrol/1.0/Android.bp
+++ b/automotive/audiocontrol/1.0/Android.bp
@@ -13,9 +13,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "ContextNumber",
-    ],
     gen_java: true,
 }
 
diff --git a/automotive/evs/1.0/Android.bp b/automotive/evs/1.0/Android.bp
index f620eb5..3ac67ea 100644
--- a/automotive/evs/1.0/Android.bp
+++ b/automotive/evs/1.0/Android.bp
@@ -16,13 +16,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "BufferDesc",
-        "CameraDesc",
-        "DisplayDesc",
-        "DisplayState",
-        "EvsResult",
-    ],
     gen_java: true,
 }
 
diff --git a/automotive/vehicle/2.0/Android.bp b/automotive/vehicle/2.0/Android.bp
index 6af774e..4163879 100644
--- a/automotive/vehicle/2.0/Android.bp
+++ b/automotive/vehicle/2.0/Android.bp
@@ -14,62 +14,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "DiagnosticFloatSensorIndex",
-        "DiagnosticIntegerSensorIndex",
-        "EvConnectorType",
-        "FuelType",
-        "Obd2CommonIgnitionMonitors",
-        "Obd2CompressionIgnitionMonitors",
-        "Obd2FuelSystemStatus",
-        "Obd2FuelType",
-        "Obd2IgnitionMonitorKind",
-        "Obd2SecondaryAirStatus",
-        "Obd2SparkIgnitionMonitors",
-        "PortLocationType",
-        "StatusCode",
-        "SubscribeFlags",
-        "SubscribeOptions",
-        "VehicleApPowerBootupReason",
-        "VehicleApPowerStateConfigFlag",
-        "VehicleApPowerStateReport",
-        "VehicleApPowerStateReq",
-        "VehicleApPowerStateReqIndex",
-        "VehicleApPowerStateShutdownParam",
-        "VehicleArea",
-        "VehicleAreaConfig",
-        "VehicleAreaDoor",
-        "VehicleAreaMirror",
-        "VehicleAreaSeat",
-        "VehicleAreaWheel",
-        "VehicleAreaWindow",
-        "VehicleDisplay",
-        "VehicleGear",
-        "VehicleHvacFanDirection",
-        "VehicleHwKeyInputAction",
-        "VehicleIgnitionState",
-        "VehicleLightState",
-        "VehicleLightSwitch",
-        "VehicleOilLevel",
-        "VehiclePropConfig",
-        "VehiclePropValue",
-        "VehicleProperty",
-        "VehiclePropertyAccess",
-        "VehiclePropertyChangeMode",
-        "VehiclePropertyGroup",
-        "VehiclePropertyStatus",
-        "VehiclePropertyType",
-        "VehicleTurnSignal",
-        "VehicleUnit",
-        "VmsAvailabilityStateIntegerValuesIndex",
-        "VmsBaseMessageIntegerValuesIndex",
-        "VmsMessageType",
-        "VmsMessageWithLayerAndPublisherIdIntegerValuesIndex",
-        "VmsMessageWithLayerIntegerValuesIndex",
-        "VmsOfferingMessageIntegerValuesIndex",
-        "VmsPublisherInformationIntegerValuesIndex",
-        "VmsSubscriptionsStateIntegerValuesIndex",
-    ],
     gen_java: true,
 }
 
diff --git a/biometrics/fingerprint/2.1/Android.bp b/biometrics/fingerprint/2.1/Android.bp
index dbcce92..cff43c4 100644
--- a/biometrics/fingerprint/2.1/Android.bp
+++ b/biometrics/fingerprint/2.1/Android.bp
@@ -14,17 +14,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "FingerprintAcquired",
-        "FingerprintAcquiredInfo",
-        "FingerprintAuthenticated",
-        "FingerprintEnroll",
-        "FingerprintError",
-        "FingerprintFingerId",
-        "FingerprintIterator",
-        "FingerprintMsgType",
-        "RequestStatus",
-    ],
     gen_java: true,
 }
 
diff --git a/bluetooth/1.0/Android.bp b/bluetooth/1.0/Android.bp
index 49df8a3..67f1a4f 100644
--- a/bluetooth/1.0/Android.bp
+++ b/bluetooth/1.0/Android.bp
@@ -14,9 +14,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "Status",
-    ],
     gen_java: true,
 }
 
diff --git a/bluetooth/a2dp/1.0/Android.bp b/bluetooth/a2dp/1.0/Android.bp
index 5e85290..fa46a1c 100644
--- a/bluetooth/a2dp/1.0/Android.bp
+++ b/bluetooth/a2dp/1.0/Android.bp
@@ -14,14 +14,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "BitsPerSample",
-        "ChannelMode",
-        "CodecConfiguration",
-        "CodecType",
-        "SampleRate",
-        "Status",
-    ],
     gen_java: false,
 }
 
diff --git a/bluetooth/audio/2.0/Android.bp b/bluetooth/audio/2.0/Android.bp
index 542c812..a020f22 100644
--- a/bluetooth/audio/2.0/Android.bp
+++ b/bluetooth/audio/2.0/Android.bp
@@ -15,32 +15,7 @@
     interfaces: [
         "android.hardware.audio.common@5.0",
         "android.hidl.base@1.0",
-    ],
-    types: [
-        "AacObjectType",
-        "AacParameters",
-        "AacVariableBitRate",
-        "AptxParameters",
-        "AudioCapabilities",
-        "AudioConfiguration",
-        "BitsPerSample",
-        "ChannelMode",
-        "CodecCapabilities",
-        "CodecConfiguration",
-        "CodecType",
-        "LdacChannelMode",
-        "LdacParameters",
-        "LdacQualityIndex",
-        "PcmParameters",
-        "SampleRate",
-        "SbcAllocMethod",
-        "SbcBlockLength",
-        "SbcChannelMode",
-        "SbcNumSubbands",
-        "SbcParameters",
-        "SessionType",
-        "Status",
-        "TimeSpec",
+        "android.hidl.safe_union@1.0",
     ],
     gen_java: false,
 }
diff --git a/boot/1.0/Android.bp b/boot/1.0/Android.bp
index 85c3b61..b580cac 100644
--- a/boot/1.0/Android.bp
+++ b/boot/1.0/Android.bp
@@ -13,10 +13,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "BoolResult",
-        "CommandResult",
-    ],
     gen_java: true,
 }
 
diff --git a/broadcastradio/1.0/Android.bp b/broadcastradio/1.0/Android.bp
index ecfecc4..76e580e 100644
--- a/broadcastradio/1.0/Android.bp
+++ b/broadcastradio/1.0/Android.bp
@@ -16,23 +16,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "AmBandConfig",
-        "Band",
-        "BandConfig",
-        "Class",
-        "Deemphasis",
-        "Direction",
-        "FmBandConfig",
-        "MetaData",
-        "MetaDataClock",
-        "MetadataKey",
-        "MetadataType",
-        "ProgramInfo",
-        "Properties",
-        "Rds",
-        "Result",
-    ],
     gen_java: false,
 }
 
diff --git a/broadcastradio/1.1/Android.bp b/broadcastradio/1.1/Android.bp
index 1d59105..2186b9a 100644
--- a/broadcastradio/1.1/Android.bp
+++ b/broadcastradio/1.1/Android.bp
@@ -17,18 +17,6 @@
         "android.hardware.broadcastradio@1.0",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "IdentifierType",
-        "Modulation",
-        "ProgramIdentifier",
-        "ProgramInfo",
-        "ProgramInfoFlags",
-        "ProgramListResult",
-        "ProgramSelector",
-        "ProgramType",
-        "Properties",
-        "VendorKeyValue",
-    ],
     gen_java: false,
 }
 
diff --git a/broadcastradio/2.0/Android.bp b/broadcastradio/2.0/Android.bp
index 2434fdc..93afc02 100644
--- a/broadcastradio/2.0/Android.bp
+++ b/broadcastradio/2.0/Android.bp
@@ -17,29 +17,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "AmFmBandRange",
-        "AmFmRegionConfig",
-        "Announcement",
-        "AnnouncementType",
-        "ConfigFlag",
-        "Constants",
-        "DabTableEntry",
-        "Deemphasis",
-        "IdentifierType",
-        "Metadata",
-        "MetadataKey",
-        "ProgramFilter",
-        "ProgramIdentifier",
-        "ProgramInfo",
-        "ProgramInfoFlags",
-        "ProgramListChunk",
-        "ProgramSelector",
-        "Properties",
-        "Rds",
-        "Result",
-        "VendorKeyValue",
-    ],
     gen_java: true,
 }
 
diff --git a/camera/common/1.0/Android.bp b/camera/common/1.0/Android.bp
index c42e054..fe29774 100644
--- a/camera/common/1.0/Android.bp
+++ b/camera/common/1.0/Android.bp
@@ -9,17 +9,6 @@
     srcs: [
         "types.hal",
     ],
-    types: [
-        "CameraDeviceStatus",
-        "CameraMetadataType",
-        "CameraResourceCost",
-        "Status",
-        "TagBoundaryId",
-        "TorchMode",
-        "TorchModeStatus",
-        "VendorTag",
-        "VendorTagSection",
-    ],
     gen_java: true,
 }
 
diff --git a/camera/device/1.0/Android.bp b/camera/device/1.0/Android.bp
index b08f873..a8df1ec 100644
--- a/camera/device/1.0/Android.bp
+++ b/camera/device/1.0/Android.bp
@@ -17,18 +17,6 @@
         "android.hardware.graphics.common@1.0",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "CameraFace",
-        "CameraFacing",
-        "CameraFrameMetadata",
-        "CameraInfo",
-        "CommandType",
-        "DataCallbackMsg",
-        "FrameCallbackFlag",
-        "HandleTimestampMessage",
-        "NotifyCallbackMsg",
-        "VideoFrameMessage",
-    ],
     gen_java: true,
 }
 
diff --git a/camera/device/3.2/Android.bp b/camera/device/3.2/Android.bp
index a8a164e..e7546de 100644
--- a/camera/device/3.2/Android.bp
+++ b/camera/device/3.2/Android.bp
@@ -17,28 +17,6 @@
         "android.hardware.graphics.common@1.0",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "BufferCache",
-        "BufferStatus",
-        "CameraBlob",
-        "CameraBlobId",
-        "CaptureRequest",
-        "CaptureResult",
-        "ErrorCode",
-        "ErrorMsg",
-        "HalStream",
-        "HalStreamConfiguration",
-        "MsgType",
-        "NotifyMsg",
-        "RequestTemplate",
-        "ShutterMsg",
-        "Stream",
-        "StreamBuffer",
-        "StreamConfiguration",
-        "StreamConfigurationMode",
-        "StreamRotation",
-        "StreamType",
-    ],
     gen_java: false,
 }
 
diff --git a/camera/device/3.3/Android.bp b/camera/device/3.3/Android.bp
index f006f79..e21824f 100644
--- a/camera/device/3.3/Android.bp
+++ b/camera/device/3.3/Android.bp
@@ -16,10 +16,6 @@
         "android.hardware.graphics.common@1.0",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "HalStream",
-        "HalStreamConfiguration",
-    ],
     gen_java: false,
 }
 
diff --git a/camera/device/3.4/Android.bp b/camera/device/3.4/Android.bp
index 2c649ba..6a2eac5 100644
--- a/camera/device/3.4/Android.bp
+++ b/camera/device/3.4/Android.bp
@@ -18,16 +18,6 @@
         "android.hardware.graphics.common@1.0",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "CaptureRequest",
-        "CaptureResult",
-        "HalStream",
-        "HalStreamConfiguration",
-        "PhysicalCameraMetadata",
-        "PhysicalCameraSetting",
-        "Stream",
-        "StreamConfiguration",
-    ],
     gen_java: false,
 }
 
diff --git a/camera/metadata/3.2/Android.bp b/camera/metadata/3.2/Android.bp
index bce2c9b..3271d91 100644
--- a/camera/metadata/3.2/Android.bp
+++ b/camera/metadata/3.2/Android.bp
@@ -9,72 +9,6 @@
     srcs: [
         "types.hal",
     ],
-    types: [
-        "CameraMetadataEnumAndroidBlackLevelLock",
-        "CameraMetadataEnumAndroidColorCorrectionAberrationMode",
-        "CameraMetadataEnumAndroidColorCorrectionMode",
-        "CameraMetadataEnumAndroidControlAeAntibandingMode",
-        "CameraMetadataEnumAndroidControlAeLock",
-        "CameraMetadataEnumAndroidControlAeLockAvailable",
-        "CameraMetadataEnumAndroidControlAeMode",
-        "CameraMetadataEnumAndroidControlAePrecaptureTrigger",
-        "CameraMetadataEnumAndroidControlAeState",
-        "CameraMetadataEnumAndroidControlAfMode",
-        "CameraMetadataEnumAndroidControlAfState",
-        "CameraMetadataEnumAndroidControlAfTrigger",
-        "CameraMetadataEnumAndroidControlAwbLock",
-        "CameraMetadataEnumAndroidControlAwbLockAvailable",
-        "CameraMetadataEnumAndroidControlAwbMode",
-        "CameraMetadataEnumAndroidControlAwbState",
-        "CameraMetadataEnumAndroidControlCaptureIntent",
-        "CameraMetadataEnumAndroidControlEffectMode",
-        "CameraMetadataEnumAndroidControlEnableZsl",
-        "CameraMetadataEnumAndroidControlMode",
-        "CameraMetadataEnumAndroidControlSceneMode",
-        "CameraMetadataEnumAndroidControlVideoStabilizationMode",
-        "CameraMetadataEnumAndroidDemosaicMode",
-        "CameraMetadataEnumAndroidDepthAvailableDepthStreamConfigurations",
-        "CameraMetadataEnumAndroidDepthDepthIsExclusive",
-        "CameraMetadataEnumAndroidEdgeMode",
-        "CameraMetadataEnumAndroidFlashInfoAvailable",
-        "CameraMetadataEnumAndroidFlashMode",
-        "CameraMetadataEnumAndroidFlashState",
-        "CameraMetadataEnumAndroidHotPixelMode",
-        "CameraMetadataEnumAndroidInfoSupportedHardwareLevel",
-        "CameraMetadataEnumAndroidLedAvailableLeds",
-        "CameraMetadataEnumAndroidLedTransmit",
-        "CameraMetadataEnumAndroidLensFacing",
-        "CameraMetadataEnumAndroidLensInfoFocusDistanceCalibration",
-        "CameraMetadataEnumAndroidLensOpticalStabilizationMode",
-        "CameraMetadataEnumAndroidLensState",
-        "CameraMetadataEnumAndroidNoiseReductionMode",
-        "CameraMetadataEnumAndroidQuirksPartialResult",
-        "CameraMetadataEnumAndroidRequestAvailableCapabilities",
-        "CameraMetadataEnumAndroidRequestMetadataMode",
-        "CameraMetadataEnumAndroidRequestType",
-        "CameraMetadataEnumAndroidScalerAvailableFormats",
-        "CameraMetadataEnumAndroidScalerAvailableStreamConfigurations",
-        "CameraMetadataEnumAndroidScalerCroppingType",
-        "CameraMetadataEnumAndroidSensorInfoColorFilterArrangement",
-        "CameraMetadataEnumAndroidSensorInfoLensShadingApplied",
-        "CameraMetadataEnumAndroidSensorInfoTimestampSource",
-        "CameraMetadataEnumAndroidSensorReferenceIlluminant1",
-        "CameraMetadataEnumAndroidSensorTestPatternMode",
-        "CameraMetadataEnumAndroidShadingMode",
-        "CameraMetadataEnumAndroidStatisticsFaceDetectMode",
-        "CameraMetadataEnumAndroidStatisticsHistogramMode",
-        "CameraMetadataEnumAndroidStatisticsHotPixelMapMode",
-        "CameraMetadataEnumAndroidStatisticsLensShadingMapMode",
-        "CameraMetadataEnumAndroidStatisticsSceneFlicker",
-        "CameraMetadataEnumAndroidStatisticsSharpnessMapMode",
-        "CameraMetadataEnumAndroidSyncFrameNumber",
-        "CameraMetadataEnumAndroidSyncMaxLatency",
-        "CameraMetadataEnumAndroidTonemapMode",
-        "CameraMetadataEnumAndroidTonemapPresetCurve",
-        "CameraMetadataSection",
-        "CameraMetadataSectionStart",
-        "CameraMetadataTag",
-    ],
     gen_java: true,
 }
 
diff --git a/camera/metadata/3.3/Android.bp b/camera/metadata/3.3/Android.bp
index ad6f141..4dddfad 100644
--- a/camera/metadata/3.3/Android.bp
+++ b/camera/metadata/3.3/Android.bp
@@ -12,20 +12,6 @@
     interfaces: [
         "android.hardware.camera.metadata@3.2",
     ],
-    types: [
-        "CameraMetadataEnumAndroidControlAeMode",
-        "CameraMetadataEnumAndroidControlAfSceneChange",
-        "CameraMetadataEnumAndroidControlCaptureIntent",
-        "CameraMetadataEnumAndroidDistortionCorrectionMode",
-        "CameraMetadataEnumAndroidInfoSupportedHardwareLevel",
-        "CameraMetadataEnumAndroidLensPoseReference",
-        "CameraMetadataEnumAndroidLogicalMultiCameraSensorSyncType",
-        "CameraMetadataEnumAndroidRequestAvailableCapabilities",
-        "CameraMetadataEnumAndroidStatisticsOisDataMode",
-        "CameraMetadataSection",
-        "CameraMetadataSectionStart",
-        "CameraMetadataTag",
-    ],
     gen_java: true,
 }
 
diff --git a/cas/1.0/Android.bp b/cas/1.0/Android.bp
index 39b36be..8d8e946 100644
--- a/cas/1.0/Android.bp
+++ b/cas/1.0/Android.bp
@@ -16,10 +16,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "HidlCasPluginDescriptor",
-        "Status",
-    ],
     gen_java: true,
 }
 
diff --git a/cas/native/1.0/Android.bp b/cas/native/1.0/Android.bp
index 7587416..880eccd 100644
--- a/cas/native/1.0/Android.bp
+++ b/cas/native/1.0/Android.bp
@@ -14,13 +14,6 @@
         "android.hardware.cas@1.0",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "BufferType",
-        "DestinationBuffer",
-        "ScramblingControl",
-        "SharedBuffer",
-        "SubSample",
-    ],
     gen_java: false,
 }
 
diff --git a/configstore/1.0/Android.bp b/configstore/1.0/Android.bp
index 5e98e5c..a6fd656 100644
--- a/configstore/1.0/Android.bp
+++ b/configstore/1.0/Android.bp
@@ -13,14 +13,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "OptionalBool",
-        "OptionalInt32",
-        "OptionalInt64",
-        "OptionalString",
-        "OptionalUInt32",
-        "OptionalUInt64",
-    ],
     gen_java: true,
 }
 
diff --git a/configstore/1.1/Android.bp b/configstore/1.1/Android.bp
index 2b6e6fa..3900d9b 100644
--- a/configstore/1.1/Android.bp
+++ b/configstore/1.1/Android.bp
@@ -14,10 +14,6 @@
         "android.hardware.configstore@1.0",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "DisplayOrientation",
-        "OptionalDisplayOrientation",
-    ],
     gen_java: true,
 }
 
diff --git a/confirmationui/1.0/Android.bp b/confirmationui/1.0/Android.bp
index 21acecb..e6b0414 100644
--- a/confirmationui/1.0/Android.bp
+++ b/confirmationui/1.0/Android.bp
@@ -15,13 +15,6 @@
         "android.hardware.keymaster@4.0",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "MessageSize",
-        "ResponseCode",
-        "TestKeyBits",
-        "TestModeCommands",
-        "UIOption",
-    ],
     gen_java: false,
 }
 
diff --git a/contexthub/1.0/Android.bp b/contexthub/1.0/Android.bp
index 77dba66..730adcb 100644
--- a/contexthub/1.0/Android.bp
+++ b/contexthub/1.0/Android.bp
@@ -14,22 +14,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "AsyncEventType",
-        "ContextHub",
-        "ContextHubMsg",
-        "HostEndPoint",
-        "HubAppInfo",
-        "HubMemoryFlag",
-        "HubMemoryType",
-        "MemRange",
-        "NanoAppBinary",
-        "NanoAppFlags",
-        "PhysicalSensor",
-        "Result",
-        "SensorType",
-        "TransactionResult",
-    ],
     gen_java: true,
 }
 
diff --git a/current.txt b/current.txt
index 8f93d8e..937e7b1 100644
--- a/current.txt
+++ b/current.txt
@@ -394,6 +394,7 @@
 da33234403ff5d60f3473711917b9948e6484a4260b5247acdafb111193a9de2 android.hardware.configstore@1.0::ISurfaceFlingerConfigs
 21165b8e30c4b2d52980e4728f661420adc16e38bbe73476c06b2085be908f4c android.hardware.gnss@1.0::IGnssCallback
 d702fb01dc2a0733aa820b7eb65435ee3334f75632ef880bafd2fb8803a20a58 android.hardware.gnss@1.0::IGnssMeasurementCallback
+d4fea995378bb4f421b4e24ccf68cad2734ab07fe4f874a126ba558b99df5766 android.hardware.graphics.composer@2.1::IComposerClient
 b7ecf29927055ec422ec44bf776223f07d79ad9f92ccf9becf167e62c2607e7a android.hardware.keymaster@4.0::IKeymasterDevice
 574e8f1499436fb4075894dcae0b36682427956ecb114f17f1fe22d116a83c6b android.hardware.neuralnetworks@1.0::IPreparedModel
 417ab60fe1ef786778047e4486f3d868ebce570d91addd8fe4251515213072de android.hardware.neuralnetworks@1.0::types
@@ -409,6 +410,34 @@
 # HALs released in Android Q
 438dc52ab820befb7a11e953e82110f0d8c91cdf96ef62be921efc64f5a3d580 android.hardware.atrace@1.0::IAtraceDevice
 20b9f81bb0b1f812f150ec94d42648b01087f2344ea91df0416bce0fb6cdfbd4 android.hardware.atrace@1.0::types
+dfdb4d04b65dc363e5621c85bfdf3023c277b75c31d821d8e71b3f44f198e214 android.hardware.audio@5.0::IDevice
+0a911297821854985cfcdb17b63d7948af0f0f51ce8c68cc86367c185bbc772e android.hardware.audio@5.0::IDevicesFactory
+ce2e8c6c8559fd42bd69e0dee27b4d9c93cd9b2eff487b4e6b6395b6a1a993d6 android.hardware.audio@5.0::IPrimaryDevice
+4a4e5e5d9357004a1256bde8d36010ee00c51cea811a1c1e0dd969a9fc0bf862 android.hardware.audio@5.0::IStream
+e05e48c583de14c1e5a6fa9d48ea50244e3e0924b76b342374e7471dc8007ba9 android.hardware.audio@5.0::IStreamIn
+9471b12b1c255bb530695720bc4174bd74987b75b1f820854af8944bc8c215c9 android.hardware.audio@5.0::IStreamOut
+1b0500367ed2b32a841667ac3200edf3d3a164e8004aca445ff1b085ac831e93 android.hardware.audio@5.0::IStreamOutCallback
+83e365479cc77d8717c155e1787ee668cd2ae4c557b467cf75b8e7cd53697ad8 android.hardware.audio@5.0::types
+894af04bebfe7da5b6791eefeb6eb3627da63d5efea735f16876d11d8ca4f61d android.hardware.audio.common@5.0::types
+f269297866765b95ddd1825676cc8a772f0c7c9863286df596fc302781a42ff5 android.hardware.audio.effect@5.0::IAcousticEchoCancelerEffect
+fa187b602d8939644ef708ed7627f2e3deac97899a4bda1de07f2ff126abe243 android.hardware.audio.effect@5.0::IAutomaticGainControlEffect
+e1bf864ccb8458c0da1dcc74a2e748b1dca8ac360df590591cf82d98292d7981 android.hardware.audio.effect@5.0::IBassBoostEffect
+d3867dcf1f46f1962d258c56151b5afb2ef26e9835fef73f01115492d58da5b7 android.hardware.audio.effect@5.0::IDownmixEffect
+445a65ea2edd1ccba8a8d8e1c88d24c6ea67e57d355fa446ab390e20f0db14aa android.hardware.audio.effect@5.0::IEffect
+0ac2e951f359e87644dcf642f488194f6b02563f89cfe8dd668ab7c422be89b1 android.hardware.audio.effect@5.0::IEffectBufferProviderCallback
+9019e7ac057b8105a9b9ac8974b13e1ded46d1006e5a544aec510dfaf92755c6 android.hardware.audio.effect@5.0::IEffectsFactory
+c8e5a7e450a5b201c286814d484d04c7b9c6cab71b4982b34b84177e818909db android.hardware.audio.effect@5.0::IEnvironmentalReverbEffect
+cf356f430a1bb42fd91af65f105e07fa84a5927dc45c36d8ffce5b6c132c1f3c android.hardware.audio.effect@5.0::IEqualizerEffect
+8c31b0cad211968dc6008dcb2b116bf5f12079c8dce920e79242e7839104138e android.hardware.audio.effect@5.0::ILoudnessEnhancerEffect
+6f0f86b549e30382619877784857c40d4c64978c1e9eef3c034bdd367aac7468 android.hardware.audio.effect@5.0::INoiseSuppressionEffect
+ca15a738dedc2f4981925f7d7ff29c22bc3f8a848403dcf0c592c167de09d9af android.hardware.audio.effect@5.0::IPresetReverbEffect
+443659bb9e27221e5da0d16c7a0ecb2dc3a9a03acc8a0b2196b47c50735e2d2e android.hardware.audio.effect@5.0::IVirtualizerEffect
+78fed26a781cdca1b3bcb37520bff705d7764ee81db9cfd37014953c7ad2596e android.hardware.audio.effect@5.0::IVisualizerEffect
+6385b6accab8a544e2ee54ba7bf5aa55dff6153bcedd80fdaae16fe9e0be7050 android.hardware.audio.effect@5.0::types
+ecedc58dbcdb13503c19c0ab160ac1dd0530bb1471164149282dd1463c684185 android.hardware.bluetooth.audio@2.0::IBluetoothAudioPort
+fb9c40e4deab40be5476477078fe3d8a4a4495fd9deef4321878d169d675c633 android.hardware.bluetooth.audio@2.0::IBluetoothAudioProvider
+f7431f3e3e4e3387fc6f27a6cf423eddcd824a395dc4349d302c995ab44a9895 android.hardware.bluetooth.audio@2.0::IBluetoothAudioProvidersFactory
+447a5c9bb0f1a5ed3f1dfe5216afe4be2f4362111d95479670eec4cae4d7d5f7 android.hardware.bluetooth.audio@2.0::types
 44480c912e4ab90b9ed17e56569cd5ca98413a8a2372efb028f4181204b6b73e android.hardware.fastboot@1.0::IFastboot
 7b2989744e3c555292d4b5b829acd09a7b40f96ead62ce54174cd959503b64bb android.hardware.fastboot@1.0::types
 c3f831a66d5815baf74f5b82fe79cf099542ddae4dfab3f388e1d41828e794fc android.hardware.health.storage@1.0::IGarbageCollectCallback
@@ -420,19 +449,19 @@
 92714960d1a53fc2ec557302b41c7cc93d2636d8364a44bd0f85be0c92927ff8 android.hardware.neuralnetworks@1.2::IExecutionCallback
 83885d366f22ada42c00d8854f0b7e7ba4cf73ddf80bb0d8e168ce132cec57ea android.hardware.neuralnetworks@1.2::IPreparedModel
 e1c734d1545e1a4ae749ff1dd9704a8e594c59aea7c8363159dc258e93e0df3b android.hardware.neuralnetworks@1.2::IPreparedModelCallback
-313b341f1f6196a48cf304eaf067f67510c1ebc04df8c7cd536db5611df5c5c2 android.hardware.neuralnetworks@1.2::types
+c752cff336d86762c26dc82e7e037f4962b815b1a068d2319d40a3d068e26f68 android.hardware.neuralnetworks@1.2::types
 cf7a4ba516a638f9b82a249c91fb603042c2d9ca43fd5aad9cf6c0401ed2a5d7 android.hardware.nfc@1.2::INfc
 abf98c2ae08bf765db54edc8068e36d52eb558cff6706b6fd7c18c65a1f3fc18 android.hardware.nfc@1.2::types
 4cb252dc6372a874aef666b92a6e9529915aa187521a700f0789065c3c702ead android.hardware.power.stats@1.0::IPowerStats
-69c394e7fe3236beb6231a709865e8a882aac7a612c8dddf64f5a66028fa2c68 android.hardware.power.stats@1.0::types
-11620ce020b6ef8f5b63eb2a39390de4a2fbbccc0a5e558b5b1a0e22e33f63cf android.hardware.radio@1.3::IRadio
+2043037d5baaff604805757d06979aa861013a1e87430db745265339a8681f79 android.hardware.power.stats@1.0::types
+a1c6b0761bcb89d6bf15a156f9306b8090b3a916a15fea1689b4b0c1738e382f android.hardware.radio@1.3::IRadio
 e9d0f11a52715f5a29d89e2d8e2e21db1e16a43174af6b9d51a62d705cda1455 android.hardware.radio@1.3::IRadioIndication
 d233f0da44f55fdef0a95db5229231412787bb67695cd1ea197ce89a3c2908b9 android.hardware.radio@1.3::IRadioResponse
 750a363c8cec70baa1aac19e275c15233c5898e93c6bb5155fa2ca7f365490dc android.hardware.radio@1.3::types
-21e6ce53f1759f6a213ca05bac3c0325ed911f74764d1c1f6fa5ed8068ade65b android.hardware.radio@1.4::IRadio
+4ac73ec1e4cfa535209e5e22547f08beb20ef812b4a29d0824780f52cbe2324d android.hardware.radio@1.4::IRadio
 33d9e6895cca98aa56296bb01720d18b8acd0e4de4960beb712e63ad147438a5 android.hardware.radio@1.4::IRadioIndication
 0cc0dd87c634aad36d7df22b2832839ef7ded71909dbcde11cfdd69dc0dc52b8 android.hardware.radio@1.4::IRadioResponse
-29d34232cc3974626b08759e039fe788bded7695cdeb098458e3e11e4c7d3603 android.hardware.radio@1.4::types
+22091ad1f6cb6da1c7c1467e6412c9c1ae577b3ecc0c3e5047fc4b50cdd60c69 android.hardware.radio@1.4::types
 51e696c0ceff30f74da8ff8d02fe4522ffd2f4a04cdfdbca0c68bfa64fcd306b android.hardware.radio.config@1.1::IRadioConfig
 7fcf167f593b10c67b59ab70321781c26a5575eab60803e7cbb1c14c71085a3b android.hardware.radio.config@1.1::IRadioConfigIndication
 b42eb3bbd5e7b519e28362340c2205aa75356de6b30f4fd09ec2ea784f250ab0 android.hardware.radio.config@1.1::IRadioConfigResponse
diff --git a/drm/1.0/Android.bp b/drm/1.0/Android.bp
index aca5ae4..fea851f 100644
--- a/drm/1.0/Android.bp
+++ b/drm/1.0/Android.bp
@@ -17,22 +17,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "BufferType",
-        "DestinationBuffer",
-        "EventType",
-        "KeyRequestType",
-        "KeyStatus",
-        "KeyStatusType",
-        "KeyType",
-        "KeyValue",
-        "Mode",
-        "Pattern",
-        "SecureStop",
-        "SharedBuffer",
-        "Status",
-        "SubSample",
-    ],
     gen_java: false,
 }
 
diff --git a/drm/1.1/Android.bp b/drm/1.1/Android.bp
index dba3e42..739b470 100644
--- a/drm/1.1/Android.bp
+++ b/drm/1.1/Android.bp
@@ -16,13 +16,6 @@
         "android.hardware.drm@1.0",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "DrmMetricGroup",
-        "HdcpLevel",
-        "KeyRequestType",
-        "SecureStopRelease",
-        "SecurityLevel",
-    ],
     gen_java: false,
 }
 
diff --git a/fastboot/1.0/Android.bp b/fastboot/1.0/Android.bp
index 467fc6d..ea3566f 100644
--- a/fastboot/1.0/Android.bp
+++ b/fastboot/1.0/Android.bp
@@ -13,11 +13,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "FileSystemType",
-        "Result",
-        "Status",
-    ],
     gen_java: true,
 }
 
diff --git a/gatekeeper/1.0/Android.bp b/gatekeeper/1.0/Android.bp
index 7dc2133..7eff2e8 100644
--- a/gatekeeper/1.0/Android.bp
+++ b/gatekeeper/1.0/Android.bp
@@ -13,10 +13,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "GatekeeperResponse",
-        "GatekeeperStatusCode",
-    ],
     gen_java: true,
 }
 
diff --git a/gnss/1.0/Android.bp b/gnss/1.0/Android.bp
index dc659a3..2e3e6fd 100644
--- a/gnss/1.0/Android.bp
+++ b/gnss/1.0/Android.bp
@@ -32,12 +32,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "GnssConstellationType",
-        "GnssLocation",
-        "GnssLocationFlags",
-        "GnssMax",
-    ],
     gen_java: true,
     gen_java_constants: true,
 }
diff --git a/graphics/common/1.0/Android.bp b/graphics/common/1.0/Android.bp
index f88cbdf..175166d 100644
--- a/graphics/common/1.0/Android.bp
+++ b/graphics/common/1.0/Android.bp
@@ -10,15 +10,6 @@
     srcs: [
         "types.hal",
     ],
-    types: [
-        "BufferUsage",
-        "ColorMode",
-        "ColorTransform",
-        "Dataspace",
-        "Hdr",
-        "PixelFormat",
-        "Transform",
-    ],
     gen_java: true,
     gen_java_constants: true,
 }
diff --git a/graphics/common/1.1/Android.bp b/graphics/common/1.1/Android.bp
index 8bc68f5..0647d12d 100644
--- a/graphics/common/1.1/Android.bp
+++ b/graphics/common/1.1/Android.bp
@@ -13,13 +13,6 @@
     interfaces: [
         "android.hardware.graphics.common@1.0",
     ],
-    types: [
-        "BufferUsage",
-        "ColorMode",
-        "Dataspace",
-        "PixelFormat",
-        "RenderIntent",
-    ],
     gen_java: true,
     gen_java_constants: true,
 }
diff --git a/graphics/composer/2.1/Android.bp b/graphics/composer/2.1/Android.bp
index 8fbc8c2..38786fd 100644
--- a/graphics/composer/2.1/Android.bp
+++ b/graphics/composer/2.1/Android.bp
@@ -16,9 +16,6 @@
         "android.hardware.graphics.common@1.0",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "Error",
-    ],
     gen_java: false,
 }
 
diff --git a/graphics/composer/2.1/IComposerClient.hal b/graphics/composer/2.1/IComposerClient.hal
index 5ad46f0..e036ce9 100644
--- a/graphics/composer/2.1/IComposerClient.hal
+++ b/graphics/composer/2.1/IComposerClient.hal
@@ -992,10 +992,10 @@
      *
      *   setLayerDataspace(Dataspace dataspace);
      *
-     * Sets the dataspace that the current buffer on this layer is in.
+     * Sets the dataspace of the layer.
      *
-     * The dataspace provides more information about how to interpret the
-     * buffer contents, such as the encoding standard and color transform.
+     * The dataspace provides more information about how to interpret the buffer
+     * or solid color, such as the encoding standard and color transform.
      *
      * See the values of Dataspace for more information.
      *
diff --git a/graphics/mapper/2.0/Android.bp b/graphics/mapper/2.0/Android.bp
index 2f9a344..96e812b 100644
--- a/graphics/mapper/2.0/Android.bp
+++ b/graphics/mapper/2.0/Android.bp
@@ -15,10 +15,6 @@
         "android.hardware.graphics.common@1.0",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "Error",
-        "YCbCrLayout",
-    ],
     gen_java: false,
 }
 
diff --git a/health/1.0/Android.bp b/health/1.0/Android.bp
index dcbaf58..e03b142 100644
--- a/health/1.0/Android.bp
+++ b/health/1.0/Android.bp
@@ -13,13 +13,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "BatteryHealth",
-        "BatteryStatus",
-        "HealthConfig",
-        "HealthInfo",
-        "Result",
-    ],
     gen_java: true,
     gen_java_constants: true,
 }
diff --git a/health/2.0/Android.bp b/health/2.0/Android.bp
index 0325467..f472b27 100644
--- a/health/2.0/Android.bp
+++ b/health/2.0/Android.bp
@@ -15,13 +15,6 @@
         "android.hardware.health@1.0",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "DiskStats",
-        "HealthInfo",
-        "Result",
-        "StorageAttribute",
-        "StorageInfo",
-    ],
     gen_java: true,
 }
 
diff --git a/health/storage/1.0/Android.bp b/health/storage/1.0/Android.bp
index 35ee34f..45fa01f 100644
--- a/health/storage/1.0/Android.bp
+++ b/health/storage/1.0/Android.bp
@@ -14,9 +14,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "Result",
-    ],
     gen_java: true,
 }
 
diff --git a/ir/1.0/Android.bp b/ir/1.0/Android.bp
index 272acb3..5f25172 100644
--- a/ir/1.0/Android.bp
+++ b/ir/1.0/Android.bp
@@ -13,9 +13,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "ConsumerIrFreqRange",
-    ],
     gen_java: true,
 }
 
diff --git a/keymaster/3.0/Android.bp b/keymaster/3.0/Android.bp
index e0f1b94..ca17a9b 100644
--- a/keymaster/3.0/Android.bp
+++ b/keymaster/3.0/Android.bp
@@ -13,26 +13,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "Algorithm",
-        "BlockMode",
-        "Digest",
-        "EcCurve",
-        "ErrorCode",
-        "HardwareAuthToken",
-        "HardwareAuthenticatorType",
-        "KeyBlobUsageRequirements",
-        "KeyCharacteristics",
-        "KeyDerivationFunction",
-        "KeyFormat",
-        "KeyOrigin",
-        "KeyParameter",
-        "KeyPurpose",
-        "PaddingMode",
-        "SecurityLevel",
-        "Tag",
-        "TagType",
-    ],
     gen_java: false,
 }
 
diff --git a/keymaster/4.0/Android.bp b/keymaster/4.0/Android.bp
index 2daad41..cd46fd9 100644
--- a/keymaster/4.0/Android.bp
+++ b/keymaster/4.0/Android.bp
@@ -14,29 +14,6 @@
         "android.hardware.keymaster@3.0",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "Algorithm",
-        "BlockMode",
-        "Constants",
-        "Digest",
-        "EcCurve",
-        "ErrorCode",
-        "HardwareAuthToken",
-        "HardwareAuthenticatorType",
-        "HmacSharingParameters",
-        "KeyBlobUsageRequirements",
-        "KeyCharacteristics",
-        "KeyDerivationFunction",
-        "KeyFormat",
-        "KeyOrigin",
-        "KeyParameter",
-        "KeyPurpose",
-        "PaddingMode",
-        "SecurityLevel",
-        "Tag",
-        "TagType",
-        "VerificationToken",
-    ],
     gen_java: false,
 }
 
diff --git a/light/2.0/Android.bp b/light/2.0/Android.bp
index ee58f93..6068752 100644
--- a/light/2.0/Android.bp
+++ b/light/2.0/Android.bp
@@ -13,13 +13,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "Brightness",
-        "Flash",
-        "LightState",
-        "Status",
-        "Type",
-    ],
     gen_java: true,
 }
 
diff --git a/media/1.0/Android.bp b/media/1.0/Android.bp
index 45fedb9..844cfa2 100644
--- a/media/1.0/Android.bp
+++ b/media/1.0/Android.bp
@@ -12,11 +12,6 @@
     interfaces: [
         "android.hardware.graphics.common@1.0",
     ],
-    types: [
-        "AnwBuffer",
-        "AnwBufferAttributes",
-        "Rect",
-    ],
     gen_java: true,
 }
 
diff --git a/media/bufferpool/1.0/Android.bp b/media/bufferpool/1.0/Android.bp
index 986da8a..86297d3 100644
--- a/media/bufferpool/1.0/Android.bp
+++ b/media/bufferpool/1.0/Android.bp
@@ -15,12 +15,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "Buffer",
-        "BufferStatus",
-        "BufferStatusMessage",
-        "ResultStatus",
-    ],
     gen_java: false,
 }
 
diff --git a/media/omx/1.0/Android.bp b/media/omx/1.0/Android.bp
index 89709bd..ee51d5d 100644
--- a/media/omx/1.0/Android.bp
+++ b/media/omx/1.0/Android.bp
@@ -21,13 +21,6 @@
         "android.hardware.media@1.0",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "CodecBuffer",
-        "ColorAspects",
-        "Message",
-        "PortMode",
-        "Status",
-    ],
     gen_java: false,
 }
 
diff --git a/memtrack/1.0/Android.bp b/memtrack/1.0/Android.bp
index d56aa64..0f24977 100644
--- a/memtrack/1.0/Android.bp
+++ b/memtrack/1.0/Android.bp
@@ -13,12 +13,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "MemtrackFlag",
-        "MemtrackRecord",
-        "MemtrackStatus",
-        "MemtrackType",
-    ],
     gen_java: true,
 }
 
diff --git a/neuralnetworks/1.0/Android.bp b/neuralnetworks/1.0/Android.bp
index e8600d3..63b5b98 100644
--- a/neuralnetworks/1.0/Android.bp
+++ b/neuralnetworks/1.0/Android.bp
@@ -16,22 +16,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "Capabilities",
-        "DataLocation",
-        "DeviceStatus",
-        "ErrorStatus",
-        "FusedActivationFunc",
-        "Model",
-        "Operand",
-        "OperandLifeTime",
-        "OperandType",
-        "Operation",
-        "OperationType",
-        "PerformanceInfo",
-        "Request",
-        "RequestArgument",
-    ],
     gen_java: false,
 }
 
diff --git a/neuralnetworks/1.0/vts/functional/Android.bp b/neuralnetworks/1.0/vts/functional/Android.bp
index 52d6328..9057695 100644
--- a/neuralnetworks/1.0/vts/functional/Android.bp
+++ b/neuralnetworks/1.0/vts/functional/Android.bp
@@ -80,6 +80,7 @@
             },
         },
     },
+    test_suites: ["general-tests"],
 }
 
 cc_test {
@@ -89,5 +90,16 @@
         "BasicTests.cpp",
         "GeneratedTests.cpp",
     ],
-    test_suites: ["general-tests"],
+}
+
+cc_test {
+    name: "PresubmitHalNeuralnetworksV1_0TargetTest",
+    defaults: ["VtsHalNeuralNetworksTargetTestDefaults"],
+    srcs: [
+        "BasicTests.cpp",
+        "GeneratedTests.cpp",
+    ],
+    cflags: [
+        "-DPRESUBMIT_NOT_VTS",
+    ],
 }
diff --git a/neuralnetworks/1.0/vts/functional/GeneratedTestHarness.cpp b/neuralnetworks/1.0/vts/functional/GeneratedTestHarness.cpp
index 0724c09..7eea7fc 100644
--- a/neuralnetworks/1.0/vts/functional/GeneratedTestHarness.cpp
+++ b/neuralnetworks/1.0/vts/functional/GeneratedTestHarness.cpp
@@ -72,7 +72,8 @@
     copy_back_(&dst->bool8Operands, ra, src);
     copy_back_(&dst->quant8ChannelOperands, ra, src);
     copy_back_(&dst->quant16AsymmOperands, ra, src);
-    static_assert(8 == MixedTyped::kNumTypes,
+    copy_back_(&dst->quant8SymmOperands, ra, src);
+    static_assert(9 == MixedTyped::kNumTypes,
                   "Number of types in MixedTyped changed, but copy_back function wasn't updated");
 }
 
diff --git a/neuralnetworks/1.0/vts/functional/VtsHalNeuralnetworks.cpp b/neuralnetworks/1.0/vts/functional/VtsHalNeuralnetworks.cpp
index 1ff3b66..8883057 100644
--- a/neuralnetworks/1.0/vts/functional/VtsHalNeuralnetworks.cpp
+++ b/neuralnetworks/1.0/vts/functional/VtsHalNeuralnetworks.cpp
@@ -49,7 +49,17 @@
 void NeuralnetworksHidlTest::SetUp() {
     ::testing::VtsHalHidlTargetTestBase::SetUp();
     device = ::testing::VtsHalHidlTargetTestBase::getService<IDevice>(
-        NeuralnetworksHidlEnvironment::getInstance());
+            NeuralnetworksHidlEnvironment::getInstance());
+
+#ifdef PRESUBMIT_NOT_VTS
+    const std::string name =
+            NeuralnetworksHidlEnvironment::getInstance()->getServiceName<IDevice>();
+    const std::string sampleDriver = "sample-";
+    if (device == nullptr && name.substr(0, sampleDriver.size()) == sampleDriver) {
+        GTEST_SKIP();
+    }
+#endif  // PRESUBMIT_NOT_VTS
+
     ASSERT_NE(nullptr, device.get());
 }
 
@@ -60,6 +70,12 @@
 
 }  // namespace functional
 }  // namespace vts
+}  // namespace V1_0
+}  // namespace neuralnetworks
+}  // namespace hardware
+}  // namespace android
+
+namespace android::hardware::neuralnetworks::V1_0 {
 
 ::std::ostream& operator<<(::std::ostream& os, ErrorStatus errorStatus) {
     return os << toString(errorStatus);
@@ -69,10 +85,7 @@
     return os << toString(deviceStatus);
 }
 
-}  // namespace V1_0
-}  // namespace neuralnetworks
-}  // namespace hardware
-}  // namespace android
+}  // namespace android::hardware::neuralnetworks::V1_0
 
 using android::hardware::neuralnetworks::V1_0::vts::functional::NeuralnetworksHidlEnvironment;
 
diff --git a/neuralnetworks/1.0/vts/functional/VtsHalNeuralnetworks.h b/neuralnetworks/1.0/vts/functional/VtsHalNeuralnetworks.h
index e79129b..d4c114d 100644
--- a/neuralnetworks/1.0/vts/functional/VtsHalNeuralnetworks.h
+++ b/neuralnetworks/1.0/vts/functional/VtsHalNeuralnetworks.h
@@ -72,14 +72,17 @@
 
 }  // namespace functional
 }  // namespace vts
+}  // namespace V1_0
+}  // namespace neuralnetworks
+}  // namespace hardware
+}  // namespace android
+
+namespace android::hardware::neuralnetworks::V1_0 {
 
 // pretty-print values for error messages
 ::std::ostream& operator<<(::std::ostream& os, ErrorStatus errorStatus);
 ::std::ostream& operator<<(::std::ostream& os, DeviceStatus deviceStatus);
 
-}  // namespace V1_0
-}  // namespace neuralnetworks
-}  // namespace hardware
-}  // namespace android
+}  // namespace android::hardware::neuralnetworks::V1_0
 
 #endif  // VTS_HAL_NEURALNETWORKS_V1_0_TARGET_TESTS_H
diff --git a/neuralnetworks/1.1/Android.bp b/neuralnetworks/1.1/Android.bp
index 24d8396..1158a90 100644
--- a/neuralnetworks/1.1/Android.bp
+++ b/neuralnetworks/1.1/Android.bp
@@ -14,13 +14,6 @@
         "android.hardware.neuralnetworks@1.0",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "Capabilities",
-        "ExecutionPreference",
-        "Model",
-        "Operation",
-        "OperationType",
-    ],
     gen_java: false,
 }
 
diff --git a/neuralnetworks/1.1/vts/functional/Android.bp b/neuralnetworks/1.1/vts/functional/Android.bp
index 697252f..4fbeac9 100644
--- a/neuralnetworks/1.1/vts/functional/Android.bp
+++ b/neuralnetworks/1.1/vts/functional/Android.bp
@@ -31,5 +31,16 @@
         "BasicTests.cpp",
         "GeneratedTests.cpp",
     ],
-    test_suites: ["general-tests"],
+}
+
+cc_test {
+    name: "PresubmitHalNeuralnetworksV1_1TargetTest",
+    defaults: ["VtsHalNeuralNetworksTargetTestDefaults"],
+    srcs: [
+        "BasicTests.cpp",
+        "GeneratedTests.cpp",
+    ],
+    cflags: [
+        "-DPRESUBMIT_NOT_VTS",
+    ],
 }
diff --git a/neuralnetworks/1.1/vts/functional/VtsHalNeuralnetworks.cpp b/neuralnetworks/1.1/vts/functional/VtsHalNeuralnetworks.cpp
index 62381e6..224a51d 100644
--- a/neuralnetworks/1.1/vts/functional/VtsHalNeuralnetworks.cpp
+++ b/neuralnetworks/1.1/vts/functional/VtsHalNeuralnetworks.cpp
@@ -49,7 +49,17 @@
 void NeuralnetworksHidlTest::SetUp() {
     ::testing::VtsHalHidlTargetTestBase::SetUp();
     device = ::testing::VtsHalHidlTargetTestBase::getService<IDevice>(
-        NeuralnetworksHidlEnvironment::getInstance());
+            NeuralnetworksHidlEnvironment::getInstance());
+
+#ifdef PRESUBMIT_NOT_VTS
+    const std::string name =
+            NeuralnetworksHidlEnvironment::getInstance()->getServiceName<IDevice>();
+    const std::string sampleDriver = "sample-";
+    if (device == nullptr && name.substr(0, sampleDriver.size()) == sampleDriver) {
+        GTEST_SKIP();
+    }
+#endif  // PRESUBMIT_NOT_VTS
+
     ASSERT_NE(nullptr, device.get());
 }
 
@@ -60,6 +70,12 @@
 
 }  // namespace functional
 }  // namespace vts
+}  // namespace V1_1
+}  // namespace neuralnetworks
+}  // namespace hardware
+}  // namespace android
+
+namespace android::hardware::neuralnetworks::V1_0 {
 
 ::std::ostream& operator<<(::std::ostream& os, ErrorStatus errorStatus) {
     return os << toString(errorStatus);
@@ -69,10 +85,7 @@
     return os << toString(deviceStatus);
 }
 
-}  // namespace V1_1
-}  // namespace neuralnetworks
-}  // namespace hardware
-}  // namespace android
+}  // namespace android::hardware::neuralnetworks::V1_0
 
 using android::hardware::neuralnetworks::V1_1::vts::functional::NeuralnetworksHidlEnvironment;
 
diff --git a/neuralnetworks/1.1/vts/functional/VtsHalNeuralnetworks.h b/neuralnetworks/1.1/vts/functional/VtsHalNeuralnetworks.h
index 970e8b5..1c8c0e1 100644
--- a/neuralnetworks/1.1/vts/functional/VtsHalNeuralnetworks.h
+++ b/neuralnetworks/1.1/vts/functional/VtsHalNeuralnetworks.h
@@ -81,14 +81,17 @@
 
 }  // namespace functional
 }  // namespace vts
+}  // namespace V1_1
+}  // namespace neuralnetworks
+}  // namespace hardware
+}  // namespace android
+
+namespace android::hardware::neuralnetworks::V1_0 {
 
 // pretty-print values for error messages
 ::std::ostream& operator<<(::std::ostream& os, ErrorStatus errorStatus);
 ::std::ostream& operator<<(::std::ostream& os, DeviceStatus deviceStatus);
 
-}  // namespace V1_1
-}  // namespace neuralnetworks
-}  // namespace hardware
-}  // namespace android
+}  // namespace android::hardware::neuralnetworks::V1_0
 
 #endif  // VTS_HAL_NEURALNETWORKS_V1_1_H
diff --git a/neuralnetworks/1.2/Android.bp b/neuralnetworks/1.2/Android.bp
index daf0c18..085bda1 100644
--- a/neuralnetworks/1.2/Android.bp
+++ b/neuralnetworks/1.2/Android.bp
@@ -21,24 +21,6 @@
         "android.hidl.base@1.0",
         "android.hidl.safe_union@1.0",
     ],
-    types: [
-        "Constant",
-        "DeviceType",
-        "Extension",
-        "FmqRequestDatum",
-        "FmqResultDatum",
-        "MeasureTiming",
-        "Model",
-        "Operand",
-        "OperandType",
-        "OperandTypeRange",
-        "Operation",
-        "OperationType",
-        "OperationTypeRange",
-        "OutputShape",
-        "SymmPerChannelQuantParams",
-        "Timing",
-    ],
     gen_java: false,
 }
 
diff --git a/neuralnetworks/1.2/types.hal b/neuralnetworks/1.2/types.hal
index 06bdc6a..4a8664f 100644
--- a/neuralnetworks/1.2/types.hal
+++ b/neuralnetworks/1.2/types.hal
@@ -218,6 +218,7 @@
      *         ) / sum(1)
      *
      * Supported tensor {@link OperandType}:
+     * * {@link OperandType::TENSOR_FLOAT16} (since API level 29)
      * * {@link OperandType::TENSOR_FLOAT32}
      * * {@link OperandType::TENSOR_QUANT8_ASYMM}
      *
@@ -333,7 +334,7 @@
      *         ) + bias[channel]
      *
      * Supported tensor {@link OperandType} configurations:
-     * * 32 bit Floating point :
+     * * 32 bit floating point:
      * * * {@link OperandType::TENSOR_FLOAT32} for input, filter, output, and bias.
      *
      * * Quantized:
@@ -342,15 +343,15 @@
      * * * input.scale * filter.scale).
      *
      * Available since API level 29:
-     * * Quantized with symetric per channel quantization for the filter:
+     * * 16 bit floating point:
+     * * * {@link OperandType::TENSOR_FLOAT16} for input, filter, output, and bias.
+     *
+     * * Quantized with symmetric per channel quantization for the filter:
      * * * {@link OperandType::TENSOR_QUANT8_ASYMM} for input, and output.
      * * * {@link OperandType::TENSOR_QUANT8_SYMM_PER_CHANNEL} for filter.
      * * * {@link OperandType::TENSOR_INT32} for bias (scale set to 0.0,
      * * * each value scaling is separate and equal to input.scale * filter.scales[channel]).
      *
-     * * 16 bit Floating point:
-     * * {@link OperandType::TENSOR_FLOAT16} for input, filter, output, and bias.
-     *
      * Supported tensor rank: 4, with "NHWC" or "NCHW" data layout.
      * With the default data layout NHWC, the data is stored in the order of:
      * [batch, height, width, channels]. Alternatively, the data layout could
@@ -482,7 +483,7 @@
      *         ) + bias[k * channel_multiplier + q]
      *
      * Supported tensor {@link OperandType} configurations:
-     * * 32 bit Floating point :
+     * * 32 bit floating point:
      * * * {@link OperandType::TENSOR_FLOAT32} for input, filter, output, and bias.
      *
      * * Quantized:
@@ -491,7 +492,10 @@
      * * * input.scale * filter.scale).
      *
      * Available since API level 29:
-     * * Quantized with symetric per channel quantization for the filter:
+     * * 16 bit floating point:
+     * * * {@link OperandType::TENSOR_FLOAT16} for input, filter, output, and bias.
+     *
+     * * Quantized with symmetric per channel quantization for the filter:
      * * * {@link OperandType::TENSOR_QUANT8_ASYMM} for input, and output.
      * * * {@link OperandType::TENSOR_QUANT8_SYMM_PER_CHANNEL} for filter.
      * * * {@link OperandType::TENSOR_INT32} for bias (scale set to 0.0,
@@ -1010,6 +1014,7 @@
      *     output = 1 / (1 + exp(-input))
      *
      * Supported tensor {@link OperandType}:
+     * * {@link OperandType::TENSOR_FLOAT16} (since API level 29)
      * * {@link OperandType::TENSOR_FLOAT32}
      * * {@link OperandType::TENSOR_QUANT8_ASYMM}
      *
@@ -1315,6 +1320,7 @@
      *         )
      *
      * Supported tensor {@link OperandType}:
+     * * {@link OperandType::TENSOR_FLOAT16} (since API level 29)
      * * {@link OperandType::TENSOR_FLOAT32}
      * * {@link OperandType::TENSOR_QUANT8_ASYMM}
      *
@@ -1623,6 +1629,7 @@
      * independently on each 1-D slice along specified dimension.
      *
      * Supported tensor {@link OperandType}:
+     * * {@link OperandType::TENSOR_FLOAT16} (since API level 29)
      * * {@link OperandType::TENSOR_FLOAT32}
      * * {@link OperandType::TENSOR_QUANT8_ASYMM}
      *
@@ -1631,8 +1638,12 @@
      *
      * Inputs:
      * * 0: A 2-D or 4-D tensor, specifying the tensor to be reshaped.
-     * * 1: An {@link OperandType::FLOAT32} scalar, specifying the positive
-     *      scaling factor for the exponent, beta.
+     * * 1: A scalar, specifying the positive scaling factor for the exponent,
+     *      beta. If input0 is of {@link OperandType::TENSOR_FLOAT32} or
+     *      {@link OperandType::TENSOR_QUANT8_ASYMM}, the scalar must be of
+     *      {@link OperandType::FLOAT32}. If input0 is of {@link
+     *      OperandType::TENSOR_FLOAT16}, then the scalar must be of {@link
+     *      OperandType::FLOAT16}.
      * * 2: An optional {@link OperandType::INT32} scalar, default to -1,
      *      specifying the dimension the activation would be performed on.
      *      Negative index is used to specify axis from the end (e.g. -1 for
@@ -2706,11 +2717,17 @@
      * * 10: An {@link OperandType::INT32} scalar, only used when input7 is
      *       set to true, specifying the maximum number of detections when
      *       applying NMS algorithm for each single class.
-     * * 11: An {@link OperandType::FLOAT32} scalar, score_threshold. Boxes
-     *       with scores lower than the threshold are filtered before sending
-     *       to the NMS algorithm.
-     * * 12: An {@link OperandType::FLOAT32} scalar, specifying the IoU
-     *       threshold for hard NMS.
+     * * 11: A scalar, score_threshold. Boxes with scores lower than the
+     *       threshold are filtered before sending to the NMS algorithm. The
+     *       scalar must be of {@link OperandType::FLOAT16} if input0 is of
+     *       {@link OperandType::TENSOR_FLOAT16} and of {@link
+     *       OperandType::FLOAT32} if input0 is of {@link
+     *       OperandType::TENSOR_FLOAT32}.
+     * * 12: A scalar, specifying the IoU threshold for hard NMS. The scalar
+     *       must be of {@link OperandType::FLOAT16} if input0 is of {@link
+     *       OperandType::TENSOR_FLOAT16} and of {@link
+     *       OperandType::FLOAT32} if input0 is of {@link
+     *       OperandType::TENSOR_FLOAT32}.
      * * 13: An {@link OperandType::BOOL} scalar, set to true to include
      *       background class in the list of label map for the output, set
      *       to false to not include the background. When the background
@@ -3007,18 +3024,18 @@
      * where channel_multiplier = depth_out / num_groups
      *
      * Supported tensor {@link OperandType} configurations:
-     * * 32 bit Floating point :
-     * * * {@link OperandType::TENSOR_FLOAT32} for input, filter, output, and bias.
+     * * 16 bit floating point:
+     * * * {@link OperandType::TENSOR_FLOAT16} for input, filter, output, and bias.
      *
-     * * 16 bit Floating point:
-     * * {@link OperandType::TENSOR_FLOAT16} for input, filter, output, and bias.
+     * * 32 bit floating point:
+     * * * {@link OperandType::TENSOR_FLOAT32} for input, filter, output, and bias.
      *
      * * Quantized:
      * * * {@link OperandType::TENSOR_QUANT8_ASYMM} for input, filter, and output.
      * * * {@link OperandType::TENSOR_INT32} for bias (with scale set to
      * * * input.scale * filter.scale).
      *
-     * * Quantized with symetric per channel quantization for the filter:
+     * * Quantized with symmetric per channel quantization for the filter:
      * * * {@link OperandType::TENSOR_QUANT8_ASYMM} for input, and output.
      * * * {@link OperandType::TENSOR_QUANT8_SYMM_PER_CHANNEL} for filter.
      * * * {@link OperandType::TENSOR_INT32} for bias (scale set to 0.0,
@@ -3188,12 +3205,21 @@
      *
      * Inputs:
      * * 0: An n-D tensor, specifying the tensor to be normalized.
-     * * 1: An {@link OperandType::FLOAT32} scalar, specifying gamma, the
-     *      scale applied to the normalized tensor.
-     * * 2: An {@link OperandType::FLOAT32} scalar, specifying beta, the
-     *      offset applied to the normalized tensor.
-     * * 3: An {@link OperandType::FLOAT32} scalar, specifying epsilon, the
-     *      small value added to variance to avoid dividing by zero.
+     * * 1: A scalar, specifying gamma, the scale applied to the normalized
+     *      tensor. The scalar must be of {@link OperandType::FLOAT16} if
+     *      input0 is of {@link OperandType::TENSOR_FLOAT16} and of {@link
+     *      OperandType::FLOAT32} if input0 is of {@link
+     *      OperandType::TENSOR_FLOAT32}.
+     * * 2: A scalar, specifying beta, the offset applied to the normalized
+     *      tensor. The scalar must be of {@link OperandType::FLOAT16} if
+     *      input0 is of {@link OperandType::TENSOR_FLOAT16} and of {@link
+     *      OperandType::FLOAT32} if input0 is of {@link
+     *      OperandType::TENSOR_FLOAT32}.
+     * * 3: A scalar, specifying epsilon, the small value added to variance to
+     *      avoid dividing by zero. The scalar must be of {@link OperandType::FLOAT16} if
+     *      input0 is of {@link OperandType::TENSOR_FLOAT16} and of {@link
+     *      OperandType::FLOAT32} if input0 is of {@link
+     *      OperandType::TENSOR_FLOAT32}.
      * * 4: An {@link OperandType::BOOL} scalar, set to true to specify
      *      NCHW data layout for input0 and output0. Set to false for NHWC.
      *
@@ -3475,10 +3501,12 @@
      *      padding[i, 1] specifies the number of elements to be padded after
      *      the end of dimension i.
      * * 2: An scalar specifying the value to use for padding input0.
+     *      For input tensor of {@link OperandType::TENSOR_FLOAT16}, the
+     *      pad value must be of {@link OperandType::FLOAT16}.
      *      For input tensor of {@link OperandType::TENSOR_FLOAT32}, the
-     *      pad value should be of {@link OperandType::FLOAT32}.
+     *      pad value must be of {@link OperandType::FLOAT32}.
      *      For input tensor of {@link OperandType::TENSOR_QUANT8_ASYMM},
-     *      the pad value should be of {@link OperandType::INT32}. The
+     *      the pad value must be of {@link OperandType::INT32}. The
      *      scale and zeroPoint are assumed to be the same as in input0.
      *
      * Outputs:
@@ -3627,25 +3655,25 @@
      *      weights.
      * * 5: The recurrent-to-input weights.
      *      A 2-D tensor of type {@link OperandType::TENSOR_QUANT8_ASYMM}
-     *      and shape [outputSize, inputSize] specifying recurrent-to-input part
+     *      and shape [outputSize, outputSize] specifying recurrent-to-input part
      *      of weights for fully-connected layer inside the LSTM cell.
      *      Quantization zero point and scale must be the same across all the
      *      weights.
      * * 6: The recurrent-to-forget weights.
      *      A 2-D tensor of type {@link OperandType::TENSOR_QUANT8_ASYMM}
-     *      and shape [outputSize, inputSize] specifying recurrent-to-forget
+     *      and shape [outputSize, outputSize] specifying recurrent-to-forget
      *      part of weights for fully-connected layer inside the LSTM cell.
      *      Quantization zero point and scale must be the same across all the
      *      weights.
      * * 7: The recurrent-to-cell weights.
      *      A 2-D tensor of type {@link OperandType::TENSOR_QUANT8_ASYMM}
-     *      and shape [outputSize, inputSize] specifying recurrent-to-cell part
+     *      and shape [outputSize, outputSize] specifying recurrent-to-cell part
      *      of weights for fully-connected layer inside the LSTM cell.
      *      Quantization zero point and scale must be the same across all the
      *      weights.
      * * 8: The recurrent-to-output weights.
      *      A 2-D tensor of type {@link OperandType::TENSOR_QUANT8_ASYMM}
-     *      and shape [outputSize, inputSize] specifying recurrent-to-output
+     *      and shape [outputSize, outputSize] specifying recurrent-to-output
      *      part of weights for fully-connected layer inside the LSTM cell.
      *      Quantization zero point and scale must be the same across all the
      *      weights.
@@ -4204,10 +4232,23 @@
      * The output dimensions are functions of the filter dimensions, stride, and
      * padding.
      *
-     * Supported tensor {@link OperandType}:
-     * * {@link OperandType::TENSOR_FLOAT16}
-     * * {@link OperandType::TENSOR_FLOAT32}
-     * * {@link OperandType::TENSOR_QUANT8_ASYMM}
+     * Supported tensor {@link OperandCode} configurations:
+     * * 16 bit floating point:
+     * * * {@link OperandType::TENSOR_FLOAT16} for input, filter, output, and bias.
+     *
+     * * 32 bit floating point:
+     * * * {@link OperandType::TENSOR_FLOAT32} for input, filter, output, and bias.
+     *
+     * * Quantized:
+     * * * {@link OperandType::TENSOR_QUANT8_ASYMM} for input, filter, and output.
+     * * * {@link OperandType::TENSOR_INT32} for bias (with scale set to
+     * * * input.scale * filter.scale).
+     *
+     * * Quantized with symmetric per channel quantization for the filter:
+     * * * {@link OperandType::TENSOR_QUANT8_ASYMM} for input, and output.
+     * * * {@link OperandType::TENSOR_QUANT8_SYMM_PER_CHANNEL} for filter.
+     * * * {@link OperandType::TENSOR_INT32} for bias (scale set to 0.0,
+     * * * each value scaling is separate and equal to input.scale * filter.scales[channel]).
      *
      * Supported tensor rank: 4, with "NHWC" or "NCHW" data layout.
      * With the default data layout NHWC, the data is stored in the order of:
@@ -4221,14 +4262,20 @@
      *      specifying the input.
      * * 1: A 4-D tensor, of shape
      *      [depth_out, filter_height, filter_width, depth_in], specifying the
-     *      filter.
+     *      filter. For tensor of type
+     *      {@link OperandType::TENSOR_QUANT8_SYMM_PER_CHANNEL} the channel
+     *      dimension (extraParams.channelQuant.channelDim) must be set to 0.
      * * 2: A 1-D tensor, of shape [depth_out], specifying the bias. For input
      *      tensor of type {@link OperandType::TENSOR_FLOAT32} or
      *      {@link OperandType::TENSOR_FLOAT16}, the bias should be of the
      *      same type. For input tensor of type
      *      {@link OperandType::TENSOR_QUANT8_ASYMM}, the bias should be
      *      of {@link OperandType::TENSOR_INT32}, with zeroPoint of 0 and
-     *      bias_scale == input_scale * filter_scale.
+     *      bias_scale == input_scale * filter_scale. For filter tensor of
+     *      {@link OperandType::TENSOR_QUANT8_SYMM_PER_CHANNEL}, the bias
+     *      must be of {@link OperandType::TENSOR_INT32}, with zeroPoint of
+     *      0 and bias_scale of 0. The actual scale of each value 'i' is equal
+     *      to bias_scale[i] = input_scale * filter_scale[i].
      * * 3: An {@link OperandType::INT32} scalar, specifying the padding on
      *      the left, in the ‘width’ dimension.
      * * 4: An {@link OperandType::INT32} scalar, specifying the padding on
@@ -4252,14 +4299,20 @@
      *      specifying the input.
      * * 1: A 4-D tensor, of shape
      *      [depth_out, filter_height, filter_width, depth_in], specifying the
-     *      filter.
+     *      filter. For tensor of type
+     *      {@link OperandType::TENSOR_QUANT8_SYMM_PER_CHANNEL} the channel
+     *      dimension (extraParams.channelQuant.channelDim) must be set to 0.
      * * 2: A 1-D tensor, of shape [depth_out], specifying the bias. For input
      *      tensor of type {@link OperandType::TENSOR_FLOAT32} or
      *      {@link OperandType::TENSOR_FLOAT16}, the bias should be of the
      *      same type. For input tensor of type
      *      {@link OperandType::TENSOR_QUANT8_ASYMM}, the bias should be
      *      of {@link OperandType::TENSOR_INT32}, with zeroPoint of 0 and
-     *      bias_scale == input_scale * filter_scale.
+     *      bias_scale == input_scale * filter_scale. For filter tensor of
+     *      {@link OperandType::TENSOR_QUANT8_SYMM_PER_CHANNEL}, the bias
+     *      must be of {@link OperandType::TENSOR_INT32}, with zeroPoint of
+     *      0 and bias_scale of 0. The actual scale of each value 'i' is equal
+     *      to bias_scale[i] = input_scale * filter_scale[i].
      * * 3: An {@link OperandType::TENSOR_INT32} tensor, specifying the output
      *      tensor shape.
      * * 4: An {@link OperandType::INT32} scalar, specifying the implicit
@@ -4279,7 +4332,9 @@
      * * 0: The output 4-D tensor, of shape
      *      [batches, out_height, out_width, depth_out]. For output tensor of
      *      {@link OperandType::TENSOR_QUANT8_ASYMM}, the following condition
-     *      must be satisfied: output_scale > input_scale * filter_scale.
+     *      must be satisfied: output_scale > input_scale * filter_scale (for
+     *      filter tensor of {@link OperandType::TENSOR_QUANT8_SYMM_PER_CHANNEL}
+     *      this condition must be true for all filter scales).
      *
      * Available since API level 29.
      */
diff --git a/neuralnetworks/1.2/vts/functional/Android.bp b/neuralnetworks/1.2/vts/functional/Android.bp
index 510a0d5..891b414 100644
--- a/neuralnetworks/1.2/vts/functional/Android.bp
+++ b/neuralnetworks/1.2/vts/functional/Android.bp
@@ -24,7 +24,6 @@
     cflags: [
         "-DNN_TEST_DYNAMIC_OUTPUT_SHAPE"
     ],
-    test_suites: ["general-tests"],
 }
 
 // Tests for V1_1 models using the V1_2 HAL.
@@ -37,7 +36,6 @@
     cflags: [
         "-DNN_TEST_DYNAMIC_OUTPUT_SHAPE"
     ],
-    test_suites: ["general-tests"],
 }
 
 // Tests for V1_2 models.
@@ -52,5 +50,17 @@
     cflags: [
         "-DNN_TEST_DYNAMIC_OUTPUT_SHAPE"
     ],
-    test_suites: ["general-tests"],
+}
+
+cc_test {
+    name: "PresubmitHalNeuralnetworksV1_2TargetTest",
+    defaults: ["VtsHalNeuralNetworksTargetTestDefaults"],
+    srcs: [
+        "BasicTests.cpp",
+        "GeneratedTests.cpp",
+    ],
+    cflags: [
+        "-DNN_TEST_DYNAMIC_OUTPUT_SHAPE",
+        "-DPRESUBMIT_NOT_VTS",
+    ],
 }
diff --git a/neuralnetworks/1.2/vts/functional/VtsHalNeuralnetworks.cpp b/neuralnetworks/1.2/vts/functional/VtsHalNeuralnetworks.cpp
index 4eced82..4728c28 100644
--- a/neuralnetworks/1.2/vts/functional/VtsHalNeuralnetworks.cpp
+++ b/neuralnetworks/1.2/vts/functional/VtsHalNeuralnetworks.cpp
@@ -49,7 +49,17 @@
 void NeuralnetworksHidlTest::SetUp() {
     ::testing::VtsHalHidlTargetTestBase::SetUp();
     device = ::testing::VtsHalHidlTargetTestBase::getService<IDevice>(
-        NeuralnetworksHidlEnvironment::getInstance());
+            NeuralnetworksHidlEnvironment::getInstance());
+
+#ifdef PRESUBMIT_NOT_VTS
+    const std::string name =
+            NeuralnetworksHidlEnvironment::getInstance()->getServiceName<IDevice>();
+    const std::string sampleDriver = "sample-";
+    if (device == nullptr && name.substr(0, sampleDriver.size()) == sampleDriver) {
+        GTEST_SKIP();
+    }
+#endif  // PRESUBMIT_NOT_VTS
+
     ASSERT_NE(nullptr, device.get());
 }
 
@@ -66,6 +76,12 @@
 
 }  // namespace functional
 }  // namespace vts
+}  // namespace V1_2
+}  // namespace neuralnetworks
+}  // namespace hardware
+}  // namespace android
+
+namespace android::hardware::neuralnetworks::V1_0 {
 
 ::std::ostream& operator<<(::std::ostream& os, ErrorStatus errorStatus) {
     return os << toString(errorStatus);
@@ -75,10 +91,7 @@
     return os << toString(deviceStatus);
 }
 
-}  // namespace V1_2
-}  // namespace neuralnetworks
-}  // namespace hardware
-}  // namespace android
+}  // namespace android::hardware::neuralnetworks::V1_0
 
 using android::hardware::neuralnetworks::V1_2::vts::functional::NeuralnetworksHidlEnvironment;
 
diff --git a/neuralnetworks/1.2/vts/functional/VtsHalNeuralnetworks.h b/neuralnetworks/1.2/vts/functional/VtsHalNeuralnetworks.h
index c0c21bd..404eec0 100644
--- a/neuralnetworks/1.2/vts/functional/VtsHalNeuralnetworks.h
+++ b/neuralnetworks/1.2/vts/functional/VtsHalNeuralnetworks.h
@@ -88,14 +88,17 @@
 
 }  // namespace functional
 }  // namespace vts
+}  // namespace V1_2
+}  // namespace neuralnetworks
+}  // namespace hardware
+}  // namespace android
+
+namespace android::hardware::neuralnetworks::V1_0 {
 
 // pretty-print values for error messages
 ::std::ostream& operator<<(::std::ostream& os, ErrorStatus errorStatus);
 ::std::ostream& operator<<(::std::ostream& os, DeviceStatus deviceStatus);
 
-}  // namespace V1_2
-}  // namespace neuralnetworks
-}  // namespace hardware
-}  // namespace android
+}  // namespace android::hardware::neuralnetworks::V1_0
 
 #endif  // VTS_HAL_NEURALNETWORKS_V1_2_H
diff --git a/neuralnetworks/TEST_MAPPING b/neuralnetworks/TEST_MAPPING
new file mode 100644
index 0000000..50b6c19
--- /dev/null
+++ b/neuralnetworks/TEST_MAPPING
@@ -0,0 +1,28 @@
+{
+  "presubmit": [
+    {
+      "name": "PresubmitHalNeuralnetworksV1_0TargetTest",
+      "options": [
+        {
+          "native-test-flag": "--hal_service_instance=android.hardware.neuralnetworks@1.0::IDevice/sample-all"
+        }
+      ]
+    },
+    {
+      "name": "PresubmitHalNeuralnetworksV1_1TargetTest",
+      "options": [
+        {
+          "native-test-flag": "--hal_service_instance=android.hardware.neuralnetworks@1.1::IDevice/sample-all"
+        }
+      ]
+    },
+    {
+      "name": "PresubmitHalNeuralnetworksV1_2TargetTest",
+      "options": [
+        {
+          "native-test-flag": "--hal_service_instance=android.hardware.neuralnetworks@1.2::IDevice/sample-all"
+        }
+      ]
+    }
+  ]
+}
diff --git a/nfc/1.0/Android.bp b/nfc/1.0/Android.bp
index f821355..e0625d0 100644
--- a/nfc/1.0/Android.bp
+++ b/nfc/1.0/Android.bp
@@ -14,10 +14,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "NfcEvent",
-        "NfcStatus",
-    ],
     gen_java: true,
     gen_java_constants: true,
 }
diff --git a/nfc/1.1/Android.bp b/nfc/1.1/Android.bp
index 9a1392e..bbf49b2 100644
--- a/nfc/1.1/Android.bp
+++ b/nfc/1.1/Android.bp
@@ -15,13 +15,6 @@
         "android.hardware.nfc@1.0",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "Constant",
-        "NfcConfig",
-        "NfcEvent",
-        "PresenceCheckAlgorithm",
-        "ProtocolDiscoveryConfig",
-    ],
     gen_java: true,
 }
 
diff --git a/nfc/1.2/Android.bp b/nfc/1.2/Android.bp
index c338e02..cfb8b85 100644
--- a/nfc/1.2/Android.bp
+++ b/nfc/1.2/Android.bp
@@ -15,9 +15,6 @@
         "android.hardware.nfc@1.1",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "NfcConfig",
-    ],
     gen_java: true,
 }
 
diff --git a/oemlock/1.0/Android.bp b/oemlock/1.0/Android.bp
index c4ad989..894188b 100644
--- a/oemlock/1.0/Android.bp
+++ b/oemlock/1.0/Android.bp
@@ -13,10 +13,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "OemLockSecureStatus",
-        "OemLockStatus",
-    ],
     gen_java: true,
 }
 
diff --git a/power/1.0/Android.bp b/power/1.0/Android.bp
index 92c9483..dbc0a36 100644
--- a/power/1.0/Android.bp
+++ b/power/1.0/Android.bp
@@ -13,13 +13,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "Feature",
-        "PowerHint",
-        "PowerStatePlatformSleepState",
-        "PowerStateVoter",
-        "Status",
-    ],
     gen_java: true,
 }
 
diff --git a/power/1.1/Android.bp b/power/1.1/Android.bp
index d1d8021..de55396 100644
--- a/power/1.1/Android.bp
+++ b/power/1.1/Android.bp
@@ -14,10 +14,6 @@
         "android.hardware.power@1.0",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "PowerStateSubsystem",
-        "PowerStateSubsystemSleepState",
-    ],
     gen_java: true,
 }
 
diff --git a/power/1.2/Android.bp b/power/1.2/Android.bp
index 0eb73e7..284e736 100644
--- a/power/1.2/Android.bp
+++ b/power/1.2/Android.bp
@@ -15,9 +15,6 @@
         "android.hardware.power@1.1",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "PowerHint",
-    ],
     gen_java: true,
 }
 
diff --git a/power/1.3/Android.bp b/power/1.3/Android.bp
index 1869b56..320f1e6 100644
--- a/power/1.3/Android.bp
+++ b/power/1.3/Android.bp
@@ -16,9 +16,6 @@
         "android.hardware.power@1.2",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "PowerHint",
-    ],
     gen_java: true,
 }
 
diff --git a/power/stats/1.0/Android.bp b/power/stats/1.0/Android.bp
index 9a956e4..9cf24cf 100644
--- a/power/stats/1.0/Android.bp
+++ b/power/stats/1.0/Android.bp
@@ -13,17 +13,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "EnergyData",
-        "PowerEntityInfo",
-        "PowerEntityStateInfo",
-        "PowerEntityStateResidencyData",
-        "PowerEntityStateResidencyResult",
-        "PowerEntityStateSpace",
-        "PowerEntityType",
-        "RailInfo",
-        "Status",
-    ],
     gen_java: false,
 }
 
diff --git a/power/stats/1.0/types.hal b/power/stats/1.0/types.hal
index 644224b..6051e3f 100644
--- a/power/stats/1.0/types.hal
+++ b/power/stats/1.0/types.hal
@@ -26,9 +26,9 @@
 struct RailInfo {
     /** Index corresponding to the rail */
     uint32_t index;
-    /** Name of the rail */
+    /** Name of the rail (opaque to the framework) */
     string railName;
-    /** Name of the subsystem to which this rail belongs */
+    /** Name of the subsystem to which this rail belongs (opaque to the framework) */
     string subsysName;
     /** Hardware sampling rate */
     uint32_t samplingRate;
@@ -71,7 +71,7 @@
 struct PowerEntityInfo {
     /** Unique ID corresponding to the PowerEntity */
     uint32_t powerEntityId;
-    /** Name of the PowerEntity */
+    /** Name of the PowerEntity (opaque to the framework) */
     string powerEntityName;
     /** Type of the PowerEntity */
     PowerEntityType type;
@@ -82,7 +82,7 @@
      * ID corresponding to the state. Unique for a given PowerEntityStateSpace
      */
     uint32_t powerEntityStateId;
-    /** Name of the state */
+    /** Name of the state (opaque to the framework) */
     string powerEntityStateName;
 };
 
diff --git a/radio/1.0/Android.bp b/radio/1.0/Android.bp
index 72a3ca6..f023471 100644
--- a/radio/1.0/Android.bp
+++ b/radio/1.0/Android.bp
@@ -17,162 +17,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "ActivityStatsInfo",
-        "ApnAuthType",
-        "ApnTypes",
-        "AppState",
-        "AppStatus",
-        "AppType",
-        "Call",
-        "CallForwardInfo",
-        "CallForwardInfoStatus",
-        "CallPresentation",
-        "CallState",
-        "CardState",
-        "CardStatus",
-        "Carrier",
-        "CarrierMatchType",
-        "CarrierRestrictions",
-        "CdmaBroadcastSmsConfigInfo",
-        "CdmaCallWaiting",
-        "CdmaCallWaitingNumberPlan",
-        "CdmaCallWaitingNumberPresentation",
-        "CdmaCallWaitingNumberType",
-        "CdmaDisplayInfoRecord",
-        "CdmaInfoRecName",
-        "CdmaInformationRecord",
-        "CdmaInformationRecords",
-        "CdmaLineControlInfoRecord",
-        "CdmaNumberInfoRecord",
-        "CdmaOtaProvisionStatus",
-        "CdmaRedirectingNumberInfoRecord",
-        "CdmaRedirectingReason",
-        "CdmaRoamingType",
-        "CdmaSignalInfoRecord",
-        "CdmaSignalStrength",
-        "CdmaSmsAck",
-        "CdmaSmsAddress",
-        "CdmaSmsDigitMode",
-        "CdmaSmsErrorClass",
-        "CdmaSmsMessage",
-        "CdmaSmsNumberMode",
-        "CdmaSmsNumberPlan",
-        "CdmaSmsNumberType",
-        "CdmaSmsSubaddress",
-        "CdmaSmsSubaddressType",
-        "CdmaSmsWriteArgs",
-        "CdmaSmsWriteArgsStatus",
-        "CdmaSubscriptionSource",
-        "CdmaT53AudioControlInfoRecord",
-        "CdmaT53ClirInfoRecord",
-        "CellIdentity",
-        "CellIdentityCdma",
-        "CellIdentityGsm",
-        "CellIdentityLte",
-        "CellIdentityTdscdma",
-        "CellIdentityWcdma",
-        "CellInfo",
-        "CellInfoCdma",
-        "CellInfoGsm",
-        "CellInfoLte",
-        "CellInfoTdscdma",
-        "CellInfoType",
-        "CellInfoWcdma",
-        "CfData",
-        "ClipStatus",
-        "Clir",
-        "DataCallFailCause",
-        "DataProfileId",
-        "DataProfileInfo",
-        "DataProfileInfoType",
-        "DataRegStateResult",
-        "DeviceStateType",
-        "Dial",
-        "EvdoSignalStrength",
-        "GsmBroadcastSmsConfigInfo",
-        "GsmSignalStrength",
-        "GsmSmsMessage",
-        "HardwareConfig",
-        "HardwareConfigModem",
-        "HardwareConfigSim",
-        "HardwareConfigState",
-        "HardwareConfigType",
-        "IccIo",
-        "IccIoResult",
-        "ImsSmsMessage",
-        "IndicationFilter",
-        "LastCallFailCause",
-        "LastCallFailCauseInfo",
-        "LceDataInfo",
-        "LceStatus",
-        "LceStatusInfo",
-        "LteSignalStrength",
-        "MvnoType",
-        "NeighboringCell",
-        "NvItem",
-        "NvWriteItem",
-        "OperatorInfo",
-        "OperatorStatus",
-        "P2Constant",
-        "PcoDataInfo",
-        "PersoSubstate",
-        "PhoneRestrictedState",
-        "PinState",
-        "PreferredNetworkType",
-        "RadioAccessFamily",
-        "RadioBandMode",
-        "RadioCapability",
-        "RadioCapabilityPhase",
-        "RadioCapabilityStatus",
-        "RadioCdmaSmsConst",
-        "RadioConst",
-        "RadioError",
-        "RadioIndicationType",
-        "RadioResponseInfo",
-        "RadioResponseType",
-        "RadioState",
-        "RadioTechnology",
-        "RadioTechnologyFamily",
-        "RegState",
-        "ResetNvType",
-        "RestrictedState",
-        "SapApduType",
-        "SapConnectRsp",
-        "SapDisconnectType",
-        "SapResultCode",
-        "SapStatus",
-        "SapTransferProtocol",
-        "SelectUiccSub",
-        "SendSmsResult",
-        "SetupDataCallResult",
-        "SignalStrength",
-        "SimApdu",
-        "SimRefreshResult",
-        "SimRefreshType",
-        "SmsAcknowledgeFailCause",
-        "SmsWriteArgs",
-        "SmsWriteArgsStatus",
-        "SrvccState",
-        "SsInfoData",
-        "SsRequestType",
-        "SsServiceType",
-        "SsTeleserviceType",
-        "StkCcUnsolSsResult",
-        "SubscriptionType",
-        "SuppServiceClass",
-        "SuppSvcNotification",
-        "TdScdmaSignalStrength",
-        "TimeStampType",
-        "TtyMode",
-        "UiccSubActStatus",
-        "UssdModeType",
-        "UusDcs",
-        "UusInfo",
-        "UusType",
-        "VoiceRegStateResult",
-        "WcdmaSignalStrength",
-    ],
     gen_java: true,
 }
 
diff --git a/radio/1.1/Android.bp b/radio/1.1/Android.bp
index 5eecb31..4375d8c 100644
--- a/radio/1.1/Android.bp
+++ b/radio/1.1/Android.bp
@@ -17,23 +17,6 @@
         "android.hardware.radio@1.0",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "CardPowerState",
-        "EutranBands",
-        "GeranBands",
-        "ImsiEncryptionInfo",
-        "KeepaliveRequest",
-        "KeepaliveStatus",
-        "KeepaliveStatusCode",
-        "KeepaliveType",
-        "NetworkScanRequest",
-        "NetworkScanResult",
-        "RadioAccessNetworks",
-        "RadioAccessSpecifier",
-        "ScanStatus",
-        "ScanType",
-        "UtranBands",
-    ],
     gen_java: true,
 }
 
diff --git a/radio/1.2/Android.bp b/radio/1.2/Android.bp
index c90a03c..b7364a8 100644
--- a/radio/1.2/Android.bp
+++ b/radio/1.2/Android.bp
@@ -18,41 +18,6 @@
         "android.hardware.radio@1.1",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "AccessNetwork",
-        "AudioQuality",
-        "Call",
-        "CardStatus",
-        "CellConnectionStatus",
-        "CellIdentity",
-        "CellIdentityCdma",
-        "CellIdentityGsm",
-        "CellIdentityLte",
-        "CellIdentityOperatorNames",
-        "CellIdentityTdscdma",
-        "CellIdentityWcdma",
-        "CellInfo",
-        "CellInfoCdma",
-        "CellInfoGsm",
-        "CellInfoLte",
-        "CellInfoTdscdma",
-        "CellInfoWcdma",
-        "DataRegStateResult",
-        "DataRequestReason",
-        "IncrementalResultsPeriodicityRange",
-        "IndicationFilter",
-        "LinkCapacityEstimate",
-        "MaxSearchTimeRange",
-        "NetworkScanRequest",
-        "NetworkScanResult",
-        "PhysicalChannelConfig",
-        "RadioConst",
-        "ScanIntervalRange",
-        "SignalStrength",
-        "TdscdmaSignalStrength",
-        "VoiceRegStateResult",
-        "WcdmaSignalStrength",
-    ],
     gen_java: true,
 }
 
diff --git a/radio/1.3/Android.bp b/radio/1.3/Android.bp
index 63056cc..de2a3e5 100644
--- a/radio/1.3/Android.bp
+++ b/radio/1.3/Android.bp
@@ -18,9 +18,6 @@
         "android.hardware.radio@1.2",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "RadioResponseInfoModem",
-    ],
     gen_java: true,
 }
 
diff --git a/radio/1.3/IRadio.hal b/radio/1.3/IRadio.hal
index cc5b860..922b35d 100644
--- a/radio/1.3/IRadio.hal
+++ b/radio/1.3/IRadio.hal
@@ -49,10 +49,13 @@
             vec<RadioAccessSpecifier> specifiers);
 
    /**
-    * Toggle logical modem on and off. It should put the logical modem in low power
-    * mode without any activity, while the SIM card remains visible. The difference
-    * with setRadioPower is, setRadioPower affects all logical modem while this controls
-    * just one.
+    * Toggle logical modem on/off. This is similar to @1.0::IRadio.setRadioPower(), however that
+    * does not enforce that radio power is toggled only for the corresponding radio and certain
+    * vendor implementations do it for all radios. This new API should affect only the modem for
+    * which it is called. A modem stack must be on/active only when both setRadioPower() and
+    * enableModem() are set to on for it.
+    *
+    * SIM must be read if available even if modem is off/inactive.
     *
     * @param serial Serial number of request.
     * @param on True to turn on the logical modem, otherwise turn it off.
@@ -62,9 +65,8 @@
     oneway enableModem(int32_t serial, bool on);
 
    /**
-    * Request status of logical modem associated with the given serial number. It returns
-    * isEnabled=true if the logical modem is in low power mode without any activity, while
-    * the SIM card remains visible.
+    * Request status of logical modem. It returns isEnabled=true if the logical modem is on.
+    * This method is the getter method for enableModem.
     *
     * @param serial Serial number of request.
     *
diff --git a/radio/1.3/vts/functional/radio_hidl_hal_api.cpp b/radio/1.3/vts/functional/radio_hidl_hal_api.cpp
index 6208c67..1bebae7 100644
--- a/radio/1.3/vts/functional/radio_hidl_hal_api.cpp
+++ b/radio/1.3/vts/functional/radio_hidl_hal_api.cpp
@@ -75,3 +75,36 @@
             radioRsp_v1_3->rspInfo.error,
             {RadioError::NONE, RadioError::RADIO_NOT_AVAILABLE, RadioError::MODEM_ERR}));
 }
+
+/*
+ * Test IRadio.setSystemSelectionChannels() for the response returned.
+ */
+TEST_F(RadioHidlTest_v1_3, setSystemSelectionChannels) {
+    serial = GetRandomSerialNumber();
+
+    RadioAccessSpecifier specifier = {.radioAccessNetwork = RadioAccessNetworks::GERAN,
+                                      .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480},
+                                      .channels = {1, 2}};
+
+    Return<void> res = radio_v1_3->setSystemSelectionChannels(serial, true, {specifier});
+    ASSERT_OK(res);
+    EXPECT_EQ(std::cv_status::no_timeout, wait());
+    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_3->rspInfo.type);
+    EXPECT_EQ(serial, radioRsp_v1_3->rspInfo.serial);
+    ALOGI("setSystemSelectionChannels, rspInfo.error = %s\n",
+          toString(radioRsp_v1_3->rspInfo.error).c_str());
+    ASSERT_TRUE(CheckAnyOfErrors(
+            radioRsp_v1_3->rspInfo.error,
+            {RadioError::NONE, RadioError::RADIO_NOT_AVAILABLE, RadioError::INTERNAL_ERR}));
+
+    if (radioRsp_v1_3->rspInfo.error == RadioError::NONE) {
+        Return<void> res = radio_v1_3->setSystemSelectionChannels(serial, false, {specifier});
+        ASSERT_OK(res);
+        EXPECT_EQ(std::cv_status::no_timeout, wait());
+        EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_3->rspInfo.type);
+        EXPECT_EQ(serial, radioRsp_v1_3->rspInfo.serial);
+        ALOGI("setSystemSelectionChannels, rspInfo.error = %s\n",
+              toString(radioRsp_v1_3->rspInfo.error).c_str());
+        EXPECT_EQ(RadioError::NONE, radioRsp_v1_3->rspInfo.error);
+    }
+}
\ No newline at end of file
diff --git a/radio/1.3/vts/functional/radio_response.cpp b/radio/1.3/vts/functional/radio_response.cpp
index 900794e..84a9890 100644
--- a/radio/1.3/vts/functional/radio_response.cpp
+++ b/radio/1.3/vts/functional/radio_response.cpp
@@ -769,12 +769,14 @@
 /* 1.3 Api */
 Return<void> RadioResponse_v1_3::setSystemSelectionChannelsResponse(const RadioResponseInfo& info) {
     rspInfo = info;
+    parent_v1_3.notify(info.serial);
     return Void();
 }
 
 Return<void> RadioResponse_v1_3::enableModemResponse(const RadioResponseInfo& info) {
     rspInfo = info;
     enableModemResponseToggle = !enableModemResponseToggle;
+    parent_v1_3.notify(info.serial);
     return Void();
 }
 
@@ -782,5 +784,6 @@
                                                              const bool enabled) {
     rspInfo = info;
     isModemEnabled = enabled;
+    parent_v1_3.notify(info.serial);
     return Void();
 }
diff --git a/radio/1.4/Android.bp b/radio/1.4/Android.bp
index e8b8777..9f5f2f9 100644
--- a/radio/1.4/Android.bp
+++ b/radio/1.4/Android.bp
@@ -20,38 +20,6 @@
         "android.hidl.base@1.0",
         "android.hidl.safe_union@1.0",
     ],
-    types: [
-        "AccessNetwork",
-        "CardStatus",
-        "CarrierRestrictionsWithPriority",
-        "CellConfigLte",
-        "CellIdentityNr",
-        "CellInfo",
-        "CellInfoLte",
-        "CellInfoNr",
-        "DataCallFailCause",
-        "DataConnActiveStatus",
-        "DataProfileInfo",
-        "DataRegStateResult",
-        "EmergencyCallRouting",
-        "EmergencyNumber",
-        "EmergencyNumberSource",
-        "EmergencyServiceCategory",
-        "FrequencyRange",
-        "LteVopsInfo",
-        "NetworkScanResult",
-        "NrIndicators",
-        "NrSignalStrength",
-        "PdpProtocolType",
-        "PhysicalChannelConfig",
-        "RadioAccessFamily",
-        "RadioCapability",
-        "RadioFrequencyInfo",
-        "RadioTechnology",
-        "SetupDataCallResult",
-        "SignalStrength",
-        "SimLockMultiSimPolicy",
-    ],
     gen_java: true,
 }
 
diff --git a/radio/1.4/IRadio.hal b/radio/1.4/IRadio.hal
index f7ae39f..046f074 100644
--- a/radio/1.4/IRadio.hal
+++ b/radio/1.4/IRadio.hal
@@ -115,11 +115,13 @@
      * PUK/PIN state of the subscription and the service state of the radio.
      *
      * Some countries or carriers require some emergency numbers that must be handled with normal
-     * call routing or emergency routing. If the 'routing' field is specified as
-     * @1.4::EmergencyNumberRouting#NORMAL, the implementation must use normal call routing to
-     * handle the call; if it is specified as @1.4::EmergencyNumberRouting#EMERGENCY, the
-     * implementation must use emergency routing to handle the call; if it is
-     * @1.4::EmergencyNumberRouting#UNKNOWN, Android does not know how to handle the call.
+     * call routing if possible or emergency routing. 1) if the 'routing' field is specified as
+     * @1.4::EmergencyNumberRouting#NORMAL, the implementation must try the full radio service to
+     * use normal call routing to handle the call; if service cannot support normal routing, the
+     * implementation must use emergency routing to handle the call. 2) if 'routing' is specified
+     * as @1.4::EmergencyNumberRouting#EMERGENCY, the implementation must use emergency routing to
+     * handle the call. 3) if 'routing' is specified as @1.4::EmergencyNumberRouting#UNKNOWN,
+     * Android does not know how to handle the call.
      *
      * If the dialed emergency number does not have a specified emergency service category, the
      * 'categories' field is set to @1.4::EmergencyServiceCategory#UNSPECIFIED; if the dialed
diff --git a/radio/1.4/types.hal b/radio/1.4/types.hal
index dc3bba0..393716b 100644
--- a/radio/1.4/types.hal
+++ b/radio/1.4/types.hal
@@ -64,6 +64,15 @@
     UNKNOWN = 0,
 };
 
+enum ApnTypes : @1.0::ApnTypes {
+    /**
+     * Due to the addition of this new value, the value ALL defined in 1.0::ApnTypes is now
+     * deprecated and should not be used.
+     */
+    MCX = 1 << 10,            // APN type for Mission Critical Service
+                              // Reference: 3GPP TS 22.280 V15.3.0
+};
+
 /**
  * Emergency number contains information of number, one or more service category(s), zero or more
  * emergency uniform resource names, mobile country code (mcc), mobile network country (mnc) and
diff --git a/radio/1.4/vts/functional/radio_hidl_hal_api.cpp b/radio/1.4/vts/functional/radio_hidl_hal_api.cpp
index 9237799..4f347cd 100644
--- a/radio/1.4/vts/functional/radio_hidl_hal_api.cpp
+++ b/radio/1.4/vts/functional/radio_hidl_hal_api.cpp
@@ -93,4 +93,586 @@
     ALOGI("emergencyDial_withEmergencyRouting, rspInfo.error = %s\n",
           toString(radioRsp_v1_4->rspInfo.error).c_str());
     EXPECT_EQ(RadioError::NONE, radioRsp_v1_4->rspInfo.error);
-}
\ No newline at end of file
+}
+
+/*
+ * Test IRadio.getPreferredNetworkTypeBitmap() for the response returned.
+ */
+TEST_F(RadioHidlTest_v1_4, getPreferredNetworkTypeBitmap) {
+    serial = GetRandomSerialNumber();
+
+    Return<void> res = radio_v1_4->getPreferredNetworkTypeBitmap(serial);
+
+    ASSERT_OK(res);
+    EXPECT_EQ(std::cv_status::no_timeout, wait());
+    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type);
+    EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial);
+    ALOGI("getPreferredNetworkTypeBitmap, rspInfo.error = %s\n",
+          toString(radioRsp_v1_4->rspInfo.error).c_str());
+    EXPECT_EQ(RadioError::NONE, radioRsp_v1_4->rspInfo.error);
+}
+
+TEST_F(RadioHidlTest_v1_4, setPreferredNetworkTypeBitmap) {
+    serial = GetRandomSerialNumber();
+    ::android::hardware::hidl_bitfield<::android::hardware::radio::V1_4::RadioAccessFamily>
+            network_type_bitmap{};
+
+    network_type_bitmap |= ::android::hardware::radio::V1_4::RadioAccessFamily::LTE;
+
+    Return<void> res = radio_v1_4->setPreferredNetworkTypeBitmap(serial, network_type_bitmap);
+
+    ASSERT_OK(res);
+    EXPECT_EQ(std::cv_status::no_timeout, wait());
+    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type);
+    EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial);
+    ALOGI("setPreferredNetworkTypeBitmap, rspInfo.error = %s\n",
+          toString(radioRsp_v1_4->rspInfo.error).c_str());
+    EXPECT_EQ(RadioError::NONE, radioRsp_v1_4->rspInfo.error);
+    if (radioRsp_v1_4->rspInfo.error == RadioError::NONE) {
+         // give some time for modem to set the value.
+        sleep(3);
+        serial = GetRandomSerialNumber();
+        Return<void> res = radio_v1_4->getPreferredNetworkTypeBitmap(serial);
+
+        ASSERT_OK(res);
+        EXPECT_EQ(std::cv_status::no_timeout, wait());
+        EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type);
+        EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial);
+        ALOGI("getPreferredNetworkTypeBitmap, rspInfo.error = %s\n",
+              toString(radioRsp_v1_4->rspInfo.error).c_str());
+        EXPECT_EQ(RadioError::NONE, radioRsp_v1_4->rspInfo.error);
+        EXPECT_EQ(network_type_bitmap, radioRsp_v1_4->networkTypeBitmapResponse);
+    }
+}
+
+/*
+ * Test IRadio.startNetworkScan() for the response returned.
+ */
+TEST_F(RadioHidlTest_v1_4, startNetworkScan) {
+    serial = GetRandomSerialNumber();
+
+    RadioAccessSpecifier specifier = {.radioAccessNetwork = RadioAccessNetworks::GERAN,
+                                      .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480},
+                                      .channels = {1, 2}};
+
+    ::android::hardware::radio::V1_2::NetworkScanRequest request = {
+            .type = ScanType::ONE_SHOT, .interval = 60, .specifiers = {specifier}};
+
+    Return<void> res = radio_v1_4->startNetworkScan_1_4(serial, request);
+    ASSERT_OK(res);
+    EXPECT_EQ(std::cv_status::no_timeout, wait());
+    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type);
+    EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial);
+
+    ALOGI("startNetworkScan, rspInfo.error = %s\n", toString(radioRsp_v1_4->rspInfo.error).c_str());
+
+    if (cardStatus.base.base.cardState == CardState::ABSENT) {
+        ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::SIM_ABSENT}));
+    } else if (cardStatus.base.base.cardState == CardState::PRESENT) {
+        // OPERATION_NOT_ALLOWED should not be allowed; however, some vendors do not support the
+        // required manual GSM search functionality. This is tracked in b/112206766.
+        ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error,
+                                     {RadioError::NONE, RadioError::OPERATION_NOT_ALLOWED}));
+    }
+}
+
+/*
+ * Test IRadio.startNetworkScan() with invalid specifier.
+ */
+TEST_F(RadioHidlTest_v1_4, startNetworkScan_InvalidArgument) {
+    serial = GetRandomSerialNumber();
+
+    ::android::hardware::radio::V1_2::NetworkScanRequest request = {.type = ScanType::ONE_SHOT,
+                                                                    .interval = 60};
+
+    Return<void> res = radio_v1_4->startNetworkScan_1_4(serial, request);
+
+    ASSERT_OK(res);
+    EXPECT_EQ(std::cv_status::no_timeout, wait());
+    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type);
+    EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial);
+
+    ALOGI("startNetworkScan_InvalidArgument, rspInfo.error = %s\n",
+          toString(radioRsp_v1_4->rspInfo.error).c_str());
+    if (cardStatus.base.base.cardState == CardState::ABSENT) {
+        ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error,
+                                     {RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS}));
+    } else if (cardStatus.base.base.cardState == CardState::PRESENT) {
+        ASSERT_TRUE(
+                CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::INVALID_ARGUMENTS}));
+    }
+}
+
+/*
+ * Test IRadio.startNetworkScan() with invalid interval (lower boundary).
+ */
+TEST_F(RadioHidlTest_v1_4, startNetworkScan_InvalidInterval1) {
+    serial = GetRandomSerialNumber();
+
+    RadioAccessSpecifier specifier = {.radioAccessNetwork = RadioAccessNetworks::GERAN,
+                                      .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480},
+                                      .channels = {1, 2}};
+
+    ::android::hardware::radio::V1_2::NetworkScanRequest request = {
+            .type = ScanType::ONE_SHOT,
+            .interval = 4,
+            .specifiers = {specifier},
+            .maxSearchTime = 60,
+            .incrementalResults = false,
+            .incrementalResultsPeriodicity = 1};
+
+    Return<void> res = radio_v1_4->startNetworkScan_1_4(serial, request);
+
+    ASSERT_OK(res);
+    EXPECT_EQ(std::cv_status::no_timeout, wait());
+    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type);
+    EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial);
+
+    ALOGI("startNetworkScan_InvalidInterval1, rspInfo.error = %s\n",
+          toString(radioRsp_v1_4->rspInfo.error).c_str());
+    if (cardStatus.base.base.cardState == CardState::ABSENT) {
+        ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error,
+                                     {RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS}));
+    } else if (cardStatus.base.base.cardState == CardState::PRESENT) {
+        ASSERT_TRUE(
+                CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::INVALID_ARGUMENTS}));
+    }
+}
+
+/*
+ * Test IRadio.startNetworkScan() with invalid interval (upper boundary).
+ */
+TEST_F(RadioHidlTest_v1_4, startNetworkScan_InvalidInterval2) {
+    serial = GetRandomSerialNumber();
+
+    RadioAccessSpecifier specifier = {.radioAccessNetwork = RadioAccessNetworks::GERAN,
+                                      .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480},
+                                      .channels = {1, 2}};
+
+    ::android::hardware::radio::V1_2::NetworkScanRequest request = {
+            .type = ScanType::ONE_SHOT,
+            .interval = 301,
+            .specifiers = {specifier},
+            .maxSearchTime = 60,
+            .incrementalResults = false,
+            .incrementalResultsPeriodicity = 1};
+
+    Return<void> res = radio_v1_4->startNetworkScan_1_4(serial, request);
+    ASSERT_OK(res);
+    EXPECT_EQ(std::cv_status::no_timeout, wait());
+    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type);
+    EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial);
+
+    ALOGI("startNetworkScan_InvalidInterval2, rspInfo.error = %s\n",
+          toString(radioRsp_v1_4->rspInfo.error).c_str());
+    if (cardStatus.base.base.cardState == CardState::ABSENT) {
+        ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error,
+                                     {RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS}));
+    } else if (cardStatus.base.base.cardState == CardState::PRESENT) {
+        ASSERT_TRUE(
+                CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::INVALID_ARGUMENTS}));
+    }
+}
+
+/*
+ * Test IRadio.startNetworkScan() with invalid max search time (lower boundary).
+ */
+TEST_F(RadioHidlTest_v1_4, startNetworkScan_InvalidMaxSearchTime1) {
+    serial = GetRandomSerialNumber();
+
+    RadioAccessSpecifier specifier = {.radioAccessNetwork = RadioAccessNetworks::GERAN,
+                                      .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480},
+                                      .channels = {1, 2}};
+
+    ::android::hardware::radio::V1_2::NetworkScanRequest request = {
+            .type = ScanType::ONE_SHOT,
+            .interval = 60,
+            .specifiers = {specifier},
+            .maxSearchTime = 59,
+            .incrementalResults = false,
+            .incrementalResultsPeriodicity = 1};
+
+    Return<void> res = radio_v1_4->startNetworkScan_1_4(serial, request);
+    ASSERT_OK(res);
+    EXPECT_EQ(std::cv_status::no_timeout, wait());
+    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type);
+    EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial);
+
+    ALOGI("startNetworkScan_InvalidMaxSearchTime1, rspInfo.error = %s\n",
+          toString(radioRsp_v1_4->rspInfo.error).c_str());
+    if (cardStatus.base.base.cardState == CardState::ABSENT) {
+        ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error,
+                                     {RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS}));
+    } else if (cardStatus.base.base.cardState == CardState::PRESENT) {
+        ASSERT_TRUE(
+                CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::INVALID_ARGUMENTS}));
+    }
+}
+
+/*
+ * Test IRadio.startNetworkScan() with invalid max search time (upper boundary).
+ */
+TEST_F(RadioHidlTest_v1_4, startNetworkScan_InvalidMaxSearchTime2) {
+    serial = GetRandomSerialNumber();
+
+    RadioAccessSpecifier specifier = {.radioAccessNetwork = RadioAccessNetworks::GERAN,
+                                      .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480},
+                                      .channels = {1, 2}};
+
+    ::android::hardware::radio::V1_2::NetworkScanRequest request = {
+            .type = ScanType::ONE_SHOT,
+            .interval = 60,
+            .specifiers = {specifier},
+            .maxSearchTime = 3601,
+            .incrementalResults = false,
+            .incrementalResultsPeriodicity = 1};
+
+    Return<void> res = radio_v1_4->startNetworkScan_1_4(serial, request);
+    ASSERT_OK(res);
+    EXPECT_EQ(std::cv_status::no_timeout, wait());
+    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type);
+    EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial);
+
+    ALOGI("startNetworkScan_InvalidMaxSearchTime2, rspInfo.error = %s\n",
+          toString(radioRsp_v1_4->rspInfo.error).c_str());
+    if (cardStatus.base.base.cardState == CardState::ABSENT) {
+        ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error,
+                                     {RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS}));
+    } else if (cardStatus.base.base.cardState == CardState::PRESENT) {
+        ASSERT_TRUE(
+                CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::INVALID_ARGUMENTS}));
+    }
+}
+
+/*
+ * Test IRadio.startNetworkScan() with invalid periodicity (lower boundary).
+ */
+TEST_F(RadioHidlTest_v1_4, startNetworkScan_InvalidPeriodicity1) {
+    serial = GetRandomSerialNumber();
+
+    RadioAccessSpecifier specifier = {.radioAccessNetwork = RadioAccessNetworks::GERAN,
+                                      .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480},
+                                      .channels = {1, 2}};
+
+    ::android::hardware::radio::V1_2::NetworkScanRequest request = {
+            .type = ScanType::ONE_SHOT,
+            .interval = 60,
+            .specifiers = {specifier},
+            .maxSearchTime = 600,
+            .incrementalResults = false,
+            .incrementalResultsPeriodicity = 0};
+
+    Return<void> res = radio_v1_4->startNetworkScan_1_4(serial, request);
+    ASSERT_OK(res);
+    EXPECT_EQ(std::cv_status::no_timeout, wait());
+    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type);
+    EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial);
+
+    ALOGI("startNetworkScan_InvalidPeriodicity1, rspInfo.error = %s\n",
+          toString(radioRsp_v1_4->rspInfo.error).c_str());
+    if (cardStatus.base.base.cardState == CardState::ABSENT) {
+        ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error,
+                                     {RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS}));
+    } else if (cardStatus.base.base.cardState == CardState::PRESENT) {
+        ASSERT_TRUE(
+                CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::INVALID_ARGUMENTS}));
+    }
+}
+
+/*
+ * Test IRadio.startNetworkScan() with invalid periodicity (upper boundary).
+ */
+TEST_F(RadioHidlTest_v1_4, startNetworkScan_InvalidPeriodicity2) {
+    serial = GetRandomSerialNumber();
+
+    RadioAccessSpecifier specifier = {.radioAccessNetwork = RadioAccessNetworks::GERAN,
+                                      .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480},
+                                      .channels = {1, 2}};
+
+    ::android::hardware::radio::V1_2::NetworkScanRequest request = {
+            .type = ScanType::ONE_SHOT,
+            .interval = 60,
+            .specifiers = {specifier},
+            .maxSearchTime = 600,
+            .incrementalResults = false,
+            .incrementalResultsPeriodicity = 11};
+
+    Return<void> res = radio_v1_4->startNetworkScan_1_4(serial, request);
+    ASSERT_OK(res);
+    EXPECT_EQ(std::cv_status::no_timeout, wait());
+    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type);
+    EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial);
+
+    ALOGI("startNetworkScan_InvalidPeriodicity2, rspInfo.error = %s\n",
+          toString(radioRsp_v1_4->rspInfo.error).c_str());
+    if (cardStatus.base.base.cardState == CardState::ABSENT) {
+        ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error,
+                                     {RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS}));
+    } else if (cardStatus.base.base.cardState == CardState::PRESENT) {
+        ASSERT_TRUE(
+                CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::INVALID_ARGUMENTS}));
+    }
+}
+
+/*
+ * Test IRadio.startNetworkScan() with valid periodicity
+ */
+TEST_F(RadioHidlTest_v1_4, startNetworkScan_GoodRequest1) {
+    serial = GetRandomSerialNumber();
+
+    RadioAccessSpecifier specifier = {.radioAccessNetwork = RadioAccessNetworks::GERAN,
+                                      .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480},
+                                      .channels = {1, 2}};
+
+    ::android::hardware::radio::V1_2::NetworkScanRequest request = {
+            .type = ScanType::ONE_SHOT,
+            .interval = 60,
+            .specifiers = {specifier},
+            // Some vendor may not support max search time of 360s.
+            // This issue is tracked in b/112205669.
+            .maxSearchTime = 300,
+            .incrementalResults = false,
+            .incrementalResultsPeriodicity = 10};
+
+    Return<void> res = radio_v1_4->startNetworkScan_1_4(serial, request);
+    ASSERT_OK(res);
+    EXPECT_EQ(std::cv_status::no_timeout, wait());
+    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type);
+    EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial);
+
+    ALOGI("startNetworkScan_GoodRequest1, rspInfo.error = %s\n",
+          toString(radioRsp_v1_4->rspInfo.error).c_str());
+    if (cardStatus.base.base.cardState == CardState::ABSENT) {
+        ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error,
+                                     {RadioError::NONE, RadioError::SIM_ABSENT}));
+    } else if (cardStatus.base.base.cardState == CardState::PRESENT) {
+        ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error,
+                                     {RadioError::NONE, RadioError::INVALID_ARGUMENTS}));
+    }
+}
+
+/*
+ * Test IRadio.startNetworkScan() with valid periodicity and plmns
+ */
+TEST_F(RadioHidlTest_v1_4, startNetworkScan_GoodRequest2) {
+    serial = GetRandomSerialNumber();
+
+    RadioAccessSpecifier specifier = {.radioAccessNetwork = RadioAccessNetworks::GERAN,
+                                      .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480},
+                                      .channels = {1, 2}};
+
+    ::android::hardware::radio::V1_2::NetworkScanRequest request = {
+            .type = ScanType::ONE_SHOT,
+            .interval = 60,
+            .specifiers = {specifier},
+            // Some vendor may not support max search time of 360s.
+            // This issue is tracked in b/112205669.
+            .maxSearchTime = 300,
+            .incrementalResults = false,
+            .incrementalResultsPeriodicity = 10,
+            .mccMncs = {"310410"}};
+
+    Return<void> res = radio_v1_4->startNetworkScan_1_4(serial, request);
+
+    ASSERT_OK(res);
+    EXPECT_EQ(std::cv_status::no_timeout, wait());
+    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type);
+    EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial);
+
+    ALOGI("startNetworkScan_GoodRequest2, rspInfo.error = %s\n",
+          toString(radioRsp_v1_4->rspInfo.error).c_str());
+    if (cardStatus.base.base.cardState == CardState::ABSENT) {
+        ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error,
+                                     {RadioError::NONE, RadioError::SIM_ABSENT}));
+    } else if (cardStatus.base.base.cardState == CardState::PRESENT) {
+        ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error,
+                                     {RadioError::NONE, RadioError::INVALID_ARGUMENTS}));
+    }
+}
+
+/*
+ * Test IRadio.getSignalStrength_1_4() for the response returned.
+ */
+TEST_F(RadioHidlTest_v1_4, getSignalStrength_1_4) {
+    serial = GetRandomSerialNumber();
+
+    radio_v1_4->getSignalStrength_1_4(serial);
+    EXPECT_EQ(std::cv_status::no_timeout, wait());
+    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type);
+    EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial);
+
+    if (cardStatus.base.base.cardState == CardState::ABSENT) {
+        EXPECT_EQ(RadioError::NONE, radioRsp_v1_4->rspInfo.error);
+    } else if (cardStatus.base.base.cardState == CardState::PRESENT) {
+        ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error,
+                                     {RadioError::NONE, RadioError::RADIO_NOT_AVAILABLE}));
+    }
+}
+
+/*
+ * Test IRadio.setupDataCall_1_4() for the response returned.
+ */
+TEST_F(RadioHidlTest_v1_4, setupDataCall_1_4) {
+    serial = GetRandomSerialNumber();
+
+    ::android::hardware::radio::V1_4::AccessNetwork accessNetwork =
+            ::android::hardware::radio::V1_4::AccessNetwork::EUTRAN;
+
+    android::hardware::radio::V1_4::DataProfileInfo dataProfileInfo;
+    memset(&dataProfileInfo, 0, sizeof(dataProfileInfo));
+    dataProfileInfo.profileId = DataProfileId::DEFAULT;
+    dataProfileInfo.apn = hidl_string("internet");
+    dataProfileInfo.protocol = PdpProtocolType::IPV4V6;
+    dataProfileInfo.roamingProtocol = PdpProtocolType::IPV4V6;
+    dataProfileInfo.authType = ApnAuthType::NO_PAP_NO_CHAP;
+    dataProfileInfo.user = hidl_string("username");
+    dataProfileInfo.password = hidl_string("password");
+    dataProfileInfo.type = DataProfileInfoType::THREE_GPP;
+    dataProfileInfo.maxConnsTime = 300;
+    dataProfileInfo.maxConns = 20;
+    dataProfileInfo.waitTime = 0;
+    dataProfileInfo.enabled = true;
+    dataProfileInfo.supportedApnTypesBitmap = 320;
+    dataProfileInfo.bearerBitmap = 161543;
+    dataProfileInfo.mtu = 0;
+    dataProfileInfo.preferred = true;
+    dataProfileInfo.persistent = false;
+
+    bool roamingAllowed = false;
+
+    ::android::hardware::radio::V1_2::DataRequestReason reason =
+            ::android::hardware::radio::V1_2::DataRequestReason::NORMAL;
+    std::vector<hidl_string> addresses = {""};
+    std::vector<hidl_string> dnses = {""};
+
+    Return<void> res = radio_v1_4->setupDataCall_1_4(serial, accessNetwork, dataProfileInfo,
+                                                     roamingAllowed, reason, addresses, dnses);
+    ASSERT_OK(res);
+
+    EXPECT_EQ(std::cv_status::no_timeout, wait());
+    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type);
+    EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial);
+
+    if (cardStatus.base.base.cardState == CardState::ABSENT) {
+        ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error,
+                                     {RadioError::SIM_ABSENT, RadioError::RADIO_NOT_AVAILABLE,
+                                      RadioError::OP_NOT_ALLOWED_BEFORE_REG_TO_NW}));
+    } else if (cardStatus.base.base.cardState == CardState::PRESENT) {
+        ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error,
+                                     {RadioError::NONE, RadioError::RADIO_NOT_AVAILABLE,
+                                      RadioError::OP_NOT_ALLOWED_BEFORE_REG_TO_NW}));
+    }
+}
+
+/*
+ * Test IRadio.getAllowedCarriers_1_4() for the response returned.
+ */
+TEST_F(RadioHidlTest_v1_4, getAllowedCarriers_1_4) {
+    serial = GetRandomSerialNumber();
+
+    radio_v1_4->getAllowedCarriers_1_4(serial);
+    EXPECT_EQ(std::cv_status::no_timeout, wait());
+    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type);
+    EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial);
+
+    ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error,
+                                 {RadioError::NONE, RadioError::REQUEST_NOT_SUPPORTED}));
+}
+
+/**
+ * Test IRadio.setAllowedCarriers_1_4() for the response returned.
+ */
+TEST_F(RadioHidlTest_v1_4, setAllowedCarriers_1_4) {
+    serial = GetRandomSerialNumber();
+    CarrierRestrictionsWithPriority carrierRestrictions;
+    memset(&carrierRestrictions, 0, sizeof(carrierRestrictions));
+    carrierRestrictions.allowedCarriers.resize(1);
+    carrierRestrictions.excludedCarriers.resize(0);
+    carrierRestrictions.allowedCarriers[0].mcc = hidl_string("123");
+    carrierRestrictions.allowedCarriers[0].mnc = hidl_string("456");
+    carrierRestrictions.allowedCarriers[0].matchType = CarrierMatchType::ALL;
+    carrierRestrictions.allowedCarriers[0].matchData = hidl_string();
+    carrierRestrictions.allowedCarriersPrioritized = true;
+    SimLockMultiSimPolicy multisimPolicy = SimLockMultiSimPolicy::NO_MULTISIM_POLICY;
+
+    radio_v1_4->setAllowedCarriers_1_4(serial, carrierRestrictions, multisimPolicy);
+    EXPECT_EQ(std::cv_status::no_timeout, wait());
+    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type);
+    EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial);
+
+    ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error,
+                                 {RadioError::NONE, RadioError::REQUEST_NOT_SUPPORTED}));
+
+    if (radioRsp_v1_4->rspInfo.error == RadioError::NONE) {
+        /* Verify the update of the SIM status. This might need some time */
+        if (cardStatus.base.base.cardState != CardState::ABSENT) {
+            updateSimCardStatus();
+            auto startTime = std::chrono::system_clock::now();
+            while (cardStatus.base.base.cardState != CardState::RESTRICTED &&
+                   std::chrono::duration_cast<chrono::seconds>(std::chrono::system_clock::now() -
+                                                               startTime)
+                                   .count() < 10) {
+                /* Set 2 seconds as interval to check card status */
+                sleep(2);
+                updateSimCardStatus();
+            }
+            EXPECT_EQ(CardState::RESTRICTED, cardStatus.base.base.cardState);
+        }
+
+        /* Verify that configuration was set correctly, retrieving it from the modem */
+        serial = GetRandomSerialNumber();
+
+        radio_v1_4->getAllowedCarriers_1_4(serial);
+        EXPECT_EQ(std::cv_status::no_timeout, wait());
+        EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type);
+        EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial);
+        EXPECT_EQ(RadioError::NONE, radioRsp_v1_4->rspInfo.error);
+
+        EXPECT_EQ(1, radioRsp_v1_4->carrierRestrictionsResp.allowedCarriers.size());
+        EXPECT_EQ(0, radioRsp_v1_4->carrierRestrictionsResp.excludedCarriers.size());
+        ASSERT_TRUE(hidl_string("123") ==
+                    radioRsp_v1_4->carrierRestrictionsResp.allowedCarriers[0].mcc);
+        ASSERT_TRUE(hidl_string("456") ==
+                    radioRsp_v1_4->carrierRestrictionsResp.allowedCarriers[0].mnc);
+        EXPECT_EQ(CarrierMatchType::ALL,
+                  radioRsp_v1_4->carrierRestrictionsResp.allowedCarriers[0].matchType);
+        ASSERT_TRUE(radioRsp_v1_4->carrierRestrictionsResp.allowedCarriersPrioritized);
+        EXPECT_EQ(SimLockMultiSimPolicy::NO_MULTISIM_POLICY, radioRsp_v1_4->multiSimPolicyResp);
+
+        sleep(10);
+
+        /**
+         * Another test case of the API to cover to allow carrier.
+         * If the API is supported, this is also used to reset to no carrier restriction
+         * status for cardStatus.
+         */
+        memset(&carrierRestrictions, 0, sizeof(carrierRestrictions));
+        carrierRestrictions.allowedCarriers.resize(0);
+        carrierRestrictions.excludedCarriers.resize(0);
+        carrierRestrictions.allowedCarriersPrioritized = false;
+
+        serial = GetRandomSerialNumber();
+        radio_v1_4->setAllowedCarriers_1_4(serial, carrierRestrictions, multisimPolicy);
+        EXPECT_EQ(std::cv_status::no_timeout, wait());
+        EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type);
+        EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial);
+
+        EXPECT_EQ(RadioError::NONE, radioRsp_v1_4->rspInfo.error);
+
+        if (cardStatus.base.base.cardState != CardState::ABSENT) {
+            /* Resetting back to no carrier restriction needs some time */
+            updateSimCardStatus();
+            auto startTime = std::chrono::system_clock::now();
+            while (cardStatus.base.base.cardState == CardState::RESTRICTED &&
+                   std::chrono::duration_cast<chrono::seconds>(std::chrono::system_clock::now() -
+                                                               startTime)
+                                   .count() < 10) {
+                /* Set 2 seconds as interval to check card status */
+                sleep(2);
+                updateSimCardStatus();
+            }
+            EXPECT_NE(CardState::RESTRICTED, cardStatus.base.base.cardState);
+            sleep(10);
+        }
+    }
+}
diff --git a/radio/1.4/vts/functional/radio_hidl_hal_utils_v1_4.h b/radio/1.4/vts/functional/radio_hidl_hal_utils_v1_4.h
index b77814f..de7742c 100644
--- a/radio/1.4/vts/functional/radio_hidl_hal_utils_v1_4.h
+++ b/radio/1.4/vts/functional/radio_hidl_hal_utils_v1_4.h
@@ -61,9 +61,16 @@
     bool isModemEnabled;
     bool enableModemResponseToggle;
 
+    ::android::hardware::hidl_bitfield<::android::hardware::radio::V1_4::RadioAccessFamily>
+    networkTypeBitmapResponse;
+
     // Data
     ::android::hardware::radio::V1_4::DataRegStateResult dataRegResp;
 
+    // SimLock status
+    ::android::hardware::radio::V1_4::CarrierRestrictionsWithPriority carrierRestrictionsResp;
+    ::android::hardware::radio::V1_4::SimLockMultiSimPolicy multiSimPolicyResp;
+
     RadioResponse_v1_4(RadioHidlTest_v1_4& parent_v1_4);
     virtual ~RadioResponse_v1_4() = default;
 
diff --git a/radio/1.4/vts/functional/radio_response.cpp b/radio/1.4/vts/functional/radio_response.cpp
index 10ecead..e7842a9 100644
--- a/radio/1.4/vts/functional/radio_response.cpp
+++ b/radio/1.4/vts/functional/radio_response.cpp
@@ -776,7 +776,6 @@
 
 Return<void> RadioResponse_v1_4::enableModemResponse(const RadioResponseInfo& info) {
     rspInfo = info;
-    enableModemResponseToggle = !enableModemResponseToggle;
     parent_v1_4.notify(info.serial);
     return Void();
 }
@@ -832,9 +831,9 @@
 Return<void> RadioResponse_v1_4::getPreferredNetworkTypeBitmapResponse(
         const RadioResponseInfo& info, const ::android::hardware::hidl_bitfield<
                                                ::android::hardware::radio::V1_4::RadioAccessFamily>
-        /*networkTypeBitmap*/) {
+                                               networkTypeBitmap) {
     rspInfo = info;
-    // TODO: may need a new member for bitfield networkTypeBitmap.
+    networkTypeBitmapResponse = networkTypeBitmap;
     parent_v1_4.notify(info.serial);
     return Void();
 }
@@ -863,12 +862,18 @@
     return Void();
 }
 
-Return<void> RadioResponse_v1_4::setAllowedCarriersResponse_1_4(const RadioResponseInfo& /*info*/) {
+Return<void> RadioResponse_v1_4::setAllowedCarriersResponse_1_4(const RadioResponseInfo& info) {
+    rspInfo = info;
+    parent_v1_4.notify(info.serial);
     return Void();
 }
 
 Return<void> RadioResponse_v1_4::getAllowedCarriersResponse_1_4(
-        const RadioResponseInfo& /*info*/, const CarrierRestrictionsWithPriority& /*carriers*/,
-        SimLockMultiSimPolicy /*multiSimPolicy*/) {
+        const RadioResponseInfo& info, const CarrierRestrictionsWithPriority& carriers,
+        SimLockMultiSimPolicy multiSimPolicy) {
+    rspInfo = info;
+    carrierRestrictionsResp = carriers;
+    multiSimPolicyResp = multiSimPolicy;
+    parent_v1_4.notify(info.serial);
     return Void();
 }
diff --git a/radio/config/1.0/Android.bp b/radio/config/1.0/Android.bp
index c50e71c..7fb0ea1 100644
--- a/radio/config/1.0/Android.bp
+++ b/radio/config/1.0/Android.bp
@@ -16,10 +16,6 @@
         "android.hardware.radio@1.0",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "SimSlotStatus",
-        "SlotState",
-    ],
     gen_java: true,
 }
 
diff --git a/radio/config/1.1/Android.bp b/radio/config/1.1/Android.bp
index 151a0a3..5c9ad7c 100644
--- a/radio/config/1.1/Android.bp
+++ b/radio/config/1.1/Android.bp
@@ -17,11 +17,6 @@
         "android.hardware.radio@1.0",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "ModemInfo",
-        "ModemsConfig",
-        "PhoneCapability",
-    ],
     gen_java: true,
 }
 
diff --git a/radio/config/1.1/vts/functional/radio_config_hidl_hal_api.cpp b/radio/config/1.1/vts/functional/radio_config_hidl_hal_api.cpp
index a8e939c..bd6265c 100644
--- a/radio/config/1.1/vts/functional/radio_config_hidl_hal_api.cpp
+++ b/radio/config/1.1/vts/functional/radio_config_hidl_hal_api.cpp
@@ -69,3 +69,89 @@
     ASSERT_TRUE(CheckAnyOfErrors(radioConfigRsp->rspInfo.error,
                                  {RadioError::NONE, RadioError::REQUEST_NOT_SUPPORTED}));
 }
+
+/*
+ * Test IRadioConfig.getPhoneCapability()
+ */
+TEST_F(RadioConfigHidlTest, getPhoneCapability) {
+    serial = GetRandomSerialNumber();
+    Return<void> res = radioConfig->getPhoneCapability(serial);
+    ASSERT_OK(res);
+    EXPECT_EQ(std::cv_status::no_timeout, wait());
+    EXPECT_EQ(RadioResponseType::SOLICITED, radioConfigRsp->rspInfo.type);
+    EXPECT_EQ(serial, radioConfigRsp->rspInfo.serial);
+    ALOGI("getPhoneCapability, rspInfo.error = %s\n",
+          toString(radioConfigRsp->rspInfo.error).c_str());
+
+    ASSERT_TRUE(CheckAnyOfErrors(
+            radioConfigRsp->rspInfo.error,
+            {RadioError::NONE, RadioError::RADIO_NOT_AVAILABLE, RadioError::INTERNAL_ERR}));
+
+    if (radioConfigRsp->rspInfo.error == RadioError ::NONE) {
+        // maxActiveData should be greater than or equal to maxActiveInternetData.
+        EXPECT_GE(radioConfigRsp->phoneCap.maxActiveData,
+                  radioConfigRsp->phoneCap.maxActiveInternetData);
+        // maxActiveData and maxActiveInternetData should be 0 or positive numbers.
+        EXPECT_GE(radioConfigRsp->phoneCap.maxActiveInternetData, 0);
+    }
+}
+
+/*
+ * Test IRadioConfig.getPhoneCapability()
+ */
+TEST_F(RadioConfigHidlTest, setPreferredDataModem) {
+    serial = GetRandomSerialNumber();
+    Return<void> res = radioConfig->getPhoneCapability(serial);
+    ASSERT_OK(res);
+    EXPECT_EQ(std::cv_status::no_timeout, wait());
+    EXPECT_EQ(RadioResponseType::SOLICITED, radioConfigRsp->rspInfo.type);
+    EXPECT_EQ(serial, radioConfigRsp->rspInfo.serial);
+    ALOGI("getPhoneCapability, rspInfo.error = %s\n",
+          toString(radioConfigRsp->rspInfo.error).c_str());
+
+    ASSERT_TRUE(CheckAnyOfErrors(
+            radioConfigRsp->rspInfo.error,
+            {RadioError::NONE, RadioError::RADIO_NOT_AVAILABLE, RadioError::INTERNAL_ERR}));
+
+    if (radioConfigRsp->rspInfo.error != RadioError ::NONE) {
+        return;
+    }
+
+    if (radioConfigRsp->phoneCap.logicalModemList.size() == 0) {
+        return;
+    }
+
+    // We get phoneCapability. send setPreferredDataModem command
+    serial = GetRandomSerialNumber();
+    uint8_t modemId = radioConfigRsp->phoneCap.logicalModemList[0].modemId;
+    res = radioConfig->setPreferredDataModem(serial, modemId);
+
+    ASSERT_OK(res);
+    EXPECT_EQ(std::cv_status::no_timeout, wait());
+    EXPECT_EQ(RadioResponseType::SOLICITED, radioConfigRsp->rspInfo.type);
+    EXPECT_EQ(serial, radioConfigRsp->rspInfo.serial);
+    ALOGI("getModemsConfig, rspInfo.error = %s\n", toString(radioConfigRsp->rspInfo.error).c_str());
+
+    ASSERT_TRUE(CheckAnyOfErrors(
+            radioConfigRsp->rspInfo.error,
+            {RadioError::NONE, RadioError::RADIO_NOT_AVAILABLE, RadioError::INTERNAL_ERR}));
+}
+
+/*
+ * Test IRadioConfig.getPhoneCapability()
+ */
+TEST_F(RadioConfigHidlTest, setPreferredDataModem_invalidArgument) {
+    serial = GetRandomSerialNumber();
+    uint8_t modemId = -1;
+    Return<void> res = radioConfig->setPreferredDataModem(serial, modemId);
+
+    ASSERT_OK(res);
+    EXPECT_EQ(std::cv_status::no_timeout, wait());
+    EXPECT_EQ(RadioResponseType::SOLICITED, radioConfigRsp->rspInfo.type);
+    EXPECT_EQ(serial, radioConfigRsp->rspInfo.serial);
+    ALOGI("getModemsConfig, rspInfo.error = %s\n", toString(radioConfigRsp->rspInfo.error).c_str());
+
+    ASSERT_TRUE(CheckAnyOfErrors(radioConfigRsp->rspInfo.error,
+                                 {RadioError::INVALID_ARGUMENTS, RadioError::RADIO_NOT_AVAILABLE,
+                                  RadioError::INTERNAL_ERR}));
+}
diff --git a/radio/config/1.1/vts/functional/radio_config_hidl_hal_utils.h b/radio/config/1.1/vts/functional/radio_config_hidl_hal_utils.h
index 592555f..d986c9a 100644
--- a/radio/config/1.1/vts/functional/radio_config_hidl_hal_utils.h
+++ b/radio/config/1.1/vts/functional/radio_config_hidl_hal_utils.h
@@ -51,6 +51,7 @@
 
    public:
     RadioResponseInfo rspInfo;
+    PhoneCapability phoneCap;
 
     RadioConfigResponse(RadioConfigHidlTest& parent);
     virtual ~RadioConfigResponse() = default;
diff --git a/radio/config/1.1/vts/functional/radio_config_response.cpp b/radio/config/1.1/vts/functional/radio_config_response.cpp
index 6e41aeb..09ee57f 100644
--- a/radio/config/1.1/vts/functional/radio_config_response.cpp
+++ b/radio/config/1.1/vts/functional/radio_config_response.cpp
@@ -31,7 +31,10 @@
 }
 
 Return<void> RadioConfigResponse::getPhoneCapabilityResponse(
-        const RadioResponseInfo& /* info */, const PhoneCapability& /* phoneCapability */) {
+        const RadioResponseInfo& info, const PhoneCapability& phoneCapability) {
+    rspInfo = info;
+    phoneCap = phoneCapability;
+    parent.notify(info.serial);
     return Void();
 }
 
diff --git a/radio/config/1.2/Android.bp b/radio/config/1.2/Android.bp
index 3e6a425..e69be40 100644
--- a/radio/config/1.2/Android.bp
+++ b/radio/config/1.2/Android.bp
@@ -17,9 +17,6 @@
         "android.hardware.radio@1.0",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "SimSlotStatus",
-    ],
     gen_java: true,
 }
 
diff --git a/renderscript/1.0/Android.bp b/renderscript/1.0/Android.bp
index 79b2ff7..1d7efad 100644
--- a/renderscript/1.0/Android.bp
+++ b/renderscript/1.0/Android.bp
@@ -15,23 +15,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "AllocationCubemapFace",
-        "AllocationMipmapControl",
-        "AllocationUsageType",
-        "ContextFlags",
-        "ContextType",
-        "DataKind",
-        "DataType",
-        "ForEachStrategy",
-        "MessageToClientType",
-        "MetadataSignatureBitval",
-        "SamplerValue",
-        "ScriptCall",
-        "ScriptIntrinsicID",
-        "ThreadPriorities",
-        "YuvFormat",
-    ],
     gen_java: false,
     gen_java_constants: true,
 }
diff --git a/secure_element/1.0/Android.bp b/secure_element/1.0/Android.bp
index e8081df..c6fa6a9 100644
--- a/secure_element/1.0/Android.bp
+++ b/secure_element/1.0/Android.bp
@@ -14,10 +14,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "LogicalChannelResponse",
-        "SecureElementStatus",
-    ],
     gen_java: true,
 }
 
diff --git a/sensors/1.0/Android.bp b/sensors/1.0/Android.bp
index 92c3c1b..3a41f9c 100644
--- a/sensors/1.0/Android.bp
+++ b/sensors/1.0/Android.bp
@@ -13,31 +13,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "AdditionalInfo",
-        "AdditionalInfoType",
-        "DynamicSensorInfo",
-        "Event",
-        "EventPayload",
-        "HeartRate",
-        "MetaData",
-        "MetaDataEventType",
-        "OperationMode",
-        "RateLevel",
-        "Result",
-        "SensorFlagBits",
-        "SensorFlagShift",
-        "SensorInfo",
-        "SensorStatus",
-        "SensorType",
-        "SensorsEventFormatOffset",
-        "SharedMemFormat",
-        "SharedMemInfo",
-        "SharedMemType",
-        "Uncal",
-        "Vec3",
-        "Vec4",
-    ],
     gen_java: false,
     gen_java_constants: true,
 }
diff --git a/soundtrigger/2.0/Android.bp b/soundtrigger/2.0/Android.bp
index 92f031a..b805be8 100644
--- a/soundtrigger/2.0/Android.bp
+++ b/soundtrigger/2.0/Android.bp
@@ -15,12 +15,6 @@
         "android.hardware.audio.common@2.0",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "ConfidenceLevel",
-        "PhraseRecognitionExtra",
-        "RecognitionMode",
-        "SoundModelType",
-    ],
     gen_java: false,
 }
 
diff --git a/tests/bar/1.0/Android.bp b/tests/bar/1.0/Android.bp
index 45c84bc..a1b6b88 100644
--- a/tests/bar/1.0/Android.bp
+++ b/tests/bar/1.0/Android.bp
@@ -15,9 +15,6 @@
         "android.hardware.tests.foo@1.0",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "Def",
-    ],
     gen_java: false,
 }
 
diff --git a/tests/baz/1.0/Android.bp b/tests/baz/1.0/Android.bp
index edf8fe6..618f4f8 100644
--- a/tests/baz/1.0/Android.bp
+++ b/tests/baz/1.0/Android.bp
@@ -13,8 +13,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-    ],
     gen_java: true,
 }
 
diff --git a/tests/extension/light/2.0/Android.bp b/tests/extension/light/2.0/Android.bp
index 58c8392..916af71 100644
--- a/tests/extension/light/2.0/Android.bp
+++ b/tests/extension/light/2.0/Android.bp
@@ -11,11 +11,6 @@
         "android.hardware.light@2.0",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "Brightness",
-        "Default",
-        "LightState",
-    ],
     gen_java: true,
 }
 
diff --git a/tests/foo/1.0/Android.bp b/tests/foo/1.0/Android.bp
index 769de2d..1c3b3c5 100644
--- a/tests/foo/1.0/Android.bp
+++ b/tests/foo/1.0/Android.bp
@@ -14,13 +14,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "Abc",
-        "Def",
-        "EnumIterators",
-        "Outer",
-        "Unrelated",
-    ],
     gen_java: false,
 }
 
diff --git a/tests/trie/1.0/Android.bp b/tests/trie/1.0/Android.bp
index 870a350..0795f66 100644
--- a/tests/trie/1.0/Android.bp
+++ b/tests/trie/1.0/Android.bp
@@ -10,15 +10,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "A",
-        "B",
-        "E1",
-        "E2",
-        "S",
-        "TrieEdge",
-        "TrieNode",
-    ],
     gen_java: false,
 }
 
diff --git a/tetheroffload/control/1.0/Android.bp b/tetheroffload/control/1.0/Android.bp
index 8e3fd27..dc2487b 100644
--- a/tetheroffload/control/1.0/Android.bp
+++ b/tetheroffload/control/1.0/Android.bp
@@ -14,12 +14,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "IPv4AddrPortPair",
-        "NatTimeoutUpdate",
-        "NetworkProtocol",
-        "OffloadCallbackEvent",
-    ],
     gen_java: true,
 }
 
diff --git a/thermal/1.0/Android.bp b/thermal/1.0/Android.bp
index e764e28..8428977 100644
--- a/thermal/1.0/Android.bp
+++ b/thermal/1.0/Android.bp
@@ -13,15 +13,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "CoolingDevice",
-        "CoolingType",
-        "CpuUsage",
-        "Temperature",
-        "TemperatureType",
-        "ThermalStatus",
-        "ThermalStatusCode",
-    ],
     gen_java: true,
     gen_java_constants: true,
 }
diff --git a/tv/cec/1.0/Android.bp b/tv/cec/1.0/Android.bp
index 2aa155e..7626dc0 100644
--- a/tv/cec/1.0/Android.bp
+++ b/tv/cec/1.0/Android.bp
@@ -14,20 +14,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "AbortReason",
-        "CecDeviceType",
-        "CecLogicalAddress",
-        "CecMessage",
-        "CecMessageType",
-        "HdmiPortInfo",
-        "HdmiPortType",
-        "HotplugEvent",
-        "MaxLength",
-        "OptionKey",
-        "Result",
-        "SendMessageResult",
-    ],
     gen_java: true,
 }
 
diff --git a/tv/input/1.0/Android.bp b/tv/input/1.0/Android.bp
index 1bf3930..a6c1959 100644
--- a/tv/input/1.0/Android.bp
+++ b/tv/input/1.0/Android.bp
@@ -15,15 +15,6 @@
         "android.hardware.audio.common@2.0",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "CableConnectionStatus",
-        "Result",
-        "TvInputDeviceInfo",
-        "TvInputEvent",
-        "TvInputEventType",
-        "TvInputType",
-        "TvStreamConfig",
-    ],
     gen_java: false,
     gen_java_constants: true,
 }
diff --git a/update-makefiles.sh b/update-makefiles.sh
index 14c5b01..c58240f 100755
--- a/update-makefiles.sh
+++ b/update-makefiles.sh
@@ -13,9 +13,3 @@
 do_makefiles_update \
   "android.hardware:hardware/interfaces" \
   "android.hidl:system/libhidl/transport"
-
-echo "Updating files at $ANDROID_BUILD_TOP/test/vts-testcase/hal"
-pushd $ANDROID_BUILD_TOP/test/vts-testcase/hal
-./script/update_makefiles.py
-popd
-
diff --git a/usb/1.0/Android.bp b/usb/1.0/Android.bp
index 6676fa5..a00b671 100644
--- a/usb/1.0/Android.bp
+++ b/usb/1.0/Android.bp
@@ -14,15 +14,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "PortDataRole",
-        "PortMode",
-        "PortPowerRole",
-        "PortRole",
-        "PortRoleType",
-        "PortStatus",
-        "Status",
-    ],
     gen_java: true,
     gen_java_constants: true,
 }
diff --git a/usb/1.1/Android.bp b/usb/1.1/Android.bp
index c398f94..fb2cc4e 100644
--- a/usb/1.1/Android.bp
+++ b/usb/1.1/Android.bp
@@ -15,10 +15,6 @@
         "android.hardware.usb@1.0",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "PortMode_1_1",
-        "PortStatus_1_1",
-    ],
     gen_java: true,
     gen_java_constants: true,
 }
diff --git a/usb/gadget/1.0/Android.bp b/usb/gadget/1.0/Android.bp
index f38002f..7ee432b 100644
--- a/usb/gadget/1.0/Android.bp
+++ b/usb/gadget/1.0/Android.bp
@@ -14,10 +14,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "GadgetFunction",
-        "Status",
-    ],
     gen_java: true,
 }
 
diff --git a/vibrator/1.0/Android.bp b/vibrator/1.0/Android.bp
index 6913c88..acc97d4 100644
--- a/vibrator/1.0/Android.bp
+++ b/vibrator/1.0/Android.bp
@@ -13,11 +13,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "Effect",
-        "EffectStrength",
-        "Status",
-    ],
     gen_java: true,
     gen_java_constants: true,
 }
diff --git a/vibrator/1.1/Android.bp b/vibrator/1.1/Android.bp
index 810797b..2055e5a 100644
--- a/vibrator/1.1/Android.bp
+++ b/vibrator/1.1/Android.bp
@@ -14,9 +14,6 @@
         "android.hardware.vibrator@1.0",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "Effect_1_1",
-    ],
     gen_java: true,
     gen_java_constants: true,
 }
diff --git a/vibrator/1.2/Android.bp b/vibrator/1.2/Android.bp
index 88192c1..481adee 100644
--- a/vibrator/1.2/Android.bp
+++ b/vibrator/1.2/Android.bp
@@ -15,9 +15,6 @@
         "android.hardware.vibrator@1.1",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "Effect",
-    ],
     gen_java: true,
 }
 
diff --git a/weaver/1.0/Android.bp b/weaver/1.0/Android.bp
index e088a16..7f93b10 100644
--- a/weaver/1.0/Android.bp
+++ b/weaver/1.0/Android.bp
@@ -13,12 +13,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "WeaverConfig",
-        "WeaverReadResponse",
-        "WeaverReadStatus",
-        "WeaverStatus",
-    ],
     gen_java: true,
 }
 
diff --git a/wifi/1.0/Android.bp b/wifi/1.0/Android.bp
index 096fb6c..c5ee1bb 100644
--- a/wifi/1.0/Android.bp
+++ b/wifi/1.0/Android.bp
@@ -25,90 +25,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "IfaceType",
-        "NanBandIndex",
-        "NanBandSpecificConfig",
-        "NanCapabilities",
-        "NanCipherSuiteType",
-        "NanClusterEventInd",
-        "NanClusterEventType",
-        "NanConfigRequest",
-        "NanDataPathChannelCfg",
-        "NanDataPathConfirmInd",
-        "NanDataPathRequestInd",
-        "NanDataPathSecurityConfig",
-        "NanDataPathSecurityType",
-        "NanDebugConfig",
-        "NanDiscoveryCommonConfig",
-        "NanEnableRequest",
-        "NanFollowupReceivedInd",
-        "NanInitiateDataPathRequest",
-        "NanMatchAlg",
-        "NanMatchInd",
-        "NanParamSizeLimits",
-        "NanPublishRequest",
-        "NanPublishType",
-        "NanRangingIndication",
-        "NanRespondToDataPathIndicationRequest",
-        "NanSrfType",
-        "NanStatusType",
-        "NanSubscribeRequest",
-        "NanSubscribeType",
-        "NanTransmitFollowupRequest",
-        "NanTxType",
-        "RttBw",
-        "RttCapabilities",
-        "RttConfig",
-        "RttLciInformation",
-        "RttLcrInformation",
-        "RttMotionPattern",
-        "RttPeerType",
-        "RttPreamble",
-        "RttResponder",
-        "RttResult",
-        "RttStatus",
-        "RttType",
-        "StaApfPacketFilterCapabilities",
-        "StaBackgroundScanBucketEventReportSchemeMask",
-        "StaBackgroundScanBucketParameters",
-        "StaBackgroundScanCapabilities",
-        "StaBackgroundScanParameters",
-        "StaLinkLayerIfacePacketStats",
-        "StaLinkLayerIfaceStats",
-        "StaLinkLayerRadioStats",
-        "StaLinkLayerStats",
-        "StaRoamingCapabilities",
-        "StaRoamingConfig",
-        "StaRoamingState",
-        "StaScanData",
-        "StaScanDataFlagMask",
-        "StaScanLimits",
-        "StaScanResult",
-        "WifiBand",
-        "WifiChannelInfo",
-        "WifiChannelWidthInMhz",
-        "WifiDebugHostWakeReasonRxIcmpPacketDetails",
-        "WifiDebugHostWakeReasonRxMulticastPacketDetails",
-        "WifiDebugHostWakeReasonRxPacketDetails",
-        "WifiDebugHostWakeReasonStats",
-        "WifiDebugPacketFateFrameInfo",
-        "WifiDebugPacketFateFrameType",
-        "WifiDebugRingBufferFlags",
-        "WifiDebugRingBufferStatus",
-        "WifiDebugRingBufferVerboseLevel",
-        "WifiDebugRxPacketFate",
-        "WifiDebugRxPacketFateReport",
-        "WifiDebugTxPacketFate",
-        "WifiDebugTxPacketFateReport",
-        "WifiInformationElement",
-        "WifiNanStatus",
-        "WifiRateInfo",
-        "WifiRateNss",
-        "WifiRatePreamble",
-        "WifiStatus",
-        "WifiStatusCode",
-    ],
     gen_java: true,
     gen_java_constants: true,
 }
diff --git a/wifi/1.2/Android.bp b/wifi/1.2/Android.bp
index c144f22..1863eaf 100644
--- a/wifi/1.2/Android.bp
+++ b/wifi/1.2/Android.bp
@@ -20,12 +20,6 @@
         "android.hardware.wifi@1.1",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "NanConfigRequestSupplemental",
-        "NanDataPathChannelInfo",
-        "NanDataPathConfirmInd",
-        "NanDataPathScheduleUpdateInd",
-    ],
     gen_java: true,
 }
 
diff --git a/wifi/1.2/default/Android.mk b/wifi/1.2/default/Android.mk
index 3c26383..3919690 100644
--- a/wifi/1.2/default/Android.mk
+++ b/wifi/1.2/default/Android.mk
@@ -30,8 +30,6 @@
 ifdef WIFI_HIDL_FEATURE_DISABLE_AP
 LOCAL_CPPFLAGS += -DWIFI_HIDL_FEATURE_DISABLE_AP
 endif
-# Allow implicit fallthroughs in wifi_legacy_hal.cpp until they are fixed.
-LOCAL_CFLAGS += -Wno-error=implicit-fallthrough
 LOCAL_SRC_FILES := \
     hidl_struct_util.cpp \
     hidl_sync_util.cpp \
diff --git a/wifi/hostapd/1.0/Android.bp b/wifi/hostapd/1.0/Android.bp
index a17e153..9ee976e 100644
--- a/wifi/hostapd/1.0/Android.bp
+++ b/wifi/hostapd/1.0/Android.bp
@@ -14,10 +14,6 @@
         "android.hardware.wifi.supplicant@1.0",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "HostapdStatus",
-        "HostapdStatusCode",
-    ],
     gen_java: true,
 }
 
diff --git a/wifi/offload/1.0/Android.bp b/wifi/offload/1.0/Android.bp
index c6c0e7a..1a9ae73 100644
--- a/wifi/offload/1.0/Android.bp
+++ b/wifi/offload/1.0/Android.bp
@@ -14,20 +14,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "Capability",
-        "LogRecord",
-        "NetworkInfo",
-        "OffloadStatus",
-        "OffloadStatusCode",
-        "RecordName",
-        "ScanFilter",
-        "ScanParam",
-        "ScanRecord",
-        "ScanResult",
-        "ScanStats",
-        "SecurityMode",
-    ],
     gen_java: false,
 }
 
diff --git a/wifi/supplicant/1.0/Android.bp b/wifi/supplicant/1.0/Android.bp
index fc7ce55..c99706d 100644
--- a/wifi/supplicant/1.0/Android.bp
+++ b/wifi/supplicant/1.0/Android.bp
@@ -24,13 +24,6 @@
     interfaces: [
         "android.hidl.base@1.0",
     ],
-    types: [
-        "IfaceType",
-        "P2pGroupCapabilityMask",
-        "SupplicantStatus",
-        "SupplicantStatusCode",
-        "WpsConfigMethods",
-    ],
     gen_java: true,
 }